GAE
hiroki.icon個人開発で運用を楽にするためにも割とありな選択かも
結構使ってみたい欲が高まっている
メモ
GAE にはアプリケーションやサービスという概念がありますが、これが大変わかりづらいものになっています。これはおそらく、GCP ができる前に GAE が存在したことに起因します。
GAE アプリケーションはプロジェクトにつき1つだけ (有効にするか無効にするかのいずれか)
GAE アプリケーションのリージョンは一度設定すると変更できない。GAE アプリケーションは削除はできない。無効化はできるが、データは残り、有効化すると元通り。つまりデータの完全削除が難しい。
コマンド
deploy
$ gcloud app deploy app.yml --version=version-latest --image-url=us-docker.pkg.dev/cloudrun/container/hello@sha256:e9cad8c3f185bc7ef07d976e8f260e94de0d954bf25f91a992f6445c8abc0940
サービス系
$ gcloud app services list
$ gcloud app services delete <サービス名> --version <バージョン>
最新バージョンは消せない
バージョン系
$ gcloud app versions list
$ gcloud app versions delete <バージョン> --service <サービス名>
インスタンス系
$ gcloud app instances list
$ gcloud app instances delete <インスタンスID> --service <サービス名> --version <バージョン>
概念
アプリケーション
gcpプロジェクト一つにつき一アプリケーション
サービス
バージョン
インスタンス
https://gyazo.com/71756a68c5c2a7ea832c0a0b5c36ed18
環境
スタンダード環境
特定のプログラミング言語の特定のバージョン
トラフィックがない場合0インスタンス(ゼロスケールできる)になる→低コスト
/icons/good.icon突然のスパイクでも大丈夫
VPC外のリソース
フレキシブル環境
徐々にスケールアップ、スケールダウンするのであれば対応できる
最小1インスタンス→ゼロスケールはできない
VPC内のリソース
インスタンスを削除するには?
バージョンから削除する
サービスとバージョンが同じであるインスタンスはすべて、同じ状態を共有します。インスタンスの状態を変更するには、バージョンを管理します。
entrypointを上書きしていい感じのヘルスチェックエンドポイントをつくる
ruby -rwebrick -e 'server = WEBrick::HTTPServer.new(:Port => 8080); %w[/readiness_check /liveness_check].each { |path| server.mount_proc(path) { |req, res| res.body = "OK" } }; trap("INT"){ server.shutdown }; server.start'
その他
トラフィックの分割機能がある→A/Bテストとか
Cron Job
hiroki.iconCloud Schedulerの裏ではGAEが使われているってことなのかなぁ
参照