概要
G.I.Gプログラムの第1回セッションに参加したので、そこでの学びを簡単にまとめます。
G.I.Gとは
G.I.GとはGoogle Cloud Innovators Gymの略称で、Google Cloudに詳しい人になり、プロジェクトなどでGoogle Cloudの活用を推進することを目指すものです。
充実したプログラム
G.I.Gが提供しているのは以下の通りです。
- セッション3回
- もくもく会
- Courseraプログラム
Courseraコースは、各資格に合わせて編成され、日本語版も提供されています。
すごいですね。
ハンズオン
今回は、第1回セッションで実施されたハンズオンについてまとめます。
ハンズオンでは主に「スケーリング」と「トラフィック」に関することを学びました。
スケーリング
ハンズオンでは、インスタンス数をビジュアライズするツールをWebアプリケーションとしてデプロイし、どのようにスケーリングされているかを表現しました。
gcloud run deploy metrics-writer \
--concurrency 1 \
--allow-unauthenticated \
--image \
asia-northeast1-docker.pkg.dev/gig6-1/gig6-1/metrics-writer:latest
最初のコンカレンシーを1に設定した状態で、大量のリクエストを送信すると以下のようになります。
コンカレンシーが設定されていないため、リクエストが大量に送信されるとその分だけインスタンスが増えます。
これに対して、コンカレンシーを設定すると以下のようになります。
gcloud run services update \
metrics-writer --concurrency 5
インスタンス数がだいぶ減ります。
1つのCloud Runで捌けるリクエスト数が変わるのでインスタンスの個数が変わります。
更にそれに対してmaxのインスタンス数を設定します。
gcloud run services update \
metrics-writer --max-instances 5
するとスケーリングされても最大インスタンスが5個になります。
設定1つでここまでスケーリングを自由に扱えるのすごいな...
トラフィック
続いてトラフィックの流す割合を調整しました
このコマンドで新しい Cloud Run インスタンスを作成し、トラフィックの流れる先として10%設定しました。そして、次のコマンドで元のインスタンスのトラフィック割合を変更して、新しいインスタンスに10%のトラフィックが流れるようにしました。
もとは1つのCloud Runに100%トラフィックを流していたのですが、もう一つCloud Runを立ち上げてそれに10%流すように設定します。
gcloud run services update-traffic \
metrics-writer --to-tags \
green=10
すると、グラフのように一定の割合でそちらにもトラフィックが流されているのがわかります。
次に50%ずつ振り分けるようにしてみましょう。
gcloud run services update-traffic \
metrics-writer --to-tags \
green=50
すると、最初は立ち上がりに差がありますが途中から50%づつになっているのがわかるかと思います。
A/Bテストとかとってもしやすそう。
感想
この手のハンズオンはめちゃくちゃシンプルなCRUD形式のアプリを動かしがちだったりするが、そうではなくてインスタンス数をビジュアライズしたものを動かしたりするのはとても面白かったし、効果がとてもわかりやすかった。
Cloud Runとても使いやすそうなので今度何かデプロイする時とか使ってみたい。