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
Seitaro Fujigaki
March 12, 2026
Programming
1.5k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
Seitaro Fujigaki
March 12, 2026
Other Decks in Programming
See All in Programming
[DroidKaigi 2026] Bring your own phones to Gradle Managed Devices
f2lk
0
110
Can LLMs Replicate 4 Years of Compose Migration? Exploring the boundaries of automation with 279 XML files from a real product
makun
0
130
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
140
業務時間外もAIに働いてもらう話
colorful12
3
10k
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
230
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
0
370
週末にAI-DLCを本気で回したら$1,600溶けた
hbashimizu
0
130
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
160
【デモ】Kiroで体験する仕様駆動開発|設計からコーディングまでAIと進める開発フロー
cmkudo
0
580
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
680
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
500
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
670
Featured
See All Featured
Evolving SEO for Evolving Search Engines
ryanjones
0
280
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
440
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Faster Mobile Websites
deanohume
310
32k
My Coaching Mixtape
mlcsv
0
310
Speed Design
sergeychernyshev
33
2.1k
A better future with KSS
kneath
240
18k
Balancing Empowerment & Direction
lara
6
1.3k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
580
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
230
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
660
Transcript
ポーリング処理廃止による イベント駆動アーキテクチャへの移行 Go Junction #1
自己紹介 所属 • CyberAgent / MGDX • 薬急便(医療系SaaS) • バックエンド兼SRE
最近の趣味 • プレミアリーグ観戦⚽ • 旅⾏✈ @eiaou_f フジガキ セイタロウ 藤垣 成汰朗
予約検索の既存アーキテクチャ ‧各クライアントでポーリング ‧ポーリング間隔: 30sec ‧1回あたりのAPIコール数: 9回 予約検索APIで 2,000 req/sec
課題 高負荷 スケーラビリティへ の懸念 非効率な リソース利用
問題の本質 ポーリングの根本的な問題 は何か?
問題の本質 データに変更があってもなくても、定期的にリクエストが発生する = 無駄なリクエストが多い
変更があったときにサーバーから クライアントへ通知すれば良いのでは…!
サーバープッシュ型の通信方式 選択肢 メリット デメリット WebSocket リアルタイム性が 高い 双方向通信が可能 低レイテンシ 通知用途には過剰機能
接続管理が複雑 スケーリングが難しい ※ Server-Sent Events ブラウザネイティブ対応 HTTP/1.1で動作 自動再接続あり 接続管理が複雑 スケーリングが難しい ※ gRPC Server Streaming 型安全・バイナリ効率が良い モバイル/BFF構成と相性◎ ブラウザはgRPC-Web経由で導入コス ト高 接続管理が複雑 スケーリングが難しい ※ ※接続がPodに固定されるため、別 Podに届いたイベントを他 Podの接続クライアントへ転送する仕組みが別途必要
サーバーからクライアントへの通信方式 選択肢 メリット デメリット WebSocket リアルタイム性が高い 双方向通信が可能 低レイテンシ 通知用途には過剰機能 接続管理が複雑
スケーリングが難しい ※ Server-Sent Events ブラウザネイティブ対応 HTTP/1.1で動作 自動再接続あり 接続管理が複雑 スケーリングが難しい ※ gRPC Server Streaming 型安全・バイナリ効率が良い モバイル/BFF構成と相性◎ ブラウザはgRPC-Web経由で導入コス ト高 接続管理が複雑 スケーリングが難しい ※ ※接続がPodに固定されるため、別 Podに届いたイベントを他 Podの接続クライアントへ転送する仕組みが別途必要
もう少し簡単な⽅法はないのか?
ありました
新アーキテクチャ 1. 予約サービスからイベント発⽕ 2. Pub/Subにメッセージを配信 3. イベント伝播サービスが購読 4. イベント伝播サービスがFirestoreの薬局別 ドキュメントを更新
5. 薬局ドキュメントを監視しているフロント エンドがFirestoreの変更をリアルタイム検 知 6. 予約取得APIから予約データを取得
なぜFirestore? • リアルタイム同期機能が標準装備 ◦ SDKを使うだけで、⾯倒な接続管理なしにリアルタイム同期が実現可能 • スケーラビリティ ◦ クライアント数の増加に対して、インフラ側での対応が不要 •
薬局ごとのドキュメント分離 ◦ 各薬局が⾃⾝に関係するドキュメントのみを購読するため、他の薬局のイベントなど不要 なデータを受信することがない • 既存のGoogle Cloud環境との親和性 ◦ すでにGKEやPub/Subを使⽤していたため、同じエコシステム内で完結できる点も⼤きな メリットでした
短期間に多数のイベントが発⽣した 場合、そのままクライアントに伝播 すると、都度APIを呼び出してしまう 結局⼤量のリクエストが発⽣! 課題:短時間に⼤量のイベントが発⽣するケース
Cloud Tasksを使ったスロットリング 機構を導⼊ ⼀定時間内に発⽣した複数のイベント を、1回の通知にまとめる APIリクエストの集中を回避! 解決策:Cloud Tasksによるスロットリング
リアーキテクチャ後の結果 定性的 • 予約⼀覧更新のリアルタイム性の向上 定量的 指標 改善前 改善後 削減率 予約検索APIの秒間リクエスト数
約2,000/秒 約1,000/秒 50% DBコスト 100% 70% 30%
• 問題 ◦ ポーリング処理によりAPIサーバーやDBへの負荷が⾼い状況 • 解決策 ◦ Firestoreを利⽤することで、サーバーからクライアントへのイベント通知を実現し、ポー リング処理から移⾏することができた ◦
Cloud Tasksを利⽤してスロットリング機構を導⼊し、⼀定期間のイベントを1つのイベン トにまとめることに成功 • 結果 ◦ 対象APIの秒間リクエスト数が半減 ◦ DBコストも30%程度削減成功 まとめ
ご清聴ありがとうございました