결제 전환 목표 아키텍처 정의 #1
4 changed files with 74 additions and 0 deletions
3
.forge/SPRING-ARC-QUALITY-1783831207-attempt-1.md
Normal file
3
.forge/SPRING-ARC-QUALITY-1783831207-attempt-1.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# SPRING-ARC-QUALITY-1783831207-attempt-1
|
||||
|
||||
Forge 이슈 작업 브랜치 `forge/SPRING-ARC-QUALITY-1783831207-attempt-1`.
|
||||
24
docs/architecture/adr-payment-boundary.md
Normal file
24
docs/architecture/adr-payment-boundary.md
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# ADR: 결제 경계 정의
|
||||
|
||||
## Context
|
||||
이 문서에서는 결제 시스템의 아키텍처 경계를 정의합니다. 결제 처리는 시스템의 핵심 기능 중 하나이며, 다른 서비스들과의 통합이 필요합니다. 또한 보안과 데이터 전송의 무결성을 보장하는 것이 필수적입니다.
|
||||
|
||||
## Decision
|
||||
결제 시스템은 다음의 세 가지 주요 구성 요소로 나뉘어집니다:
|
||||
1. **결제 API**: 외부 결제 게이트웨이와의 연동을 처리합니다.
|
||||
2. **사용자 서비스**: 결제 정보와 사용자 관련 데이터를 관리합니다.
|
||||
3. **통계 서비스**: 결제 관련 데이터 분석 및 리포팅을 담당합니다.
|
||||
|
||||
이들 서비스는 마이크로서비스 아키텍처를 기반으로 하며, 각 서비스 간의 의존성을 최소화합니다. 통신은 REST API를 통해 이루어지며, 필요 시 메시지 큐를 활용합니다.
|
||||
|
||||
## Alternatives
|
||||
1. **모놀리식 아키텍처**: 모든 결제 기능을 단일 애플리케이션으로 구축.
|
||||
- **장점**: 단순한 배포 및 관리.
|
||||
- **단점**: 확장성이 떨어지고, 하나의 서비스 장애가 전체 시스템에 영향을 미칠 수 있음.
|
||||
|
||||
2. **하이브리드 아키텍처**: 결제 서비스의 일부를 별도 서비스로 분리하되, 나머지는 모놀리식으로 유지.
|
||||
- **장점**: 서비스의 독립적 확장 가능성.
|
||||
- **단점**: 서비스 간 의존성 문제가 발생할 수 있음.
|
||||
|
||||
## Consequences
|
||||
선택한 마이크로서비스 아키텍처는 확장성과 유지보수성을 보장할 수 있습니다. 그러나 초기 구현의 복잡성이 증가하며, 서비스 간의 데이터 일관성을 유지하기 위한 추가적인 노력이 필요합니다. 각 서비스는 독립적으로 배포가 가능하므로 더 빠른 피처 릴리즈가 가능합니다. 또한, 결제 처리를 별도로 분리함으로써 보안 요구사항을 더 잘 충족할 수 있습니다.
|
||||
9
docs/architecture/package-map.md
Normal file
9
docs/architecture/package-map.md
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
# Package Map
|
||||
|
||||
| Package | Responsibility | Forbidden Dependencies |
|
||||
|---------------|-----------------------------------------------|-------------------------|
|
||||
| controller | 사용자 요청을 받고 응답을 생성 | service, repository, domain |
|
||||
| service | 비즈니스 로직을 처리 | controller, repository |
|
||||
| repository | 데이터 저장 및 조회 | service, controller |
|
||||
| domain | 도메인 모델 및 비즈니스 규칙 정의 | controller, service |
|
||||
| integration | 외부 결제 게이트웨이와의 통신 | repository, domain |
|
||||
38
docs/architecture/transaction-sequence.md
Normal file
38
docs/architecture/transaction-sequence.md
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
```mermaid
|
||||
sequenceDiagram
|
||||
participant User
|
||||
participant Controller
|
||||
participant Service
|
||||
participant Gateway
|
||||
participant Database
|
||||
|
||||
User->>Controller: 결제 요청
|
||||
Controller->>Service: 결제 처리 요청
|
||||
Service->>Gateway: 결제 요청 전달
|
||||
Gateway-->>Service: 결제 성공
|
||||
Service->>Database: 결제 정보 저장
|
||||
Database-->>Service: 저장 완료
|
||||
Service-->>Controller: 결제 성공 응답
|
||||
Controller-->>User: 결제 성공 메시지
|
||||
|
||||
alt External Failure
|
||||
Service->>Gateway: 결제 요청 전달
|
||||
Gateway-->>Service: 결제 실패
|
||||
Service-->>Controller: 결제 실패 응답
|
||||
Controller-->>User: 결제 실패 메시지
|
||||
end
|
||||
|
||||
alt DB Failure
|
||||
Service->>Gateway: 결제 요청 전달
|
||||
Gateway-->>Service: 결제 성공
|
||||
Service->>Database: 결제 정보 저장
|
||||
Database-->>Service: 저장 실패
|
||||
Service-->>Controller: 결제 처리 실패 응답
|
||||
Controller-->>User: 결제 처리 실패 메시지
|
||||
end
|
||||
|
||||
Service->>Database: Transaction Commit
|
||||
note right of Database: 저장 완료
|
||||
Service->>Database: Transaction Rollback
|
||||
note right of Database: 오류 발생 시 롤백
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue