Compare commits

..

2 commits

5 changed files with 8 additions and 59 deletions

View file

@ -1,3 +1,3 @@
# SPRING-ARC-DONE-1783829491-attempt-1 # SPRING-ARC-DONE-1783829491-attempt-2
Forge 이슈 작업 브랜치 `forge/SPRING-ARC-DONE-1783829491-attempt-1`. Forge 이슈 작업 브랜치 `forge/SPRING-ARC-DONE-1783829491-attempt-2`.

View file

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

View file

@ -1,19 +1,14 @@
# 결제 경계 아키텍처 결정 기록 (ADR) # 결제 경계 ADR (Architectural Decision Record)
## Context ## Context
이 문서는 결제 시스템의 경계를 정의하고, 외부 결제 게이트웨이와의 상호작용을 관리하기 위한 아키텍처 결정을 기록합니다. 이 문서는 결제 시스템의 아키텍처 경계를 정의하며, 결제 전환 목표에 대해 명확하게 이해하기 위해 작성되었습니다. 결제 로직은 외부 결제 게이트웨이와 상호작용하며, 이러한 상호작용은 포트 인터페이스를 통해 이루어져야 합니다. 도메인 계층은 직접 외부 게이트웨이 어댑터를 참조하지 않습니다.
## Decision ## Decision
결제 도메인에서 외부 결제 게이트웨이를 직접 참조하지 않고, 포트 인터페이스를 통해 의존성을 관리하기로 결정했습니다. 이를 통해 결제 시스템의 유연성과 테스트 용이성을 높일 수 있습니다. 결제 처리는 애플리케이션의 도메인 계층에서 관리되며, 외부 결제 게이트웨이는 포트 인터페이스를 통해 접근합니다. 이는 결제 시스템의 모듈화를 보장하며, 변경 및 유지보수를 용이하게 합니다. решение는 외부 서비스 의존성을 관리하고, 테스트 가능성을 높입니다.
## Alternatives ## Alternatives
1. 외부 결제 게이트웨이를 직접 참조하는 방법 1. **직접 의존성**: 도메인 계층에서 외부 결제 게이트웨이에 직접 접근하는 방법. 이 방법은 즉각적인 통합을 가능하게 하지만, 결제 게이트웨이가 변경될 경우 도메인 계층도 수정해야 하는 단점이 있습니다.
- 장점: 구현이 간단함 2. **이벤트 기반 접근**: 결제 완료 후 이벤트를 발행하고 처리하는 방법. 이 방법은 비동기적이지만, 복잡성을 증가시킵니다.
- 단점: 결제 시스템의 유연성이 떨어지고, 테스트가 어려워짐
2. 포트 인터페이스를 통한 간접 참조
- 장점: 유연성 증가, 테스트 용이
- 단점: 초기 구현 복잡성 증가
## Consequences ## Consequences
이 결정으로 인해 결제 시스템은 외부 결제 게이트웨이에 대한 의존성을 줄이고, 다양한 결제 제공자와의 통합이 용이해집니다. 또한, 테스트 환경에서 결제 시스템을 독립적으로 검증할 수 있는 기반이 마련됩니다. 이 결정을 따름으로써, 결제 시스템은 변경에 대한 저항성을 가지며, 다양한 결제 방식의 도입이 쉬워집니다. 하지만, 초기 설정이 다소 복잡할 수 있습니다.

View file

@ -1,9 +0,0 @@
# 패키지 맵
| 패키지 | 책임 | 금지 의존성 |
|--------------|----------------------------------------------|--------------------------|
| controller | 사용자 요청을 처리하고 응답을 반환함 | domain -> integration |
| service | 비즈니스 로직을 처리하고 트랜잭션을 관리함 | repository -> integration |
| repository | 데이터 저장소와의 상호작용을 담당함 | service -> controller |
| domain | 도메인 모델과 비즈니스 규칙을 정의함 | integration -> domain |
| integration | 외부 시스템과의 통합을 담당함 | domain -> service |

View file

@ -1,34 +0,0 @@
sequenceDiagram
participant User
participant Payment Service
participant DB
participant External Gateway
User->>Payment Service: Initiate Payment
activate Payment Service
Payment Service->>DB: Begin Transaction
activate DB
DB-->>Payment Service: Transaction Started
deactivate DB
Payment Service->>External Gateway: Request Payment Authorization
activate External Gateway
alt Successful Authorization
External Gateway-->>Payment Service: Authorization Success
Payment Service->>DB: Commit Transaction
activate DB
DB-->>Payment Service: Transaction Committed
deactivate DB
Payment Service-->>User: Payment Successful
else Authorization Failed
External Gateway-->>Payment Service: Authorization Failure
Payment Service->>DB: Rollback Transaction
activate DB
DB-->>Payment Service: Transaction Rolled Back
deactivate DB
Payment Service-->>User: Payment Failed
end
autonumber