diff --git a/docs/architecture/transaction-sequence.md b/docs/architecture/transaction-sequence.md new file mode 100644 index 0000000..d4f19d7 --- /dev/null +++ b/docs/architecture/transaction-sequence.md @@ -0,0 +1,46 @@ +```mermaid +sequenceDiagram + participant User + participant Controller + participant Service + participant Repository + participant Database + + User->>Controller: 결제 요청 + Controller->>Service: 결제 처리 요청 + Service->>Repository: 결제 정보 저장 + Repository->>Database: DB에 저장 + Database-->>Repository: 저장 완료 + Repository-->>Service: 저장 완료 + Service-->>Controller: 처리 완료 + Controller-->>User: 결제 완료 + + %% 외부 실패 흐름 + User->>Controller: 결제 요청 + Controller->>Service: 결제 처리 요청 + Service->>Repository: 결제 정보 저장 + Repository->>Database: DB에 저장 + Database-->>Repository: 저장 실패 + Repository-->>Service: 저장 실패 + Service-->>Controller: 처리 실패 + Controller-->>User: 결제 실패 + + %% DB 실패 흐름 + User->>Controller: 결제 요청 + Controller->>Service: 결제 처리 요청 + Service->>Repository: 결제 정보 저장 + Repository->>Database: DB에 저장 + Database-->>Repository: DB 오류 + Repository-->>Service: DB 오류 + Service-->>Controller: 처리 실패 + Controller-->>User: 결제 실패 + + %% Commit/Rollback 경계 + alt 정상 흐름 + Service->>Database: Commit + else 외부 실패 + Service->>Database: Rollback + else DB 실패 + Service->>Database: Rollback + end +``` \ No newline at end of file