@@ -81,20 +81,30 @@ graph LR
8181
8282``` mermaid
8383graph LR
84- A((開始)) --> Q1{1.処理時間が長く、<br>UX/応答性に問題があるか};
85-
86- Q1 -- Yes --> Async>非同期化を検討する];
87- Q1 -- No --> Q2{2.外部APIなどへの依存を分離し、耐障害性を高める必要があるか?};
88- Q2 -- Yes --> Async;
89- Q2 -- No --> Q3{3.突発的なバースト負荷を平準化する必要があるか?};
90- Q3 -- Yes --> Async;
91- Q3 -- No --> Q4{4.複数データストア間の整合性をリトライで担保する必要があるか?};
92- Q4 -- Yes --> Async;
93- Q4 -- No --> Sync>同期処理のままにする];
84+ Start((開始)) --> Q1{処理時間が長く<br>UX/応答性に問題があるか?}
85+
86+ %% 処理時間と応答性の判断
87+ Q1 -- Yes --> C1{運用工夫で<br>待機時間を許容できるか?}
88+ C1 -- No --> Async>非同期化を検討する]
89+ C1 -- Yes --> Q2
90+ Q1 -- No --> Q2{突発的なバースト負荷を<br>平準化する必要があるか?}
91+
92+ %% 負荷の平準化の判断
93+ Q2 -- Yes --> C2{事前のリソース増強で<br>対応可能か?}
94+ C2 -- No --> Async
95+ C2 -- Yes --> Q3
96+ Q2 -- No --> Q3{外部依存の分離や<br>データ整合性担保が必要か?}
97+
98+ %% レジリエンスの判断
99+ Q3 -- Yes --> C3{障害時に手動復旧などの<br>運用対応が許容できるか?}
100+ C3 -- No --> Async
101+ C3 -- Yes --> Sync>同期処理のままにする]
102+ Q3 -- No --> Sync
94103
95104 %% Style Definitions
96- style Sync fill:#e6ffed,stroke:#006600,stroke-width:2px
97- style Async fill:#fff0f0,stroke:#990000,stroke-width:2px
105+ style Sync fill:#e6ffed,stroke:#006600,stroke-width:2px,color:#000000
106+ style Async fill:#fff0f0,stroke:#990000,stroke-width:2px,color:#000000
107+ style Start fill:#f9f9f9,stroke:#333,stroke-width:2px,color:#000000
98108```
99109
100110## 処理時間と応答性
@@ -632,7 +642,7 @@ sequenceDiagram
632642 User->>Worker: サインアップ (リクエスト)
633643 activate Worker
634644
635- rect rgb(240, 255, 240)
645+ rect rgb(240, 255, 240, 0.5 )
636646 note right of Worker: メイン処理完了 (Commit)
637647 Worker->>DB: ユーザー作成 (TX)
638648 DB-->>Worker: OK
@@ -649,7 +659,7 @@ sequenceDiagram
649659 PQ-->>PW: 決済ジョブ受信
650660 activate PW
651661
652- rect rgb(255, 240, 240)
662+ rect rgb(255, 240, 240, 0.5 )
653663 note right of PW: 異常発生<br>同期部分と決済基盤でデータ不整合
654664 PW->>Z: 請求アカウント作成 (API Call)
655665 activate Z
@@ -687,15 +697,15 @@ sequenceDiagram
687697 User->>Worker: サインアップ (リクエスト)
688698 activate Worker
689699
690- rect rgb(240, 255, 240)
700+ rect rgb(240, 255, 240, 0.5 )
691701 note right of Worker: メイン処理完了 (Commit)
692702 Worker->>DB: ユーザー作成 (TX)
693703 DB-->>Worker: OK
694704
695705 Worker->>SF: 顧客レコード作成 (API Call)
696706 SF-->>Worker: OK
697707
698- Worker->>PQ: 請求アカウント作成依頼 (非同期)
708+ Worker->>PQ: 請求アカウント作成依頼
699709 Worker->>DB: commit
700710 Worker-->>User: Accepted
701711 end
@@ -704,7 +714,7 @@ sequenceDiagram
704714 PQ-->>PW: 決済ジョブ受信
705715 activate PW
706716
707- rect rgb(255, 240, 240)
717+ rect rgb(255, 240, 240, 0.5 )
708718 note right of PW: 異常発生
709719 PW->>Z: 請求アカウント作成 (API Call)
710720 activate Z
@@ -714,18 +724,14 @@ sequenceDiagram
714724 note over PW, Z: 【Saga開始: 補償トランザクション実行】
715725
716726 %% --- 補償処理(Sequential: DB -> SF)---
717- note right of PW: 14. ユーザーレコード削除 (補償処理 - 必須)
727+ note right of PW: ユーザーレコード削除
718728 PW->>DB: ユーザーレコード削除
719729 DB-->>PW: OK
720730
721- note right of PW: 15. 顧客レコード削除 (補償処理)
731+ note right of PW: 顧客レコード削除
722732 PW->>SF: 顧客レコード削除
723733 SF-->>PW: 削除完了
724734 PW->>DB: commit
725-
726- %% ---------------------------------------
727-
728- note over PW, DB: 16. Saga完了。システムは一貫性を保つ。
729735 end
730736
731737 deactivate PW
0 commit comments