diff --git a/.forge/iss-6f8eac22f6f0-attempt-1.md b/.forge/iss-6f8eac22f6f0-attempt-1.md new file mode 100644 index 0000000..ef87d47 --- /dev/null +++ b/.forge/iss-6f8eac22f6f0-attempt-1.md @@ -0,0 +1,3 @@ +# iss-6f8eac22f6f0-attempt-1 + +Forge 이슈 작업 브랜치 `forge/iss-6f8eac22f6f0-attempt-1`. diff --git a/docs/architecture/transaction-sequence.md b/docs/architecture/transaction-sequence.md new file mode 100644 index 0000000..52f0575 --- /dev/null +++ b/docs/architecture/transaction-sequence.md @@ -0,0 +1,41 @@ +```mermaid +sequenceDiagram + participant User + participant PaymentService + participant PaymentGateway + participant Database + + %% 정상 흐름 + User->>PaymentService: 결제 요청 + PaymentService->>Database: 거래 데이터 저장 + Database-->>PaymentService: 저장 완료 + PaymentService->>PaymentGateway: 결제 요청 + PaymentGateway-->>PaymentService: 결제 성공 + PaymentService->>Database: 거래 완료 상태 업데이트 + Database-->>PaymentService: 상태 업데이트 완료 + PaymentService-->>User: 결제 성공 응답 + + %% 외부 실패 흐름 + User->>PaymentService: 결제 요청 + PaymentService->>Database: 거래 데이터 저장 + Database-->>PaymentService: 저장 완료 + PaymentService->>PaymentGateway: 결제 요청 + PaymentGateway-->>PaymentService: 결제 실패 + PaymentService->>Database: 거래 실패 상태 업데이트 + Database-->>PaymentService: 상태 업데이트 완료 + PaymentService-->>User: 결제 실패 응답 + + %% DB 실패 흐름 + User->>PaymentService: 결제 요청 + PaymentService->>Database: 거래 데이터 저장 + Database-->>PaymentService: 저장 실패 + PaymentService-->>User: 결제 실패 응답 + + %% commit 흐름 + PaymentService->>Database: 커밋 + Database-->>PaymentService: 커밋 완료 + + %% rollback 흐름 + PaymentService->>Database: 롤백 + Database-->>PaymentService: 롤백 완료 +``` \ No newline at end of file