開発日報

窓際エンジニアの開発備忘。日報は嘘です。

【マイクロサービス】サーキットブレーカー概説

課題

サービス間通信における課題として、マイクロサービス内の通信経路上の特定のAPI(サービス)が停止してしまった場合 * サービス間通信のリクエストがタイムアウトまで待たされる * 結果として、ユーザビリティが著しく低下する

f:id:yuuu1993g:20211103093331p:plain

対策

サーキットブレーカーを導入する

  • 一定回数アクセスに失敗すると以後のアクセスを遮断する
    • 即時エラーを返す
      • エラーだとしても応答が早くなるのでユーザービリティがましになる
    • 実装によってはメッセージをキューイングしてユーザーには成功を返すことができる

代表的なサーキットブレーカー

  • Istio : Kuberbetesの拡張
  • Resilience4j : OSS. Javaで実装されている。
  • App Mesh : AWSマネージドサービス。サーキットブレーカー以外にもカナリアデプロイに対応。