Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【Serverless LT初心者向け LT大会 #25】サーキットブレーカーについて

gsuzuki983
September 07, 2022

【Serverless LT初心者向け LT大会 #25】サーキットブレーカーについて

2022/09/07に開催されたServerless LT初心者向け LT大会 #25での発表資料です。
https://serverlesslt.connpass.com/event/256672/

gsuzuki983

September 07, 2022
Tweet

Other Decks in Technology

Transcript

  1. 自己紹介 • 鈴木 源(Gen Suzuki) インフラエンジニア9年目 • 普段の業務 • Azure

    におけるサーバ構築、運用保守 • 最近の興味 • コミュニティ活動に参加したい! • ハッカソンに参加すべく、アプリ開発勉強中 • Twitter:@HikaThf 3
  2. フェールソフトの重要性 • フェールソフトに則った設計をすることで、下記の 2 つの業 務要件を同時に満たすことができる。 - システム障害の影響を最小限に抑える。 - システムによる継続的なサービス提供を図る。

    • そのため、1 つの障害が重大なトラブルに発展しかねないが、 継続的なサービスの提供が必要となるミッション クリティカ ルなサービスでは、フェールソフトに則った設計をすること が特に重要である。 7
  3. サーキットブレーカーとは (1/3) 下記の手法を用いることで、システム設計にフェールソフトを組 み込むことができる。 • サーキット ブレイカー: サーキット ブレーカーとは、障害部分を切り離し、障害復旧後に元 のフローに戻す設計パターンである。ユーザーに対して可能な範囲で

    のサービス提供を継続するため、サブシステム単位にサーキット ブ レーカーを実装し、障害による停止部分を切り離し、縮退稼働できる ようにする。 • エラー ページ: フロントの Web サーバーが障害やメンテナンスで停止している間、 ユーザーに穏やかな内容のエラーページを表示することで、復旧後の 再アクセスに誘導する。 ロードバランサでの 縮退もサーキットブレーカーと 呼ぶのか?聞いたことないぞ。 8
  4. ようやく本題。これ本当に必要か? サーキットブレーカーの設計は理解した。 これ本当に必要か?というのがテーマ。 ひっかかりポイント 1. アプリケーションで実装しないといけない (ライブラリはある。Polly, Opossumなど) 2. 運用に向けた作りこみが必要

    今の状態や緊急時の手動閉塞の仕組みなど 結論:ロードバランサーにやらせればいいだろ 業務処理に集中してもらうために可用性などの 仕組みをソフトウェアに移管しているのに本末 転倒感がある。 17
  5. 例えばこんな構成の場合 可用性向上のためにどうする?(1/2) アプリ (サーバレス) クライアント アプリ (サーバレス) アプリサーキットブレーカー (サーバレス) クライアント

    アプリ (サーバレス) アプリ (サーバレス) クライアント ロード バランサー アプリ (サーバレス) 案1 案2 ベース 前述の理由より、案2としたい。1:1構成にロードバランサーってなんだという話はありますが・・・ 18
  6. 例えばこんな構成の場合 可用性向上のためにどうする?(2/2) アプリ (サーバレス) クライアント 外部API アプリサーキットブレーカー (サーバレス) クライアント 外部API

    アプリ (サーバレス) クライアント ロード バランサー 外部API 案1 案2 ベース 外部APIの前に自前のロードバランサは置かない。(外部APIに不要なリクエストを送ることになる) 消去法的に案1が有力に…! 19