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
Cloud Run における非同期処理方式 - 2/22 GDG Tokyo LT資料 -
Search
Makoto.M
February 22, 2024
1
270
Cloud Run における非同期処理方式 - 2/22 GDG Tokyo LT資料 -
Makoto.M
February 22, 2024
Tweet
Share
More Decks by Makoto.M
See All by Makoto.M
大規模な Kubernetes クラスタ環境を運用していくための GKE Enterprise
makocchan0509
0
320
クラウドネイティブデイズ福岡 LTスライド - Synthetic Monitoringが Google Cloud で出た
makocchan0509
0
100
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Code Reviewing Like a Champion
maltzj
527
40k
Embracing the Ebb and Flow
colly
88
4.9k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
180
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
260
Deep Space Network (abreviated)
tonyrice
0
33
Leo the Paperboy
mayatellez
1
1.3k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.2k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
54
49k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
540
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Raft: Consensus for Rubyists
vanstee
141
7.3k
Transcript
Cloud Run における非同期処理方式
自己紹介 • 仕事内容 ◦ Google Cloud を中心としたコンサル、インテグレーションに従事 ◦ 主にコンテナ領域を専門としながらアプリ、インフラ、マネジメント全般を 担当
• その他 ◦ リモートでの資格試験では自宅の浴室で受験 ◦ Google Cloud Champion Innovators (Modern Architecture, Serverless App Development) ◦ Google Cloud Partner Top Engineer 2024 間瀬 真 (@Makocchan_Re) ☜最近浴室受験で取得
本日お話しすること • Cloud Run を使って非同期的にデータの処理をしていた際につまづいた点とそ の対策について簡単に紹介します。
Cloud Run はいいぞ • サーバーレスなコンテナ実行環境 • HTTP等のリクエストをリッスンする Service タイプと 時刻やイベントドリブン
で起動する Job タイプがある。 • コンソールからデプロイする際には、最低 でもコンテナイメージと認証要否のたった 2 つの項目を入力するだけ!! • GKE 使う前にまずは Cloud Run じゃダメ なのか考えるようにしています。
とあるサービスでのアーキテクチャ • 外部から入力されるデータをバックエンド上でリアルタイムにMLモデルを使って分類 しDWHへ蓄積する。 • Cloud Run の アプリ は
Pub/Sub を介して非同期的に処理を実行する。 ① データアップロードと前処理 ②ファイルアップロード ③ファイルイベント ④ファイルイベント駆動での リクエスト送信 (Push) ⑤データ分類処理 ⑥分類結果の蓄積 Cloud Run (前処理アプリ) Cloud Storage (オブジェクトストレージ ) Pub /Sub (メッセージング) Cloud Run (分類アプリ) BigQuery (DWH) Service Service
課題 動画ファイルアップ 画像への分割 大量にPushリクエストが発生 ・分類アプリでの分類処理に時間がかかり、大量のデータを処理する際にオートスケールしても処理が 追いつかない状況に。 ・結果、Pub/Sub にてタイムアウト(最大10min)&リトライが発生して無限ループに。 処理が滞留 前処理アプリ
分類アプリ (一部割愛) 大量のファイルイベント
反省点と見直し方針 • 反省点 ◦ 分類処理にそれなりに時間がかかることを予測できていなかった。 • 前提 ◦ 分類処理で使うモデルは今後もチューニングが発生する。 ▪
つまり分類処理にかかる時間は変動することに ◦ ユーザーがアップロードするデータの仕様( fps, 動画の長さ)も変化する。 ▪ サービス仕様として縛ることが困難 • 見直し方針 ◦ データや分類処理に寄らず一定の負荷量で処理できるようにしたい。
見直し後のアーキテクチャ • Cloud Run を Service から Job へ変更し、 Pub/Sub
は Push から Pull 方式へ ◦ Pull によって大量データの処理がにおいても負荷のコントロールができるように • Cloud Workflows によって Cloud Run Job のオーケストレーションを実施 ① データアップロード Cloud Run (前処理アプリ) Cloud Run (分類アプリ) Eventarc Workflows ②ワークロード起動 ③前処理 & ファイルアップロード ④ Pull & データ分類処理 Job Job
当時採用してないけど、採用したかった案 • Cloud Tasks による流量制御の選択肢があったが、該当機能はプレビューだったので見送り • 採用できれば構成としてはかなりシンプルになる。 • Cloud Run
Jobs は 24h の時間制限があり常時起動できないので、 Pull 型の処理と相性が良くないと感 じている。 イベント駆動での リクエスト送信 (Push) Pub /Sub (一部割愛) Cloud Tasks リクエストの流量制御 + Buffer Task メソッドによるリ クエストルーティング Buffer Task メソッドによって Push 先のエンドポイントとして指 定可能になるが、現時点でもプレビュー Service
まとめ • Cloud Run と Pub/Sub Push を組み合わせた非同期処理はシンプルで実装しやす いが、流量制御が効かないことに注意 •
代替策として Cloud Run Jobs による処理が候補になるが、起動時間制限(~24h)が あるのでジョブのライフサイクルは考えなければいけない。 • Cloud Tasks の Buffer Task メソッド早く GA してほしい。
Cloud Run における非同期処理方式
Thank you