App Engine
App Engine は Google の PaaS 。
1. コンセプト
- スタンダード環境
- VPC 外 のサンドボックス内で実行される
- VPC に接続するには サーバーレス VPC アクセス を介する必要がる
- スケールアウト・インに対応( 0 台までスケールインできる)
- VPC 外 のサンドボックス内で実行される
- フレキシブル環境
- VPC 内 の Compute Engine 仮想マシン(VM)上の Docker コンテナ内で実行される
- スケールアップ・ダウンに対応( スケールアウト・インではないので 0 台にはできない)
1 リージョン・マルチゾーン で構成される。
また、 App Engine を作成すると、デフォルトで 単一リージョンの Cloud Storage パケットが作成される。
2. App Engine の作成
- Cloud Build API を有効にする
- App Engine アプリを初期化する
gcloud app create --project=[YOUR_PROJECT_ID]
- ランタイムに対応する コンポーネント をインストール
gcloud components install app-engine-go
- 以下の設定ファイルで App Engine の設定を行う
app.yaml
:オンラインの場合service1.yaml
service2.yaml
といった形でサービス単位で分割管理できる
cron.yaml
:ジョブの場合dispatch.yaml
:ルーティング設定index.yaml
: Datastore の設定
- 各設定ファイルは
gcloud app deploy xxxx.yaml
で適用する gcloud app deploy --no-promote
で新しいバージョンをデプロイしますが、トラフィックが新しいバージョンに自動的にルーティングされない(テストできる)gcloud app logs tail
でログ確認- 新しいバージョンへの トラフィック移行 する場合、以下の方法がある
gcloud app services set-traffic [MY_SERVICE] --splits [MY_VERSION]=1
:トラフィックの即時移行gcloud app services set-traffic [MY_SERVICE] --splits [MY_VERSION]=1 --migrate
:トラフィックの段階的移行
- また、移行だけでなく、A/B Testing など トラフィック分割 も可能
gcloud app services set-traffic [MY_SERVICE] --splits [MY_VERSION1]=[VERSION1_WEIGHT],[MY_VERSION2]=[VERSION2_WEIGHT] --split-by [IP_OR_COOKIE]
3. スケーリングタイプ
スケーリングタイプ は以下の 3 種類ある。
- 自動スケーリング
- リクエスト率、レスポンスのレイテンシなどのアプリケーションの指標に基づいてインスタンスを作成
- それぞれの指標のしきい値、および常時稼働する最小数のインスタンスを指定できる
- 基本スケーリング
- アプリケーションがリクエストを受信したときに、インスタンスが作成される
- 各インスタンスは、アプリケーションがアイドル状態になるとシャットダウン
- 断続的な処理やユーザーのアクティビティに応じて動作する処理に適している
- 手動スケーリング
- 負荷レベルに関係なく、常に実行されるインスタンスの数を指定
- 複雑な初期化などのタスクや、時間の経過に伴うメモリの状態に依存するアプリケーションが実行できるようになる