Slide 1

Slide 1 text

Cloud Run で作る サーバーレスアーキテクチャ 30 連発 - これのときはこう! 2024/09/21 Google Cloud Yuki Suwa

Slide 2

Slide 2 text

諏訪 悠紀 (Yuki Suwa) ● カスタマーエンジニア (流通・小売担当) ○ 2020 年に Google Cloud にジョイン ○ ex-Classmethod (2011 年 - 2020 年) ● 得意分野 ○ Cloud Run などのサーバーレス サービス ○ Mobile App や Web App の開発 ○ Vertex AI Search for Retail (検索サービス) ○ プロトタイピング・デモ作り yuki0211s@X

Slide 3

Slide 3 text

本セッションのテーマ ● Cloud Run の基本 ● サーバーレス アーキテクチャ パターン 30 連発 Cloud Run の アーキテクチャ パターンをたくさん知る!

Slide 4

Slide 4 text

Cloud Run とは? 01

Slide 5

Slide 5 text

Proprietary + Confidential Cloud Run は Google Cloud の サーバーレス ランタイム です。 フルマネージドな環境で、コンテナ アプリケーションを 素早くセキュアに 起動できます。 ランタイム ● 自由度 自由なコード、自由なコンテナ ● オンデマンド 実行のための事前準備不要 ● スケーラビリティ 0 から高速にスケール ● インフラ管理不要 VM やクラスタの管理が不要 Cloud Run 開発体験 ● シンプル 準備はほぼ不要、すぐに使える ● 自動化 多くの作業を自動化によってケア ● 高い満足度、ユーザービリティ 高い CSAT スコア ● 開発生産性 開発者にとって使いやすい コスト効率的 ● 従量課金 アプリケーションが稼働した分のみの課金 ● 無料枠 無料利用枠が毎月使える ● 確約利用割引 確約利用で通常料金から大幅に割引 ● 定額料金なし 使っていなければノーコスト

Slide 6

Slide 6 text

Cloud Run の 2 つのリソース Cloud Run ジョブ タスクを非同期で実行 ● ジョブ実行時間のみ課金 ● HTTP エンドポイントなし ● 必要なジョブ数に応じて自動スケーリング ● 定期実行、手動実行、イベント駆動実行 ● 最大 24 時間の長時間タスク ● 実行履歴、再実行 Cloud Run サービス HTTP エンドポイントを持つサービスをホスティング ● リクエスト処理中のみ課金 ● すぐに使える TLS 付きの URL を作成 ● トラフィックに応じた自動スケーリング ● HTTP, EDA, Websockets, HTTP/2, gRPC ● トラフィック分割とロールアウトがビルトイン ● リビジョン管理

Slide 7

Slide 7 text

サーバーレス アーキテクチャ パターン 30 連発 ! 02

Slide 8

Slide 8 text

Web アプリケーション & API サーバー

Slide 9

Slide 9 text

Web アプリケーション + API の 3-Tier 構成 (SPA) Cloud Run API サーバー VPC Cloud SQL Cloud Storage 静的コンテンツ Application Load Balancer Cloud CDN 1

Slide 10

Slide 10 text

Web アプリケーション + API の 3-Tier 構成 (SSR) 2 Cloud Run API サーバー VPC Cloud SQL Cloud Storage 静的コンテンツ Application Load Balancer Cloud CDN Cloud Run SSR サーバー

Slide 11

Slide 11 text

モバイルアプリ向け 2-Tier 構成 3 Cloud Run API サーバー Application Load Balancer Cloud CDN Firestore Mobile App Android / iOS

Slide 12

Slide 12 text

Firebase App Hosting を使った SSR アプリケーション 4 Cloud Run App Hosting Cloud Storage

Slide 13

Slide 13 text

API ゲートウェイ・ BFF 5 Application Load Balancer Cloud CDN Cloud Run BFF Cloud Run API サーバー Cloud Run API サーバー Cloud Run API サーバー

Slide 14

Slide 14 text

