Slide 1

Slide 1 text

KompalWeather: Serverless Sauna Service with Cloud Run
 @toshi0607


Slide 2

Slide 2 text

自己紹介
 ● 杉田 寿憲
 ○ Toshinori Sugita / toshi0607
 ○ Software Engineer@メルカリ
 ○ マイクロサービスを開発するプラットフォームの開発・運用 
 ○ サウナ・スパ健康アドバイザー
 ● 本
 ○ 『Google Cloud Platformで学ぶTerraform』←NEW! 
 ○ Knative本 × 3
 ○ 『GoとSAMで学ぶAWS Lambda』 
 ○ 『Extensive Xamarin(共著)』
 ● 趣味
 ○ 猫、サウナ、サーバーレス


Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

※https://kom-pal.com/

Slide 5

Slide 5 text

※https://project.gotanda-valley.com/engineer-sento1/

Slide 6

Slide 6 text

※https://project.gotanda-valley.com/engineer-sento1/

Slide 7

Slide 7 text

※https://twitter.com/kompal_osaki/status/1266980363718410241

Slide 8

Slide 8 text

※https://www.google.co.jp/maps/place/%E9%87%91%E6%98%A5%E6%B9%AF/@35.6172952,139.7193735,17z/data=! 3m1!4b1!4m5!3m4!1s0x60188aedf92e7e07:0xc9b827cec1b7ca9e!8m2!3d35.6172952!4d139.7215622

Slide 9

Slide 9 text

※https://kom-pal.com/

Slide 10

Slide 10 text

※https://kom-pal.com/

Slide 11

Slide 11 text

高次元のととのいを得るために必要な機能
 ● 混雑具合変更の通知
 ● 1日のうちで空きがちな時間帯
 ● 1週間のうちで空きがちな曜日


Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

常連「営業時間終了時に空いてるステータスでないと営 業終了ツイートできひんな…」
 
 銭湯店主「営業中か営業時間外かも返しますね!」


Slide 17

Slide 17 text

設計時の気持ち
 ● 実装はしたいけど一刻も早く動かしたい
 ● 運用に手間はかけられないはず
 ● UIやグラフ化をシュッと実装できる気はしない


Slide 18

Slide 18 text

Cloud Run Cloud Run App Engine Monitoring Cloud Storage Logging Cloud Scheduler Slack Twitter Secret Manager Google Sheets Kom-pal API Firebase Invoker Compute Storage UI KompalWeatherのアーキテクチャー


Slide 19

Slide 19 text

Cloud Run Cloud Run App Engine Monitoring Cloud Storage Logging Cloud Scheduler Slack Twitter Secret Manager Google Sheets Kom-pal API Firebase Invoker Compute Storage UI KompalWeatherのアーキテクチャー
 1 watch 2 fetch status 3 save status 4 post status change

Slide 20

Slide 20 text

Cloud Run Cloud Run App Engine Monitoring Cloud Storage Logging Cloud Scheduler Slack Twitter Secret Manager Google Sheets Kom-pal API Firebase Invoker Compute Storage UI KompalWeatherのアーキテクチャー
 1 visualize 2 download graph 3 save graph

Slide 21

Slide 21 text

Cloud Run Cloud Run App Engine Monitoring Cloud Storage Logging Cloud Scheduler Slack Twitter Secret Manager Google Sheets Kom-pal API Firebase Invoker Compute Storage UI KompalWeatherのアーキテクチャー
 1 trend 2 download graph 3 post graph

Slide 22

Slide 22 text

Cloud Run Cloud Run App Engine Monitoring Cloud Storage Logging Cloud Scheduler Slack Twitter Secret Manager Google Sheets Kom-pal API Firebase Invoker Compute Storage UI KompalWeatherのアーキテクチャー


Slide 23

Slide 23 text

Cloud Run + Cloud Scheduler
 ● サーバーをCloud Runで HTTPサーバーをホスト
 ○ watch: 混雑状況取得・変化通知
 ○ visualize: 混雑トレンドグラフ取得
 ○ trend: 混雑トレンドグラフ投稿
 ● Cloud Schedulerで用途別のエンドポイントにリクエスト
 ○ 営業時間15分毎にwatch
 ○ 営業日23:30にvisualize
 ○ 営業日15:00にtrend


Slide 24

Slide 24 text

