モノリシック(単一モジュール)なサービスの場合、1つの障害が全体に及び全停止してしまう。
ここでは、全停止に対処できるMicroservicesアーキテクチャを紹介しているので重要な点をまとめてみました。

具体的には

①非同期通信
・リクエストを非同期にする
・リクエスト受付とSubscribeに整合性が保たれるのを意識
・処理を冪等性に実装

②リトライ
・レスポンスコードによってリトライを決める
・どのコードが返ってきても良いようにクライントを実装する

③バックオフ
・リトライ間の待機時間を指数関数的に長くして負荷軽減を図る
・エクスポネンシャルバックオフ採用によってリトライ間隔をランダムにして負荷軽減を図れる

④サーキットブレーカー
・リクエストキューづまりを減らすためサービスが死亡している場合は即失敗するアーキテクチャを組む

⑤フォールバック
・隣のサービスが死亡している場合はエラーを返すだけでなく代替手段を考慮する


モジュール分割してそれぞれの仕事を限定し、お互いを疎結合させるのが理想的な設計のようです。