Compare commits

..

No commits in common. "forge/SPRING-ARC-SPLIT-1783827796-attempt-5" and "main" have entirely different histories.

4 changed files with 0 additions and 71 deletions

View file

@ -1,3 +0,0 @@
# SPRING-ARC-SPLIT-1783827796-attempt-5
Forge 이슈 작업 브랜치 `forge/SPRING-ARC-SPLIT-1783827796-attempt-5`.

View file

@ -1,20 +0,0 @@
# Architectural Decision Record for Payment Boundary
## Context
In order to ensure the integrity and separation of concerns within the payment processing system, we need to define firm boundaries between various components: Controller, Service, Repository, Domain, and Integration. This helps in minimizing unintended dependencies that may arise during development.
## Decision
The payment boundary will be strictly defined such that:
- Controllers interact only with Services.
- Services interact only with Repositories and Domains (no direct interaction between Services and Controllers).
- Repositories handle data access and business logic is encapsulated within Services.
- Integration with external systems is managed separately and will not cross into the Service layer.
## Alternatives
1. Allow Services to directly interact with Repositories for data retrieval.
**Consequences:** Increases coupling and can lead to issues with data integrity and business logic being bypassed.
2. Utilize an Event-Driven Architecture for communications between Services and Integrations.
**Consequences:** Increased complexity and potential performance hits.
## Consequences
By setting these boundaries, we are ensuring that changes in one component do not inadvertently affect others, thus maintaining a clean architecture that adheres to SOLID principles. Scalability and maintainability of the system are expected to improve as team members can work more independently without overlapping concerns.

View file

@ -1,9 +0,0 @@
# Package Responsibility and Forbidden Dependencies
| Package | Responsibility | Forbidden Dependencies |
|---------------|-------------------------------------------------------|-------------------------------|
| Controller | Handles incoming requests and responses | Service -> Repository |
| Service | Contains business logic and service level operations | Repository -> Service |
| Repository | Manages data persistence and retrieval | Controller -> Repository |
| Domain | Defines domain model and logic | Not applicable |
| Integration | Interfaces with external services | Service -> Integration |

View file

@ -1,39 +0,0 @@
```mermaid
sequenceDiagram
participant Controller
participant Service
participant Repository
participant Domain
participant Integration
Controller->>Service: processPayment()
Service->>Repository: savePayment()
Repository-->>Service: paymentSaved
Service-->>Controller: paymentProcessed
alt External API call
Service->>Integration: sendPaymentRequest()
Integration-->>Service: paymentResponse
end
opt Within DB transaction
Service->>Repository: beginTransaction()
Repository-->>Service: transactionStarted
Service->>Repository: commitTransaction()
end
Note over Service: Success (commit)
opt External Failure
Service->>Integration: sendPaymentRequest()
Integration-->>Service: paymentFailure
Service->>Repository: rollbackTransaction()
Repository-->>Service: transactionRolledBack
end
opt DB Failure
Service->>Repository: throwException()
Repository-->>Service: exceptionOccurred
Service->>Repository: rollbackTransaction()
Repository-->>Service: transactionRolledBack
end
```