Compare commits

..

2 commits

4 changed files with 19 additions and 12 deletions

View file

@ -0,0 +1,3 @@
# SPRING-ARC-RUN-1783834407-attempt-2-run-67fdd17a469a
Forge 이슈 작업 브랜치 `forge/SPRING-ARC-RUN-1783834407-attempt-2-run-67fdd17a469a`.

View file

@ -1,3 +0,0 @@
# iss-e2325889b406-attempt-1-run-0207d2e91028
Forge 이슈 작업 브랜치 `forge/iss-e2325889b406-attempt-1-run-0207d2e91028`.

View file

@ -0,0 +1,16 @@
# ADR: Payment Boundary
## Context
Payment processing is a critical aspect of our application that interacts with external payment gateways. To ensure a clean separation of concerns and maintainability, we define a boundary for payment-related functionalities. Our architecture requires that the domain does not directly reference external systems or adapters, instead, it should interact with these systems through defined interfaces, allowing for better testability and flexibility.
## Decision
We will implement a port-driven architecture where the external payment gateway is accessed through a defined port interface. The domain layer will utilize these interfaces to initiate payment processes, while the actual implementation of these interfaces will reside in the adapter layer. This separation allows us to swap out payment providers with minimal impact on the domain's business logic.
## Alternatives
1. **Direct Integration:** Directly integrate payment gateway APIs within the domain.
- *Consequences:* This approach tightly couples the domain to a specific gateway, making it difficult to switch providers and complicating testing.
2. **Service Layer Approach:** Create a service layer that manages communication with payment gateways.
- *Consequences:* This adds a layer of complexity and still does not fully decouple the domain from external dependencies.
## Consequences
Adopting this architecture preserves the integrity of our domain model and enhances our capability to adapt to changing payment technologies. It results in a need for careful interface design but ultimately leads to better maintainability and flexibility in our application.

View file

@ -1,9 +0,0 @@
# Package Map
| Package | Responsibility | Forbidden Dependencies |
|----------------|---------------------------------------------------------|-----------------------|
| controller | Handle incoming requests, validate input | service |
| service | Business logic, coordination between layers | repository |
| repository | Data access and persistence | domain |
| domain | Core business models and logic | integration |
| integration | Interact with external systems, including payment gateways | domain |