Compare commits
2 commits
main
...
forge/SPRI
| Author | SHA1 | Date | |
|---|---|---|---|
| 7d81cb12ce | |||
| 9fbda98ab1 |
5 changed files with 8 additions and 59 deletions
|
|
@ -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`.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
# iss-1b3092823a38-attempt-1
|
||||
|
||||
Forge 이슈 작업 브랜치 `forge/iss-1b3092823a38-attempt-1`.
|
||||
|
|
@ -1,19 +1,14 @@
|
|||
# 결제 경계 아키텍처 결정 기록 (ADR)
|
||||
# 결제 경계 ADR (Architectural Decision Record)
|
||||
|
||||
## Context
|
||||
이 문서는 결제 시스템의 경계를 정의하고, 외부 결제 게이트웨이와의 상호작용을 관리하기 위한 아키텍처 결정을 기록합니다.
|
||||
이 문서는 결제 시스템의 아키텍처 경계를 정의하며, 결제 전환 목표에 대해 명확하게 이해하기 위해 작성되었습니다. 결제 로직은 외부 결제 게이트웨이와 상호작용하며, 이러한 상호작용은 포트 인터페이스를 통해 이루어져야 합니다. 도메인 계층은 직접 외부 게이트웨이 어댑터를 참조하지 않습니다.
|
||||
|
||||
## Decision
|
||||
결제 도메인에서 외부 결제 게이트웨이를 직접 참조하지 않고, 포트 인터페이스를 통해 의존성을 관리하기로 결정했습니다. 이를 통해 결제 시스템의 유연성과 테스트 용이성을 높일 수 있습니다.
|
||||
결제 처리는 애플리케이션의 도메인 계층에서 관리되며, 외부 결제 게이트웨이는 포트 인터페이스를 통해 접근합니다. 이는 결제 시스템의 모듈화를 보장하며, 변경 및 유지보수를 용이하게 합니다. решение는 외부 서비스 의존성을 관리하고, 테스트 가능성을 높입니다.
|
||||
|
||||
## Alternatives
|
||||
1. 외부 결제 게이트웨이를 직접 참조하는 방법
|
||||
- 장점: 구현이 간단함
|
||||
- 단점: 결제 시스템의 유연성이 떨어지고, 테스트가 어려워짐
|
||||
|
||||
2. 포트 인터페이스를 통한 간접 참조
|
||||
- 장점: 유연성 증가, 테스트 용이
|
||||
- 단점: 초기 구현 복잡성 증가
|
||||
1. **직접 의존성**: 도메인 계층에서 외부 결제 게이트웨이에 직접 접근하는 방법. 이 방법은 즉각적인 통합을 가능하게 하지만, 결제 게이트웨이가 변경될 경우 도메인 계층도 수정해야 하는 단점이 있습니다.
|
||||
2. **이벤트 기반 접근**: 결제 완료 후 이벤트를 발행하고 처리하는 방법. 이 방법은 비동기적이지만, 복잡성을 증가시킵니다.
|
||||
|
||||
## Consequences
|
||||
이 결정으로 인해 결제 시스템은 외부 결제 게이트웨이에 대한 의존성을 줄이고, 다양한 결제 제공자와의 통합이 용이해집니다. 또한, 테스트 환경에서 결제 시스템을 독립적으로 검증할 수 있는 기반이 마련됩니다.
|
||||
이 결정을 따름으로써, 결제 시스템은 변경에 대한 저항성을 가지며, 다양한 결제 방식의 도입이 쉬워집니다. 하지만, 초기 설정이 다소 복잡할 수 있습니다.
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
# 패키지 맵
|
||||
|
||||
| 패키지 | 책임 | 금지 의존성 |
|
||||
|--------------|----------------------------------------------|--------------------------|
|
||||
| controller | 사용자 요청을 처리하고 응답을 반환함 | domain -> integration |
|
||||
| service | 비즈니스 로직을 처리하고 트랜잭션을 관리함 | repository -> integration |
|
||||
| repository | 데이터 저장소와의 상호작용을 담당함 | service -> controller |
|
||||
| domain | 도메인 모델과 비즈니스 규칙을 정의함 | integration -> domain |
|
||||
| integration | 외부 시스템과의 통합을 담당함 | domain -> service |
|
||||
|
|
@ -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
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue