GAE Flexible Environment(以下FE)のGA(General Availability)リリースがGoogle Nextで正式発表されました!今まではベータ版でロケーションもUSしか指定出来ませんでしたがついにAsia Pacific(東京)も利用できるようになります!旧MVMs時代から中々GAにならないので心配していましたが、ついにこの時を迎えることが出来ました!!というわけで今回はGAリリース記念に、Google公式のチュートリアルページを参考にGAE FEにアプリのデプロイをおこなってみます!!
目次
Flexible Environmentは自由度の高いGAE環境!!
チュートリアルを試してみる前に、まずはFEとStandard Environment(以下SE)の違いを確認します。以下表はGoogle公式ページに記載されているスタンダード環境とフレキシブル環境の違いです。注目すべきは「ロケーション」です。前述した通りこれまでFEでは「North America」しか選択できませんでしたが「Asia Pacific」も選択できるようになっています。また、リクエストの最大タイムアウト時間やファイルシステム等、GAE SEよりも制限が軽くなっています。GAE FEはGAE SEと比べより自由度の高いGAE環境と言えます。
Standard Environment | Flexible Environment | |
インスタンスの起動時間 | ミリ秒 | 分 |
リクエストの最大タイムアウト | 60 秒 | 60 分 |
バックグラウンド スレッド | ○(制限付き) | ○ |
バックグラウンド プロセス | × | ○ |
SSH デバッグ | × | ○ |
スケーリング | Manual, Basic, Automatic | Manual, Automatic |
ローカル ディスクへの書き込み | × | ○(エフェメラル、各 VM の起動時に初期化されたディスク) |
カスタマイズ可能な処理スタック | × | ○(Dockerfile のカスタマイズで構築) |
セキュリティ パッチの自動適用 | ○ | ○ |
ネットワーク アクセス | App Engine サービス経由のみ(アウトバウンド ソケットを含む) | ○ |
サードパーティ バイナリのインストール サポート | × | ○ |
ロケーション | North America, Asia Pacific, or Europe | North America or Asia Pacific |
料金 | インスタンス時間に基づく | vCPU、メモリ、永続ディスクの使用量に基づく |
ランタイムの種類
GAEではStandard EnvironmentとFlexible Environmentでは利用できるランタイムが異なります。以下表はそれぞれの環境で利用可能なランタイムの一覧です。Flexible Environmentの方が多くのランタイムを利用できることがわかります。また、Dockerファイルによってそれ以外のランタイムを利用することも可能です。
言語 | Standard Environment | Flexible Environment |
Python | Python 2.7 | Python 2.7/3.5 |
Java | Java 7 | Java8 |
PHP | PHP 5 | PHP 5/7 |
GO | GO | GO |
Node.js | – | Node.js |
Ruby | – | Ruby |
.NET | – | .NET |
その他 | – | カスタムランタイム |
とにかく動作させてみる!!
Google公式のFlexible Environmentのクイックスタートのページを参考にアプリのデプロイを行ってみましょう!動作させるランタイムはGOです!
GCPプロジェクト作成&操作ツールの導入
まずはGCPプロジェクトの作成とGCP操作ツール(GAEデプロイツール含む)のインストールをおこないます。
(1) GCPのクラウドコンソールにアクセスし、GCPプロジェクトを作成します。
※GCPプロジェクトを作成したことがない場合は以下のURLを参考にしてください。
初心者のためのGCPプロジェクト始め方入門
https://apps-gcp-tokyo.appspot.com/gcp-startup/
(2) (1)で作成したプロジェクトの管理ページに遷移後、課金設定の有効化とGAEのロケーション決定を行います。
(3) Google Cloud SDKのインストールを行います。
※Google Cloud SDKのインストール方法は以下のGoogle公式ページを参考にしてください。
Google Cloud SDK ドキュメント
https://cloud.google.com/sdk/docs/
(4) gaeデプロイツールのaedeployをインストールします。
go get google.golang.org/appengine/cmd/aedeploy
ここまでの設定でGAEのデプロイが実行できるようになります。次はGoogle公式のクイックスタート通り、サンプルプログラムをダウンロードします。
サンプルコードのダウンロード&ローカル環境での実行
サンプルコードをGCP公式のgithubレポジトリからダウンロードしローカル環境で実行してみます。
(1)サンプルコードのダウンロードをおこないます。
go get -u -d github.com/GoogleCloudPlatform/golang-samples/appengine_flexible/helloworld
(2)サンプルコードのダウンロードフォルダに移動します。
cd $GOPATH/src/github.com/GoogleCloudPlatform/golang-samples/getting-started/helloworld
(3)サンプルコードを実行します
go run *.go
(4)以下URLにブラウザからアクセスします。
(5)以下が表示されれば実行は成功です。
以上でサンプルコードのローカル実行は完了です。次はいよいよGAE FEへのデプロイを実行してみます。
サンプルコードをデプロイする!
本章では、前章でローカル環境で動作させたHello WorldプログラムをGAE FEにデプロイします。
(1)gcloud authコマンドを実行し認証を行います。
gcloud auth login
(2)gcloud configコマンドでプロジェクトの指定を行います。
gcloud config set project myprojectId
(3)以下のコマンドを実行しサンプルコードをデプロイします。
aedeploy gcloud app deploy
(4)以下のURLにアクセスしてください
http://myprojectId.appspot.com
(5)以下が表示されればデプロイは成功です。
まとめ
Flexible Environmentを利用すればより柔軟なGAE環境を構築できることがわかりました。
そして、DockerイメージからGAEのデプロイを行えばランタイムの制限を気にする必要もありません。Flexible EnvironmentのGAリリースにより、今後GAEの利用がさらに広がるのではないでしょうか。
クラウドエースではGAEによる開発のご相談も受け付けております!お気軽にお問い合わせください。