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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Makoto.M
February 22, 2024
280
1
Share
Cloud Run における非同期処理方式 - 2/22 GDG Tokyo LT資料 -
Makoto.M
February 22, 2024
More Decks by Makoto.M
See All by Makoto.M
大規模な Kubernetes クラスタ環境を運用していくための GKE Enterprise
makocchan0509
0
330
クラウドネイティブデイズ福岡 LTスライド - Synthetic Monitoringが Google Cloud で出た
makocchan0509
0
110
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
730
How to train your dragon (web standard)
notwaldorf
97
6.6k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
290
How GitHub (no longer) Works
holman
316
150k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
500
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
The Cult of Friendly URLs
andyhume
79
6.8k
Un-Boring Meetings
codingconduct
0
260
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
190
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
YesSQL, Process and Tooling at Scale
rocio
174
15k
How to Ace a Technical Interview
jacobian
281
24k
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