sequenceDiagram participant User as User participant PaymentGateway as Payment Gateway participant PaymentService as Payment Service participant Database as Database User->>PaymentService: 요청(결제) PaymentService->>PaymentGateway: 결제 요청 alt 정상 케이스 PaymentGateway-->>PaymentService: 결제 성공 PaymentService->>Database: DB에 거래 내역 저장 Database-->>PaymentService: 저장 성공 PaymentService-->>User: 결제 완료 else 외부 실패 PaymentGateway-->>PaymentService: 결제 실패 PaymentService-->>User: 결제 실패 메시지 전송 else DB 실패 PaymentGateway-->>PaymentService: 결제 성공 PaymentService->>Database: DB에 거래 내역 저장 Database-->>PaymentService: 저장 실패 PaymentService-->>User: 결제 실패 메시지 전송 end %% Commit과 Rollback 경계 PaymentService->>Database: COMMIT (정상 흐름) Database-->>PaymentService: COMMIT 성공 PaymentService->>Database: ROLLBACK (오류 발생 시) Database-->>PaymentService: ROLLBACK 완료