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
GCPを使った transaction log tailing と polling publi...
Search
atsu.kg
March 17, 2023
Technology
0
990
GCPを使った transaction log tailing と polling publisher の性能比較
atsu.kg
March 17, 2023
Tweet
Share
More Decks by atsu.kg
See All by atsu.kg
OpenTelemetry PHPで始める!オブザーバビリティ入門
atsushikoga
0
1.7k
Cloud Pub/Sub Pull Subscriberの構成検討
atsushikoga
0
1.2k
巨大なモノリスの静的解析をレベルMaxにする方法
atsushikoga
0
3.6k
Lenet の開発環境の紹介
atsushikoga
0
1k
Other Decks in Technology
See All in Technology
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
8.8k
AWSで始める実践Dagster入門
kitagawaz
1
620
slog.Handlerのよくある実装ミス
sakiengineer
4
230
OCI Oracle Database Services新機能アップデート(2025/06-2025/08)
oracle4engineer
PRO
0
160
Automating Web Accessibility Testing with AI Agents
maminami373
0
1.3k
大「個人開発サービス」時代に僕たちはどう生きるか
sotarok
20
10k
「全員プロダクトマネージャー」を実現する、Cursorによる仕様検討の自動運転
applism118
22
11k
TS-S205_昨年対比2倍以上の機能追加を実現するデータ基盤プロジェクトでのAI活用について
kaz3284
1
170
「何となくテストする」を卒業するためにプロダクトが動く仕組みを理解しよう
kawabeaver
0
420
AI時代を生き抜くエンジニアキャリアの築き方 (AI-Native 時代、エンジニアという道は 「最大の挑戦の場」となる) / Building an Engineering Career to Thrive in the Age of AI (In the AI-Native Era, the Path of Engineering Becomes the Ultimate Arena of Challenge)
jeongjaesoon
0
190
企業の生成AIガバナンスにおけるエージェントとセキュリティ
lycorptech_jp
PRO
2
190
Terraformで構築する セルフサービス型データプラットフォーム / terraform-self-service-data-platform
pei0804
1
180
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.1k
GitHub's CSS Performance
jonrohan
1032
460k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
810
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
What's in a price? How to price your products and services
michaelherold
246
12k
Become a Pro
speakerdeck
PRO
29
5.5k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
BBQ
matthewcrist
89
9.8k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Designing Experiences People Love
moore
142
24k
Building Adaptive Systems
keathley
43
2.7k
Transcript
GCPを使った transaction log tailing と polling publisher の性能比較 2023/3/17 株式会社ホワイトプラス 古賀
非同期処理基盤(PoC) ① Service1がイベントをFirestoreに保存 ② Message Relay がイベントを取得 ③ Message Relay
がイベントをPub/Subへ投げる ④ Service2がイベントを受け取って処理する
非同期処理基盤(PoC) 2パターンの実装方法がある ・polling publisher ・transaction log tailing
polling publisher(pull 方式) ①常時稼働の worker が Firestore を定期的に polling する
②取得したイベントデータを Pub/Sub に投げる
transaction log tailing(push 方式) ①新規ドキュメント(イベント)作成時、Eventarc 経由でCloud Run に通知 ②リクエストに含まれるIDを元に Firestore
からイベントを取得 ③取得したイベントを Pub/Sub へ投げる
性能比較ポイント ・順序保証の有無 ・スケーラビリティ ・メンテナビリティ
性能比較:順序保証の有無 ▪polling publisher(◯) workerがイベントを作成日時順に取得し Pub/Subへ投げる、を繰 り返すことで作成された順番で配信(順序保証)が可能 ▪transaction log tailing(×) おおよそイベントは登録された順番に処理フローに乗る
Eventarc に順序保証の仕組みが無い(※) イベントの順序配信がない前提で受信側の処理を設計する ※厳密に言うと、トランスポート層の Pub/Sub に任意の順序指定キーを渡すことができないために順序保証ができない
性能比較:スケーラビリティ ▪polling publisher(△) (順序保証する前提で)イベント量が増えると worker が律速 要因となりレイテンシが上がりやすい 小規模であれば問題にならない(要計測) ▪transaction log
tailing(◯) イベント量が増えても Cloud Run・Firestore がスケールする ためレイテンシは上がりにくい
性能比較:メンテナビリティ ▪polling publisher(△) 自前で順序保証ロジックを実装・保守しなければならない workerが詰まった時(配信遅延の閾値を超えた時)の緊急対 応、予防策(パフォーマンスチューニング等)が必要となり得る ▪transaction log tailing(◯) 順序保証・スケーリングについてのロジックの構築は不要
(稼働状況の監視、異常の検知は必要) 低いメンテナンスコストで安定稼働が可能
比較結果 polling publisher transaction log tailing 順序保証の有無 ◯ × スケーラビリティ
△ ◯ メンテナビリティ △ ◯ スケーラビリティ・メンテナビリティは transaction log tailing が優位、polling publisher は懸念あり 現行の非同期処理基盤では順序保証をしていないため、順序保証は必須でない 順序保証が無くても、受信したイベントと処理したイベントのタイムスタンプを比較する事で、受信側で生成順序を判 定してハンドリングするなど、ある程度設計でカバー可能 → 現時点では transaction log tailing の方向で検討中
Discussion Time ・polling publisher や transaction log tailing のメリット、デメリット ・順序保証の仕組みが必要な事例(もしあれば)
・発表内容についてのコメント