diff --git a/.forge/SPRING-ARC-VERIFIED-1783826844-attempt-2.md b/.forge/SPRING-ARC-VERIFIED-1783826844-attempt-2.md new file mode 100644 index 0000000..31d4fcb --- /dev/null +++ b/.forge/SPRING-ARC-VERIFIED-1783826844-attempt-2.md @@ -0,0 +1,3 @@ +# SPRING-ARC-VERIFIED-1783826844-attempt-2 + +Forge 이슈 작업 브랜치 `forge/SPRING-ARC-VERIFIED-1783826844-attempt-2`. diff --git a/docs/architecture/adr-payment-boundary.md b/docs/architecture/adr-payment-boundary.md new file mode 100644 index 0000000..b4b2730 --- /dev/null +++ b/docs/architecture/adr-payment-boundary.md @@ -0,0 +1,14 @@ +# 결제 전환 목표 아키텍처 정의 + +## Context +결제 처리 시스템은 다양한 결제 수단과의 통합을 요구하며, 도메인 객체를 통해 결제 업무를 표준화하고 통제할 수 있어야 한다. 시스템 내부에서 외부 결제 게이트웨이와의 통신을 추상화하기 위해 포트 인터페이스를 사용한다. + +## Decision +결제 처리의 성공과 실패를 명확하게 정의하고, 특정 외부와의 상호작용을 가진 경우에만 결제 작업을 수행하도록 의사 결정을 내렸다. 외부 결제 게이트웨이는 도메인에서 직접 참조되기보다는 포트 인터페이스로 접근한다. + +## Alternatives +1. **직접 참조**: 도메인이 외부 시스템을 직접 호출하는 방식 (회피됨) +2. **포트-어댑터 패턴**: 도메인에서 포트를 사용하고, 외부 시스템과의 통신을 어댑터가 처리 (선택됨) + +## Consequences +이 아키텍처 접근 방식은 결제 처리 시스템을 유연하게 만들어 주며, 외부 결제 시스템의 변경에 대한 내성을 제공한다. 그러나 초기 구현 시 추가적인 설계와 구현이 요구된다. diff --git a/docs/architecture/package-map.md b/docs/architecture/package-map.md new file mode 100644 index 0000000..fe6f101 --- /dev/null +++ b/docs/architecture/package-map.md @@ -0,0 +1,7 @@ +| 패키지 | 책임 | 금지 의존성 | +|------------|-----------------------------------------------|---------------- +| controller | 사용자 요청을 처리하고 응답을 반환 | domain에 직접 의존하지 않음 +| service | 비즈니스 로직을 수행하고, controller와 repository를 연결 | 외부 결제 gateway에 직접 의존하지 않음 | +| repository | 데이터베이스와의 상호작용을 관리 | service에 의존하지 않음 +| domain | 도메인 객체와 그 관련 비즈니스 규칙을 정의 | 기타 패키지에 의존하지 않음 +| integration | 외부 시스템과의 통합을 처리 | business logic에 의존하지 않음 diff --git a/docs/architecture/transaction-sequence.md b/docs/architecture/transaction-sequence.md new file mode 100644 index 0000000..1b564ec --- /dev/null +++ b/docs/architecture/transaction-sequence.md @@ -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: 결제 실패 응답