Compare commits
4 commits
main
...
forge/SPRI
| Author | SHA1 | Date | |
|---|---|---|---|
| 9f634a5408 | |||
| bc0f14c473 | |||
| 8878ced2cb | |||
| d96bbc8899 |
4 changed files with 53 additions and 0 deletions
3
.forge/SPRING-ARC-VERIFIED-1783826844-attempt-2.md
Normal file
3
.forge/SPRING-ARC-VERIFIED-1783826844-attempt-2.md
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
# SPRING-ARC-VERIFIED-1783826844-attempt-2
|
||||||
|
|
||||||
|
Forge 이슈 작업 브랜치 `forge/SPRING-ARC-VERIFIED-1783826844-attempt-2`.
|
||||||
14
docs/architecture/adr-payment-boundary.md
Normal file
14
docs/architecture/adr-payment-boundary.md
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
# 결제 전환 목표 아키텍처 정의
|
||||||
|
|
||||||
|
## Context
|
||||||
|
결제 처리 시스템은 다양한 결제 수단과의 통합을 요구하며, 도메인 객체를 통해 결제 업무를 표준화하고 통제할 수 있어야 한다. 시스템 내부에서 외부 결제 게이트웨이와의 통신을 추상화하기 위해 포트 인터페이스를 사용한다.
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
결제 처리의 성공과 실패를 명확하게 정의하고, 특정 외부와의 상호작용을 가진 경우에만 결제 작업을 수행하도록 의사 결정을 내렸다. 외부 결제 게이트웨이는 도메인에서 직접 참조되기보다는 포트 인터페이스로 접근한다.
|
||||||
|
|
||||||
|
## Alternatives
|
||||||
|
1. **직접 참조**: 도메인이 외부 시스템을 직접 호출하는 방식 (회피됨)
|
||||||
|
2. **포트-어댑터 패턴**: 도메인에서 포트를 사용하고, 외부 시스템과의 통신을 어댑터가 처리 (선택됨)
|
||||||
|
|
||||||
|
## Consequences
|
||||||
|
이 아키텍처 접근 방식은 결제 처리 시스템을 유연하게 만들어 주며, 외부 결제 시스템의 변경에 대한 내성을 제공한다. 그러나 초기 구현 시 추가적인 설계와 구현이 요구된다.
|
||||||
7
docs/architecture/package-map.md
Normal file
7
docs/architecture/package-map.md
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
| 패키지 | 책임 | 금지 의존성 |
|
||||||
|
|------------|-----------------------------------------------|----------------
|
||||||
|
| controller | 사용자 요청을 처리하고 응답을 반환 | domain에 직접 의존하지 않음
|
||||||
|
| service | 비즈니스 로직을 수행하고, controller와 repository를 연결 | 외부 결제 gateway에 직접 의존하지 않음 |
|
||||||
|
| repository | 데이터베이스와의 상호작용을 관리 | service에 의존하지 않음
|
||||||
|
| domain | 도메인 객체와 그 관련 비즈니스 규칙을 정의 | 기타 패키지에 의존하지 않음
|
||||||
|
| integration | 외부 시스템과의 통합을 처리 | business logic에 의존하지 않음
|
||||||
29
docs/architecture/transaction-sequence.md
Normal file
29
docs/architecture/transaction-sequence.md
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
sequenceDiagram
|
||||||
|
participant C as Controller
|
||||||
|
participant S as Service
|
||||||
|
participant R as Repository
|
||||||
|
participant DB as Database
|
||||||
|
participant E as External Payment Gateway
|
||||||
|
|
||||||
|
C->>S: 결제 요청
|
||||||
|
S->>R: 결제 정보 요청
|
||||||
|
R->>DB: 결제 정보 저장
|
||||||
|
DB-->>R: 저장 성공
|
||||||
|
S->>E: 결제 진행
|
||||||
|
E-->>S: 결제 성공
|
||||||
|
S->>C: 결제 성공 응답
|
||||||
|
|
||||||
|
note over C: 외부 실패와 같은 경우
|
||||||
|
S->>E: 결제 진행
|
||||||
|
E-->>S: 결제 실패
|
||||||
|
S->>R: 데이터 롤백
|
||||||
|
R->>DB: 롤백 처리
|
||||||
|
DB-->>R: 롤백 성공
|
||||||
|
S->>C: 결제 실패 응답
|
||||||
|
|
||||||
|
note over C: DB 실패의 경우
|
||||||
|
S->>R: 결제 정보 요청
|
||||||
|
R->>DB: 결제 정보 저장
|
||||||
|
DB-->>R: 저장 실패
|
||||||
|
R-->>S: 에러 응답
|
||||||
|
S->>C: 결제 실패 응답
|
||||||
Loading…
Add table
Add a link
Reference in a new issue