App Engineについて
App Engineのコンポーネントについて
①App Engineスタンドアプリケーションは、次の4つのコンポーネントから構成されている
・アプリケーション
⇒プロジェクトで作成された上位リソース、App Engineアプリに関連するすべてのリソースはアプリ作成された時に指定したRegion内に作成される。
・サービス
⇒ソースコードと定義ファイルで定義される。このような組み合わせがアプリのバージョンになります。
・バージョン
⇒ソースコードや定義ファイルは少しでも変更すると、別のバージョンが作成される。一度複数のバージョンのアプリケーションを管理することができます。
・インスタンス
以下のイメージで
App Engineのdeployついて
①Cloud shellとCloud SDKを利用して、アプリをデプロイする
・gcloudがApp Engineで動作するような構成を確認する
gcloud components install app-engine-python
上記コマンドでライブラリがインストールまたは更新される。
・以下のHelloWord サンプルアプリを使って、Deployの手順を説明する
・サンプルは以下。
https://github.com/GoogleCloudPlatform/python-docs-samples/tree/main/appengine/standard/hello_world
サンプルには、以下の3ファイルが存在する
・app.yaml
・main.py
・main_test.py
上記のapp.yamlは以下の内容で、アプリの構成を定義したファイルである。
runtime: python27
api_version: 1
threadsafe: true
handlers:- url: /.*
script: main.app
アプリ構成ファイルには、Pythonのバージョン、デプロイしているAPIのバージョン、Pythonのパラメータを指定する
・アプリをDeployするには、以下のコマンドで
gcloud app deploy app.yaml
また、以下のパラメータも任意指定できる
■--version: バージョン指定
■--project: このアプリのプロジェクトIDを指定する
■--no-promote: トラフィックをルーティングせずにアプリをDeployする/br>
・アプリの特定バージョンを停止するには、以下のコマンドで
gcloud app version stop v1 v2
v1とv2を停止する
App Engineのスケーリングついて
①App Engine負荷に基き、必要に応じて自動的にインスタンスを追加または削除することができる。負荷に基づいてインスタンスがスケーリングされる時は、動的インスタンスと呼ばれる。
②常駐または常時実行を継続できる自動的にインスタンスを追加または削除することができる。負荷に基づいてインスタンスがスケーリングされる時は、動的インスタンスと呼ばれる。
・インスタンスは常駐か動的か、構成によって決まる、自動スケーリングまたは基本スケーリングを構成する場合、インスタンスは動的で、手動スケーリングを構成する場合、インスタンスは常駐
・自動スケーリングの場合、app.yamlにautomatic_scalingセクションを追加して、以下の構成オプションのキーと値のベアを指定
・target_cpu_utilization:CPU使用率、追加インスタンスが起動する前の最大CPU使用率を指定する。
・target_throughput_utilization:スループット使用率、追加インスタンスが起動する前、同時リクエストの最大数を指定する。
・max_concurrent_requests:スループット使用率、追加インスタンスが起動する前、同時リクエストの最大数を指定する、既定値は10、最大80。
・max_instances、min_instances:最大及び最小インスタンス数、このアプリで実行できるインスタンス数の範囲を指定する。
・max_pending_latency、min_pending_latency:最大及び最小レイテンシ、キューのリクエストの待機最大時間と最小時間を指定する。
・基本スケーリングの場合、idle_timeout及びmax_instancesのみです
App Engineバージョン間でのトラフィックの分割について
①複数のバージョンのアプリが実行される場合、バージョン間でトラフィックを分割できる
・IPアドレスにより分割
ある程度のトラフィックが固定され、IPアドレスが変わらない限り、常に同じ分割にルーティングされる。
・Http Cookieにより分割
ユーザを複数のバージョンに割り当る時役たち。
・ランダムにより分割
ワークロードを均等に分散させる。