【メモ】GCPにおいてどのクラウドサーバーを使えばいいのか
背景
とあるアプリを制作するにあたって、色々あってCloudRun上でプログラムを実行する事をオススメされた。でも、CloudRunでとある機能を使おうとした時めっちゃ面倒な事になるのが発覚した。GCPにはCloudRunだけでなくてComputeEngineとかAppEngineとか色々あるみたいなので、各々の特徴を調べてから自分で使うサービスを選定していこうと思う。
どんなサービスがあるん?
主に下記5つのサービスにプログラムをのっけてサーバーとして動かす事が多いらしい。
- Compute Engine
- Kubernetes Engine
- Cloud Run
- App Engine
- Cloud Functions
上記のサービスは上から順に高レイヤーなプログラムを動かすのに向いているらしい。
各サービスの特徴
CloudRun以外はまともに触ってないので間違ってたら許してね・w・
Compute Engine
一言で言うと、自分でマシン構成をある程度自由に組み合わせて作れる「Virtual Machine」
そのVirtualMachineで何をするかは割と自由。自由なだけにやる事が多い(´・ω・`)
Kubernetes Engine
くーばねてすえんじんって読むらしい。
コンテナをデプロイして良い感じに実行してくれる。
実行し続けるサービスに最適らしく、ゲームサーバーとかずっと稼働してないといけないやつに使うらしい。Kubernetesはコンテナの稼働割合が増えてきたらサーバーのメモリとか色々を自動でスケーリングしてくれるらしい。他にも色々特徴があるらしいけどようわからん。
Cloud Run
コンテナをデプロイして良い感じに実行してくれる。
アクセスを受けた時にだけ実行するサービスに最適らしく、WebサイトやAPI、Webhookとかに使うらしい。アクセスが無い時は稼働を終了してくれる。コンテナをデプロイしたらスケーリングとか気にせずに実行してくれる。
ガチで現状使ってる感じはコードを書くのにだけ集中すればいい感じに動いてくれるので楽。(Dockerコンテナの設定とか苦戦したけど)ただ、どうやらパブリックに公開するサービスを前提とした作りになっているらしく、セキュリティの設定とかするのは結構しんどいっぽい。(ロードバランサ経由でIAPを設定する感じ?)
App Engine
サポートしてる言語のソースコードをデプロイすると良い感じに実行してくれる。
スケーラビリティとかを気にせず、ウェブベースのアプリケーションを実行させたい時に使うらしい。
Cloud Functions
何かのイベントに応じて関数を実行させたい時に使う。
Discussion