複数のリージョンからのトラフィックの処理 6 Cloud Run Application Load Balancer asia-northeast1 Cloud Run us-central1 Spanner https://cloud.google.com/run/docs/multiple-regions?hl=ja Tokyo San Francisco

Slide 15

Slide 15 text

サービスメッシュ (Cloud Service Mesh) 7 https://cloud.google.com/service-mesh/docs/configure-cloud-service-mesh-for-cloud-run?hl=ja Cloud Run Cloud Run Cloud Run Cloud Run Cloud Service Mesh

Slide 16

Slide 16 text

オンプレミスからのみアクセス可能な内部向け アプリケーション 8 Cloud Run Internal Load Balancer VPC Cloud SQL Interconnect オンプレミス System

Slide 17

Slide 17 text

Google アカウントでアクセス制限 (Identity-Aware Proxy) 9 社員 一般ユーザー ✓ Identity-Aware Proxy Cloud Run Web App Application Load Balancer

Slide 18

Slide 18 text

Google アカウント以外でアクセス制限 (IAP + Identity Platform) 10 Identity-Aware Proxy Application Load Balancer Cloud Run SSR サーバー Identity Platform Cloud Run ログインページ IAP の設定からログインページ専用の Cloud Run を構築できる (構成ファイルを使ったカスタマイズも可能 ) Google Email OIDC …

Slide 19

Slide 19 text

攻撃のブロック (WAF) と CAPTCHA 11 Cloud Run Web App Application Load Balancer Cloud Armor Cloud Run API サーバー reCAPTCHA Enterprise ユーザー 攻撃者 ✓

Slide 20

Slide 20 text

ストレージのマウント 12 Cloud Storage Cloud Run Web App Cloud Storage FUSE https://codelabs.developers.google.com/codelabs/how-to-cloud-run-gemini-function-calling?hl=ja#0

Slide 21

Slide 21 text

リアルタイム ストリーミング 13 https://codelabs.developers.google.com/codelabs/how-to-cloud-run-gemini-function-calling?hl=ja#0 Cloud Run Cloud Storage

Slide 22

Slide 22 text

双方向通信 14 https://codelabs.developers.google.com/codelabs/how-to-cloud-run-gemini-function-calling?hl=ja#0 Cloud Run Memorystore コンテナ インスタンス コンテナ インスタンス コンテナ インスタンス

Slide 23

Slide 23 text

イベントドリブン アーキテクチャ

Slide 24

Slide 24 text

イベントドリブン アーキテクチャ (基本) 15 Cloud Run Eventarc イベントトリガー イベント https://cloud.google.com/eventarc/docs/event-driven-architectures?hl=ja

Slide 25

Slide 25 text

アラート通知のカスタマイズ 16 Cloud Run メッセージ加工 Cloud Monitoring アラート Slack LINE Mail SendGrid https://cloud.google.com/blog/ja/products/devops-sre/use-slack-and-webhooks-for-notifications?e=48754805&hl=ja

Slide 26

Slide 26 text

Cloud Storage イベントトリガー、ジョブ実行 17 Cloud Run ジョブ Eventarc イベントトリガー Cloud Storage ファイル

Slide 27

Slide 27 text

Firestore イベントトリガー、 BigQuery にリアルタイム同期 18 Cloud Run データ処理 BigQuery Eventarc イベントトリガー Firestore

Slide 28

Slide 28 text

FaaS (Cloud Run Functions) のイベントトリガー 19 Cloud Run Functions Cloud Storage Pub/Sub Cloud Run Functions

Slide 29

Slide 29 text

ワークフロー・オーケストレーション (例 : 長い文章ファイルの要約 ) 20 Cloud Run BigQuery Workflows Eventarc イベントトリガー Cloud Storage Cloud Storage ❶ チャンク取得 Gemini https://cloud.google.com/blog/ja/products/ai-machine-learning/long-document-summarization-with-workflows-and-gemini-mo dels?e=48754805&hl=ja ❷ 要約 ❸ データ加工 ❹ 永続化

