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
0
27
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
230
クラウドネイティブデイズ福岡 LTスライド - Synthetic Monitoringが Google Cloud で出た
makocchan0509
0
60
Featured
See All Featured
For a Future-Friendly Web
brad_frost
172
9k
Adopting Sorbet at Scale
ufuk
69
8.6k
Building a Modern Day E-commerce SEO Strategy
aleyda
22
6.5k
Typedesign – Prime Four
hannesfritz
36
2.1k
Documentation Writing (for coders)
carmenintech
60
4k
How to train your dragon (web standard)
notwaldorf
75
5.2k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Building Your Own Lightsaber
phodgson
100
5.7k
GitHub's CSS Performance
jonrohan
1025
450k
Bootstrapping a Software Product
garrettdimon
PRO
302
110k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Thoughts on Productivity
jonyablonski
60
3.9k
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