テックまとめ

App Engine

App Engine は Google の PaaS 。

  1. コンセプト
  2. App Engine の作成
  3. スケールリングタイプ

1. コンセプト

  • スタンダード環境
    • VPC 外 のサンドボックス内で実行される
    • スケールアウト・インに対応( 0 台までスケールインできる)
  • フレキシブル環境
    • 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 種類ある。

  • 自動スケーリング
    • リクエスト率、レスポンスのレイテンシなどのアプリケーションの指標に基づいてインスタンスを作成
    • それぞれの指標のしきい値、および常時稼働する最小数のインスタンスを指定できる
  • 基本スケーリング
    • アプリケーションがリクエストを受信したときに、インスタンスが作成される
    • 各インスタンスは、アプリケーションがアイドル状態になるとシャットダウン
    • 断続的な処理やユーザーのアクティビティに応じて動作する処理に適している
  • 手動スケーリング
    • 負荷レベルに関係なく、常に実行されるインスタンスの数を指定
    • 複雑な初期化などのタスクや、時間の経過に伴うメモリの状態に依存するアプリケーションが実行できるようになる