diff --git a/docs/architecture/transaction-sequence.md b/docs/architecture/transaction-sequence.md new file mode 100644 index 0000000..30625d6 --- /dev/null +++ b/docs/architecture/transaction-sequence.md @@ -0,0 +1,40 @@ +```mermaid +sequenceDiagram + participant User as 유저 + participant PaymentService as 결제 서비스 + participant PaymentGateway as 결제 게이트웨이 + participant Database as 데이터베이스 + + User->>PaymentService: 결제 요청 + PaymentService->>Database: 결제 정보 저장 + activate Database + Database-->>PaymentService: 저장 완료 + deactivate Database + + alt 정상 흐름 + PaymentService->>PaymentGateway: 결제 요청 + activate PaymentGateway + PaymentGateway-->>PaymentService: 결제 성공 + deactivate PaymentGateway + PaymentService->>User: 결제 완료 + + else 외부 실패 + PaymentService->>PaymentGateway: 결제 요청 + activate PaymentGateway + PaymentGateway-->>PaymentService: 결제 실패 + deactivate PaymentGateway + PaymentService->>Database: 롤백 + activate Database + Database-->>PaymentService: 롤백 완료 + deactivate Database + PaymentService->>User: 결제 실패 + end + + else DB 실패 + PaymentService->>Database: 결제 정보 저장 + activate Database + Database-->>PaymentService: 저장 실패 + deactivate Database + PaymentService->>User: 저장 실패 + end +``` \ No newline at end of file