1 of 23

What's New in Serverless Compute?

GCPUG Admin

Google Developers Expert

Mercari / Merpay Solution Team

@sinmetal

https://gcpug.jp

2 of 23

What's New in Serverless Compute?

2

https://gcpug.jp

3 of 23

Serverless Compute

3

  • Google App Engine Standard
  • Google App Engine Flex
  • Google Cloud Functions
  • Google Cloud Run (NEW)

https://gcpug.jp

4 of 23

Google App Engine Standard

4

  • Java 11 (α)
  • Go 1.12 (β)
  • Ruby 2.5 (α)

https://gcpug.jp

5 of 23

Google App Engine Standard

5

App Engine SDKがサポート外となり、Platformとして存在していた独自部分が消滅し、GCPの中でHTTPを受け取る入り口としてのシンプルなポジションへの移行が明確となった

歴史が改変されてるので、最近の2nd genの話をしているBlogがややこしいことに

(GAE Go 1.11 ランタイムが公式には 2nd gen ではなくなった件について)

https://gcpug.jp

6 of 23

App Engine SDKとの向き合い方

6

  • sinmetalにもまだなんとも言い難く、難しいタイミング
  • 新規アプリ
    • App Engine SDKを使わない
      • 地味に作り込まないといけないレイヤーが多い
      • 既存のApp Engine系の記事は何も参考にならない
    • App Engine SDKを使う
      • とりあえず楽だが、数年後に移行が必要になることが確実
  • 既存アプリ
    • 焦って移行する時期ではない
    • RuntimeのVersion UPにこだわらないのであれば、来年のNext SFまで静観ぐらいでよいのではないか?

https://gcpug.jp

7 of 23

Google Cloud Functions

7

  • Runtime
    • Node.js 10 (α)
    • Go 1.12 (α)
    • Java 8 (α)
  • Option
    • --max-instances
    • --vpc-connector

https://gcpug.jp

8 of 23

8

  • HTTP Handlerを持ったContainer ImageをDeployすれば、Requestが来た時にContainerを立ち上げてくれるサービス
  • 自由度が高いCloud Functionsみたいな存在

https://gcpug.jp

9 of 23

Google Cloud Runの2つの種類

9

  • Cloud Run
    • Container Imageを指定するだけのシンプルなもの
  • Cloud Run on GKE
    • 自分のGKE上でContainer Imageを起動する

https://gcpug.jp

10 of 23

Google Cloud Run使い分け

10

  • Cloud Run
    • 1eventをシンプルに処理していくもの
  • Cloud Run on GKE
    • GPUなど強力なマシンタイプが必要
    • GKEの中に連携する別のServiceを置くケース

https://gcpug.jp

11 of 23

Google Cloud RunのConfig

11

  • Environment Variables : 環境変数
  • Memory Limits
    • Max 2GB
  • Concurrency : 同じInstanceで同時に処理するリクエスト数
    • 最大 80
  • Request Timeout : 1requestの最長処理時間
    • 最大 15min

https://gcpug.jp

12 of 23

Google Cloud Runで今できないこと

12

https://gcpug.jp

13 of 23

Google Cloud Tasks

13

  • GA
  • Native GCP Auth (IAM) on HTTP

https://gcpug.jp

14 of 23

Google Cloud Pub/Sub

14

  • Native GCP Auth (IAM) on HTTP

https://gcpug.jp

15 of 23

Google Cloud Scheduler

15

  • Native GCP Auth (IAM) on HTTP

https://gcpug.jp

16 of 23

Native GCP Auth (IAM) on HTTP ?

16

  • Push Handlerが送信元をチェックできるようにする機能

PubSub, TasksからのRequestに

Authorization Headerが付与される

https://gcpug.jp

17 of 23

従来は ?

17

https://gcpug.jp

18 of 23

Native GCP Auth (IAM) on HTTP !!

18

  • 任意のHandlerを認証して利用できる・・・!
    • 自動で認証してくれるもの
      • Identity Aware Proxy
      • Cloud Run
    • 未対応 (アプリ側で頑張ればいける)
      • Cloud Functions
    • その他 (アプリ側で対応する)
      • なんでもOK
  • 自分が所有するHandlerのみ登録できる
    • カスタムドメイン
    • 自分のApp Engine, Cloud Functions, Cloud Run

https://gcpug.jp

19 of 23

設定の方法のサンプル (PubSub編)

19

  • PublishするSAとしてcaller@{projectid}.iam.gserviceaccount.comを作る
  • PubSubのSubscription作成時に--push-auth-service-account を追加する
    • gcloud beta pubsub subscriptions create sampleSubscription --topic sample --push-endpoint="https://asia-northeast1-{projectid}.cloudfunctions.net/SampleHandler/" --push-auth-service-account="caller@{projectid}.iam.gserviceaccount.com"
  • 受け取り側のIAMを設定する (IAP, Cloud Runの場合)
    • caller@{projectid}.iam.gserviceaccount.com に権限を追加する
    • IAP : roles/iap.httpsResourceAccessor
    • Cloud Run : roles/run.invoker

https://gcpug.jp

20 of 23

どのように使い分けるのか?

20

  • Google App Engine Standard
    • Web Application
  • Google App Engine Flex
    • Web Application
    • 大きなマシンタイプ
  • Google Cloud Functions
    • Event Driven
    • 1 function
  • Google Cloud Run
    • Event Driven
    • 複数のHandler, ミドルウェアが必要なケース

https://gcpug.jp

21 of 23

Firebaseとの連携

21

  • Firebase HostingのBackendにFunctions, Cloud Runを置いた場合、FirebaseのCDNを利用できるので、セミスタティックなWebSiteを作るのに便利
  • FunctionではHandlerをいっぱい作ってDeployするのが面倒なので、Cloud Run利用者が増えそう

https://gcpug.jp

22 of 23

Demo

22

  • Cloud Functions
    • HTTP Trigger
  • Cloud Run
  • Firebase Hosting
    • Rewrites
      • Cloud Functions
      • Cloud Run

https://gcpug.jp

23 of 23

23

Thank you !!

https://gcpug.jp