Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
食べログのサーキットブレーカー導入を振り返って
Search
atpons
May 28, 2026
Technology
170
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
食べログのサーキットブレーカー導入を振り返って
【日経×MIXI×カカクコム】SREで築く障害耐性〜長期運用を支える復旧力〜
https://nikkei.connpass.com/event/391773/
atpons
May 28, 2026
More Decks by atpons
See All by atpons
TLSから見るSREの未来
atpons
3
780
Securing Credentials for Package Manager and Bundler
atpons
0
240
AWS Organizations で実現する、 マルチ AWS アカウントのルートユーザー管理からの脱却
atpons
1
720
コピペでQualys SSL Server Test A+ ゲットだぜ!
atpons
0
180
Other Decks in Technology
See All in Technology
Oracle AI Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
6
1.5k
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
180
NAB Show 2026 動画技術関連レポート / NAB Show 2026 Report
cyberagentdevelopers
PRO
0
200
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
1k
データサイエンスを価値につなげるプロジェクト設計 〜 DS一年目が現場で得た気づき 〜
ysd113
1
240
手塩にかけりゃいいってもんじゃない
ming_ayami
0
570
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
130
脆弱性対応、どこで線を引くか
rymiyamoto
1
390
LayerXにおけるセキュリティ管理の現在地と次の一手
tosho
0
180
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
330
【2026年版】 ベクトル検索䛸 Embedding最前線
mocobeta
0
100
失敗を資産に変えるClaude Code
shinyasaita
0
650
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.5k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
230
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
240
Designing for Timeless Needs
cassininazir
1
250
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Optimizing for Happiness
mojombo
378
71k
Scaling GitHub
holman
464
140k
The Spectacular Lies of Maps
axbom
PRO
1
810
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
310
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Transcript
© Kakaku.com Inc. All Rights Reserved. 1 ⾷べログのサーキットブレーカー導⼊を 振り返って 2026/5/28
株式会社カカクコム ⾷べログカンパニー 開発本部 技術部 SREチーム 浅野 ⼤我
© Kakaku.com Inc. All Rights Reserved. 2 ⾃⼰紹介 浅野 ⼤我
(@atpons) 2025/9〜 株式会社カカクコム ⾷べログカンパニー 開発本部 技術部 SREチーム
© Kakaku.com Inc. All Rights Reserved. 3 ⾷べログについて ⾷体験を豊かにするレストラン検索‧予約サービス 掲載店舗数は89万店以上(※)
。(※)2026年5⽉時点 お店が発信するこだわり情報やユーザーが投稿した⼝コミ‧写真など、レストランに関する豊富 な情報から、さまざまな視点で⽬的に合ったお店が探せます。 またいつでもどこからでも、簡単に空席確認やネット予約ができます。 多⾔語版サービス 英語、中国語(簡体字/繁体字)、 韓国語 アクセス数(2026年3⽉現在) ⽉間総ページビュー 24億5,971万PV ⽉間利⽤者数 9,708万⼈
© Kakaku.com Inc. All Rights Reserved. 4 ⽬次 1. なぜサーキットブレーカーが必要だったのか
2. Envoyを選んだ理由 3. 導⼊とチューニング 4. まとめ
© Kakaku.com Inc. All Rights Reserved. 5 なぜサーキットブレーカーが必要 だったのか
© Kakaku.com Inc. All Rights Reserved. 6 ⾷べログのインフラ構成 Kubernetes環境 VM環境
nginx nginx Rails Rails nginx Rails Rails ロードバランサー フルK8s化へ 移行中 オンプレとプライベートクラウドをベースとした構成
© Kakaku.com Inc. All Rights Reserved. 7 フルKubernetes化絶賛進⾏中 詳細はテックブログで公開中 https://tech-blog.tabelog.co
m/entry/tabelog-kubernetes- migration
© Kakaku.com Inc. All Rights Reserved. 8 ⾷べログのシステムアーキテクチャの今まで tabelog_base サブシステム1
サブシステム2 メインDB 特定機能 用DB 口コミ検索 口コミ検索 独立システム 検索エンジン 外部サービス 機能ごとに サブシステム同士で 通信 社内検索 基盤と通信 外部サービスと API連携 重複した機能
© Kakaku.com Inc. All Rights Reserved. 9 ⾷べログのアーキテクチャの今まで tabelog_base サブシステム1
サブシステム2 メインDB 特定機能 用DB 口コミ検索 口コミ検索 独立システム 検索エンジン 外部サービス 機能ごとに サブシステム同士で 通信 社内検索 基盤と通信 外部サービスと API連携 重複した機能
© Kakaku.com Inc. All Rights Reserved. 10 ⾷べログのアーキテクチャの今まで tabelog_base サブシステム1
サブシステム2 メインDB 特定機能 用DB 独立システム 検索エンジン 外部サービス kiban kiban DB 口コミ検索 主要機能が切り出され、 検索エンジンとの通信も kibanを介して、疎結合に なるはずだった
© Kakaku.com Inc. All Rights Reserved. 11 kibanシステム‧外部通信の課題 tabelog_base サブシステム1
サブシステム2 メインDB 特定機能 用DB 独立システム 検索エンジン 外部サービス kiban kiban DB 口コミ検索 kiban経由・外部通信のどれかが 高負荷になると、 引きずられて カスケード障害になる アクセス しづらい 高負荷
© Kakaku.com Inc. All Rights Reserved. 12 現状のアーキテクチャの課題 これはつらい・・・ -
kibanシステム‧⾷べログの多くのシステムはVMで動作 - RailsのUnicorn上のワーカー数には上限がある - 例えば以下のようなことが起こると⾷べログ全体に波及する - 検索エンジン(Solr)側の⾼負荷状態が続くと、kibanを経由した検索が不可に - リクエストが滞留し、kibanがアクセスできなくなる - 検索以外の様々な機能が利⽤できなくなり、全体のリクエストが詰まり始める - Solrに対してはサブシステムから直接アクセスもあり、そこも詰まることがある - 主要機能が⼀箇所に集まったことで、SPOFが増えてカスケード障害が起こる原因に
© Kakaku.com Inc. All Rights Reserved. 13 解決策を検討 - ⼊社時点で各サブシステムでエラーが返ってくれば、そこを表⽰しないような制御は⼊りつ
つあった - カスケード障害が起きていると各種システムのワーカーがレスポンスすら返せず、全体 的にリクエストが詰まる - サーキットブレーカーを導⼊して⼀定のアクセスパターンになったらすぐにエラーを返して バックエンドへの到達を⽌める必要があった まずkiban・検索エンジンをターゲットに、 サーキットブレーカーを導入することを決めた
© Kakaku.com Inc. All Rights Reserved. 14 Envoyを選んだ理由
© Kakaku.com Inc. All Rights Reserved. 15 サーキットブレーカーを実現する⽅法を検討 - バックエンドのアプリケーションレベルで実現する
- ⼀定のエラーがでたら⼀時的にリクエストを⽌める - プロキシを導⼊する(採⽤) - バックエンドに対してプロキシを導⼊して、そこでアクセスのパターンにより サーキットブレーカーを有効にする 今回は検索エンジンなど、全社組織で管理しているサービスへの適用もあったことからア プリケーションレベルではなく、プロキシを導入して実現した
© Kakaku.com Inc. All Rights Reserved. 16 Envoyを選定した理由 - プロキシとして導⼊するデータプレーンは
Envoy 導⼊⼀択だった - 他の選択肢はあまりなかった - コントロールプレーンとして Istio をさらに導⼊していくかは検討した - Istio など xDS サーバがあると設定の注⼊などがやり易い - ⼀⽅、⾷べログのシステムは Kubernetes と VM が現状混在している状態 - Istio は VM にも展開可能なので、Kubernetes と VM を同じ Istio で管理するなども出来 そうだった
© Kakaku.com Inc. All Rights Reserved. 17 EnvoyをVMに展開して動作させることになった tabelog_base サブシステム1
サブシステム2 メインDB 特定機能 用DB 検索エンジン kiban kiban DB 口コミ検索 EnvoyをVMに展開して リバースプロキシさせることで サーキットブレーカーなどを 有効にした Envoy Envoy
© Kakaku.com Inc. All Rights Reserved. 18 Envoy を⾮コンテナ環境と共存させる構成 -
⾷べログでは現在 Kubernetes 化を進めており、⼀部のサブシステムは Kubernetes ではなく VM 上で動いているものがある 🔗 ⾷べログ on Kubernetes ~ 運⽤15年以上の⼤規模レガシーシステムを Kubernetesに乗せ ていく~ - K8s化進⾏中なものの‧‧‧ - VM環境がまだ残っており、ロードバランサーアプライアンスとの組み合わせで正しく動 くかが未知数だった - ⾷べログで実績の多い VM 環境で Envoy をインストールして動作させることにした
© Kakaku.com Inc. All Rights Reserved. 19 Envoy を VM
で動作させる⼤変さ 1. 設定の再読み込みを⾏いたい時が⼤変 - Envoy は同じプロセス内で静的な設定を再読み込みすることが難しい - 基本的には xDS サーバなどを⽤意して設定を配布するしかない - 動的に設定などを再読み込みするためには Hot Restart を⾏う必要があり、新旧プロセスを⼊れ 替えるための通信を⾏う必要がある - 今回は公式で⽤意されている Python スクリプトをベースに Hot Restart を⾏い、systemd で Envoy ⾃体を管理するような仕組みにした 2. Envoy のバイナリをビルドするのが⼤変 - Envoy のバイナリが利⽤している Linux ディストリビューションでうまく動作しないことがわ かった - Bazel でビルドされているため、そこからパッケージを作成して配布するロジックを作成した
© Kakaku.com Inc. All Rights Reserved. 20 導⼊とチューニング
© Kakaku.com Inc. All Rights Reserved. 21 導⼊について - 今回は、検索エンジンとkibanシステムに導⼊することにした
- 閾値について - 今回のサーキットブレーカーは同時接続数✖接続保留数の閾値が溢れると遮断 - 検索エンジンについては、これまでの負荷動向に少し余裕を持たせたキャパシティに設定 - kibanシステムについては、あらゆるシステムから繋がるため保守的なキャパシティに設定 - 導⼊にあたっては、フィーチャートグルで Envoy か直接接続を選べるようにした - 無停⽌かつ無障害でリリースすることが出来た 一定期間モニタリング後、負荷に合ったキャパシティに設定しなおして運用を継続
© Kakaku.com Inc. All Rights Reserved. 22 導⼊後の成果とチューニングについて - サーキットブレーカーの動作閾値などについてはダッシュボードで観測‧監視
- 同時接続が絞られたことで⼀気にバックエンドにリクエストが流れないようになり、負荷が平準化 されているため、サーキットブレーカーが実際に発動することは少ない
© Kakaku.com Inc. All Rights Reserved. 23 まとめ - Envoyを使って、サーキットブレーカーによるトラフィック制御を実現した
- VM環境でもEnvoyを段階導⼊し、無停⽌‧無障害でリリースできた - 同時接続数などの指標を観測できるようになり、負荷状況に応じたチューニングが可能になった - Kubernetes化の進展に合わせて、今後はEnvoyの管理⽅式(VM→K8s、Istio)を⾒直していく
© Kakaku.com Inc. All Rights Reserved. 24 ありがとうございました