信頼性
信頼できるサービスは障害が起きないサービスではなく、障害を検知し、影響を抑え、復旧できるサービスです。
タイムアウトと再試行
タイムアウトはリソース占有を防ぎます。再試行は回数・間隔に上限を設け、副作用の重複に備えて冪等性キーや重複排除を検討します。
サーキットブレーカーと制限
失敗が続く依存先への呼び出しを一時停止します。入力サイズ、同時接続数、キュー長、メモリ、処理時間に上限を設けます。
Graceful shutdown
終了シグナル後に新規処理を止め、処理中の仕事を一定時間待ち、リソースを解放します。
演習
外部DBが断続的に応答しないサービスについて、タイムアウト、再試行、監視、利用者応答、復旧確認を計画してください。