Cloud Schedulerありがとう
 ● Unix cron形式でのスケジューリング、バックオフ付リトライ、リトライ 回数、タイムアウトなどを設定可能
 ● Schedulerのサービスアカウントにroles/run.invokerを付与し、リクエ ストにOIDCトークンとして付与
 ○ Cloud Runの認証必須状態を維持
 ● 0.1$ job/月
 ○ 無料枠 3 jobs/月
 ※https://cloud.google.com/scheduler

Slide 25

Slide 25 text

Cloud Run + Cloud Scheduler
 ※https://github.com/toshi0607/KompalWeather/blob/master/terraform/development/google_cloud_scheduler_job.tf

Slide 26

Slide 26 text

Cloud Run Cloud Run App Engine Monitoring Cloud Storage Logging Cloud Scheduler Slack Twitter Secret Manager Google Sheets Kom-pal API Firebase Invoker Compute Storage UI KompalWeatherのアーキテクチャー
 1 watch 2 fetch status 3 save status 4 post status change

Slide 27

Slide 27 text

Google Sheets
 ● メールアドレスだけでデータ共有
 ○ CSVエクスポート機能実装不要
 ● 簡易な分析・グラフ化が楽
 ● GCPのサービスアカウントに対しても編集権限付与可能
 ○ Cloud RunからRead/Write


Slide 28

Slide 28 text

Cloud Run Cloud Run App Engine Monitoring Cloud Storage Logging Cloud Scheduler Slack Twitter Secret Manager Google Sheets Kom-pal API Firebase Invoker Compute Storage UI KompalWeatherのアーキテクチャー


Slide 29

Slide 29 text

Cloud Monitoring
 ● 監視ではなく、カスタムメトリクスを混雑状況の可視化に利用
 ● 画像データもダウンロード可能
 ○ APIはない


Slide 30

Slide 30 text

Cloud Monitoring


Slide 31

Slide 31 text

Managed UI?
 ● UI作るの得意なら何か自分で実装したかもしれない
 ● データを準備すれば、「日常」「手元」に届けてくれるサービスもたくさ んある


Slide 32

Slide 32 text

CI/CD
 ● masterブランチへのマージをトリガーにコンテナイメージビルド、 Google Container Registryへのプッシュ、Cloud Runへのデプロイを 実行
 ● Cloud Runサービス設定時にリポジトリ、Dockerfileへのパス、トリ ガーを指定するだけで設定可能
 ○ buildpacksを使ったDockerfileなしのデプロイも対応
 ● CI/CD用の強めの権限を持たせたサービスアカウントファイルのダ ウンロード不要
 ※https://cloud.google.com/run/docs/continuous-deployment-with-cloud-build buildpacks日本語ページ未反映

Slide 33

Slide 33 text

Cloud Runとエコシステム
 ● プロダクトとして
 ○ ブルーグリーンデプロイ、トラフィックスプリット、カスタムドメイ ン、gPRC(unary)
 ● アーキテクチャの一部として
 ○ Scheduler、Events、Workflows、Cloud SQL, etc
 ○ Serverless NEG、VPC接続(Shared含む)
 ● 開発のライフサイクル
 ○ ローカル開発(Cloud Code for VS Code、IntelliJ)
 ○ CI/CD
 ※https://cloud.google.com/run/docs/release-notes

Slide 34

Slide 34 text

案内
 Cloud Runをもっと知りたい!
 ● 入門ハンズオン
 ○ https://cloud.google.com/run/docs/quickstarts
 ● ドキュメント
 ○ https://cloud.google.com/run
 ● もっと!
 ○ https://github.com/steren/awesome-cloudrun
 ○ https://github.com/ahmetb/cloud-run-faq


Slide 35

Slide 35 text

案内
 金春湯でととのいたい!
 ● サイト
 ○ https://kom-pal.com/
 ● Twitter
 ○ https://twitter.com/kompal_osaki
 ● 評判は?
 ○ https://sauna-ikitai.com/saunas/2027


Slide 36

Slide 36 text

案内
 KompalWeatherの実装を知りたい!
 ● GitHub
 ○ https://github.com/toshi0607/KompalWeather
 ● Twitter
 ○ https://twitter.com/KompalWeather
 ● 質問・要望があればどうぞ!
 ○ https://twitter.com/toshi0607


Slide 37

Slide 37 text

ご清聴ありがとうございました!
 KompalWeather: Serverless Sauna Service with Cloud Run