自称フルスタックエンジニアのぶろぐ。

pythonやreactや、gcpやawsなどなどについて書いていこうかと思います。

Google App Engine(GAE) のdeployの話 Part1

Google App Engine(GAE) のdeployの話

GAE とは

Google App Engine (GAE) は、Googleの提供するサービスの1つであり、
ウェブアプリケーションをPHP・Python・Java・Go言語を使用して開発し、
Googleのインフラストラクチャー上で実行し、バージョン管理することができる。
Google Cloud Platformの一部。

※上記wiki抜粋

簡単に言うと、

開発したやつを簡単にデプロイできて、運用管理も楽チンだよ。 バージョン管理もできるし、異なるバージョンを同時に稼働させてABテストなんかもできちゃうんだよ

っという代物です。

GAE standard と flexible

GAEには、standardとflexibleがあります。

違いについてはオフィシャルを参考にしていただいた方が良いかと思います。

僕のpythonで経験した情報と所感を書いて見ます。

standard

pythonは2しか使用できません。 pip install を自分のプロジェクト内に展開しておいて、そのプロジェクト毎deploy(upload)する感じでした。 特に問題なさそうな話ですが、GAE内ですでに入っているパッケージなんかもあり、GAE環境に依存したパッケージの管理が必要になります。 レアケースかもしれませんが、deployしても、ソースの状態が反映されない(バージョンの向き先は最新になっているのに)問題が頻発しました。

flexible

pythonは2も3も指定できます。 pip モジュールは、requirements.txtに記載されているものをインストールしてくれます。 従来の構造のままdeployできる感じで、こちらの方がしっくりきました。 ソースが反映されないような問題にも直面せず、問題なさそうです。

ここからは先は、flexibleを採用したのでflexibleについての記載となります。

GAEのdeploy方法

app.yamlの記入例

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT core.wsgi

# ここの名前を変更する事で、同一のプロジェクト内に、複数のサービスとしてdeployできます。
service: sample-api

runtime_config:
  python_version: 3


beta_settings:
    cloud_sql_instances: [プロジェクト名]:asia-northeast1:[db名]

manual_scaling:
  instances: 2
resources:
  cpu: 2
  memory_gb: 1.4
  disk_size_gb: 10
  • deploy コマンド

gcloudコマンドは、こちらからインストールする必要があります。

gcloud app deploy app.yaml --project [プロジェクト名]

上記コマンドを実行すると、時間はかかりますが簡単にdeploy完了です。




次回は、GAEでバッチ処理なんかについて記載しようと思います。

murabo.hatenablog.com

murabo.hatenablog.com