Slide 30

Slide 30 text

ジョブ・バッチ処理

Slide 31

Slide 31 text

Cloud Run ジョブを使った並列処理 (例 : 店舗ごとのデータ処理 ) 21 Cloud Run ジョブ Workflows BigQuery shops テーブル shop_id shop_index 1000 0 2000 1 3000 2 レコード数 = タスク数 BigQuery records テーブル タスク タスク タスク shop_id value 1000 1 2000 5 3000 3 … … https://cloud.google.com/workflows/docs/tutorials/execute-cloud-run-jobs?hl=ja

Slide 32

Slide 32 text

Always on CPU を使った非同期処理 22 Cloud Run Always on CPU Workflows 処理開始 処理完了 https://cloud.google.com/run/docs/configuring/cpu-allocation?hl=ja ワークフロー実行は最大 1 年待機可能 Firestore 状態管理 ❶ 非同期処理実行 ❷ 状態監視

Slide 33

Slide 33 text

キューイング サービス 23 Cloud Run Pub/Sub Cloud Run Cloud Run Cloud Tasks Cloud Run https://cloud.google.com/run/docs/configuring/cpu-allocation?hl=ja 同時実行・スケール重視 重複排除重視

Slide 34

Slide 34 text

BigQuery リモート関数 24 BigQuery Cloud Run https://cloud.google.com/bigquery/docs/remote-functions?hl=ja CREATE FUNCTION PROJECT_ID.DATASET_ID.remote_add(x INT64, y INT64) RETURNS INT64 REMOTE WITH CONNECTION PROJECT_ID.LOCATION.CONNECTION_NAME OPTIONS ( endpoint = 'ENDPOINT_URL' ) Cloud Run Functions

Slide 35

Slide 35 text

生成 AI

Slide 36

Slide 36 text

生成 AI モデルのサービング (GPU 利用) 25 Cloud Run API Model Garden LLM の コンテナ イメージ デプロイ https://cloud.google.com/blog/ja/products/application-development/run-your-ai-inference-applications-on-cloud-run-with-nvidia-gpus?e= 48754805&hl=ja Cloud Run Web App ユーザー

Slide 37

Slide 37 text

ベクトル検索を使った RAG システム 26 BigQuery Vector Index Cloud Run LangChain ユーザー Vertex AI Gemini https://cloud.google.com/architecture/rag-capable-gen-ai-app-using-vertex-ai?hl=ja

Slide 38

Slide 38 text

AI ワークフロー (Firebase GenKit) 27 https://firebase.google.com/docs/genkit/cloud-run?hl=ja Cloud Run API Cloud Run Web App ユーザー Genkit デプロイ ● AI ワークフローの開発 ● プロンプト管理 ● ローカルデバッグ ● 評価 ● モニタリング Genkit プラグイン サポートされている LLM (一部) ● Gemini (Vertex AI ) ● Gemini (Google AI) ● Imagen 2, Imagen 3 ● Claude 3 ● オープンモデル (Gemma, Llama, etc) ● Open AI の GPT ファミリー ● Azure Open AI の GPT ファミリー ● etc … 各種 LLM の API を呼び出し

Slide 39

Slide 39 text

Gemini に外部データを参照させる (Function Calling) 28 https://codelabs.developers.google.com/codelabs/how-to-cloud-run-gemini-function-calling?hl=ja#0 Vertex AI Gemini ユーザー 対話 Cloud Run API サーバー BigQuery 必要に応じて 情報を取得

Slide 40

Slide 40 text

カスタマー エージェント (Agent Builder) 29 Cloud Run API サーバー Vertex AI Agent ユーザー API 呼び出し (e.g. 商品購入) 対話 Vertex AI Search 情報の検索 (e.g. 商品検索)

Slide 41

Slide 41 text

データ エージェント (Looker ) 30 Looker Frontend ユーザー 対話 Cloud Run API サーバー BigQuery Looker Query API Vertex AI Gemini LookML Prompt

Slide 42

Slide 42 text

Thank you