결제 전환 목표 아키텍처 정의 #1
4 changed files with 60 additions and 0 deletions
3
.forge/SPRING-ARC-SCHEMA-1783830385-attempt-1.md
Normal file
3
.forge/SPRING-ARC-SCHEMA-1783830385-attempt-1.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# SPRING-ARC-SCHEMA-1783830385-attempt-1
|
||||||
|
|
||||||
|
Forge 이슈 작업 브랜치 `forge/SPRING-ARC-SCHEMA-1783830385-attempt-1`.
|
||||||
21
docs/architecture/adr-payment-boundary.md
Normal file
21
docs/architecture/adr-payment-boundary.md
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
# Payment Boundary Architectural Decision Record (ADR)
|
||||||
|
|
||||||
|
## Context
|
||||||
|
이 문서에서는 결제 관련 시스템의 경계를 정의합니다. 결제 시스템은 다양한 외부 결제 게이트웨이와 통신하여 트랜잭션을 처리하며, 이와 관련된 도메인 모델과 서비스를 제공합니다.
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
결제 시스템은 포트-어댑터 패턴(또는 헥소고날 아키텍처)을 기반으로 하여 외부 결제 게이트웨이와의 의존성을 최소화합니다. 도메인 계층은 직접적으로 외부 결제 게이트웨이에 의존하지 않고, 인터페이스를 통해 이들에 접근합니다.
|
||||||
|
|
||||||
|
## Alternatives
|
||||||
|
1. **직접 의존성**
|
||||||
|
- 도메인 모델이 외부 결제 게이트웨이 API를 직접 호출.
|
||||||
|
- 이 방식은 의존성이 강해지며, 결제를 처리하는 로직의 변경이 필요할 때마다 도메인 모델의 변경이 필요하게 됩니다.
|
||||||
|
|
||||||
|
2. **서비스 레이어 사용**
|
||||||
|
- 서비스 계층이 외부 결제 게이트웨이와의 통신을 담당.
|
||||||
|
- 의존성을 줄이기는 하였으나, 도메인 계층과 서비스 계층 간의 서비스 호출이 필요하여 복잡성이 증가할 수 있습니다.
|
||||||
|
|
||||||
|
## Consequences
|
||||||
|
- **긍정적인 결과**: 도메인 모델의 변경 없이 결제 게이트웨이를 교체할 수 있어 확장성이 증가합니다.
|
||||||
|
- **부정적인 결과**: 인터페이스의 변경이 발생할 경우, 해당 인터페이스를 구현한 어댑터에 대한 유지보수가 필요합니다.
|
||||||
|
|
||||||
7
docs/architecture/package-map.md
Normal file
7
docs/architecture/package-map.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
| 패키지 | 책임 | 금지 의존성 |
|
||||||
|
|--------------|--------------------------------------------|--------------------------|
|
||||||
|
| controller | 사용자 요청을 처리하고 응답을 반환 | service, repository |
|
||||||
|
| service | 비즈니스 로직을 처리 | repository |
|
||||||
|
| repository | 데이터베이스와의 상호작용 | domain |
|
||||||
|
| domain | 도메인 모델과 비즈니스 규칙을 정의 | integration |
|
||||||
|
| integration | 외부 시스템과의 통합을 처리 | domain |
|
||||||
29
docs/architecture/transaction-sequence.md
Normal file
29
docs/architecture/transaction-sequence.md
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
```mermaid
|
||||||
|
sequenceDiagram
|
||||||
|
participant User
|
||||||
|
participant Controller
|
||||||
|
participant Service
|
||||||
|
participant Repository
|
||||||
|
participant ExternalGateway
|
||||||
|
|
||||||
|
User->>Controller: 결제 요청
|
||||||
|
Controller->>Service: 결제 처리 요청
|
||||||
|
Service->>Repository: 결제 정보 저장
|
||||||
|
alt 정상 흐름
|
||||||
|
Repository-->>Service: 저장 성공
|
||||||
|
Service->>ExternalGateway: 결제 요청
|
||||||
|
ExternalGateway-->>Service: 결제 성공
|
||||||
|
Service-->>Controller: 성공 응답
|
||||||
|
Controller-->>User: 결제 완료
|
||||||
|
else 외부 실패
|
||||||
|
Repository-->>Service: 저장 성공
|
||||||
|
Service->>ExternalGateway: 결제 요청
|
||||||
|
ExternalGateway-->>Service: 결제 실패
|
||||||
|
Service-->>Controller: 실패 응답
|
||||||
|
Controller-->>User: 결제 실패
|
||||||
|
else DB 실패
|
||||||
|
Repository-->>Service: 저장 실패
|
||||||
|
Service-->>Controller: 실패 응답
|
||||||
|
Controller-->>User: 결제 실패
|
||||||
|
end
|
||||||
|
```
|
||||||
Loading…
Add table
Add a link
Reference in a new issue