見出し画像

about GAE.

続きです。

GAE Flexの登場

GAEフレキシブル環境はもともとManagedVMsと呼ばれていた、GAEの機能の名称を変えて1つの新しいGAEサービスとして提供したものです。フレキシブル環境ではその名前の通り十何にアプリ環境を構築できます。スタンダード環境に合った次のような制限が取り除かれました。
・プログラミング言語の制限がない
・リクエストのタイムアウトは60分まで延長
・ローカルファイルにアクセス可能
・サードパーティ製ライブラリにすべて対応
・SSH接続によるデバッグ

制限以外にもスタンダード環境とは次の点が異なります。
・使用可能なコンテナランタイムが異なる
・スタンダード環境に比べスピンアップが遅い

この二点について説明します。

コンテナランタイムが異なる

スタンダード環境はランタイム環境がGoogleのインフラ上で提供されていてアプリに必要な環境はすべて用意されています。Webアプリ本体となるインスタンスはGoogle固有のコンテナとして実行されます。
一方でフレキシブル環境はGoogle固有のコンテナは使わず、GCEのVM(仮想マシン)上でDockerとして実行されます。

スタンダード環境に比べスピンアップが遅い

フレキシブル環境ではDockerコンテナをGCEのVM上で実行しますが、残念なことに1つのVM上では1つのコンテナしか稼働できません。そのためGAE FlexアプリのスピンアップはVMの起動→Dockerコンテナの起動→GAE Flexアプリ、といった順番となりVMの起動時間が大きく影響します。
高速なスケーリングが売りのGAEですが、フレキシブル環境では高速に起動できるというコンテナのメリットは失われます。また、1stのようにインスタンスの数が0になることはなく、無料枠もありません。
何でもできるGAE Flexですが、GAEの最大のセールスポイントである高速なスケールアウトというメリットが損なわれた点は悔やまれます。

2018年 GAE2ndの登場

2ndの特徴は
・簡単にスケールできる
・簡単に開発を進めることができる
・フルマネージドサービスである

制限としては
・最新バージョンのプログラミング言語に未対応
・1分以内でのリクエスト処理が必須
・ローカルファイルにアクセスできない
サードパーティ製ライブラリはホワイトリスト方式

2ndは1stの制限の多くを取り除きました。それ以外にも機能強化や、マイクロサービスを意識した実装となりました。

GAE2ndで対応するプログラミング言語とライブラリ

サポートするプログラミング言語が次のように変わりました。
Python3.7
Java8、11
PHP7.2
Node.js10
Go1.11、1.12
Ruby2.5

またサポートするライブラリがホワイトリスト(GAEで使用を承認されたライブラリの一覧)方式から変わり任意のものをサポートするようになりました。これにより使い慣れたライブラリやフレームワークを使用することができます。これによってGAE上で実現できることも大幅に増えました。例えばGAE Python3.7であればNumPy,Pandas,Scilit-learnなどのライブラリを実行できるので学習済みモデルを使ったオンライン予測も可能となりました。

ローカルファイルシステムにアクセス

コンテナのローカルファイルシステムにアクセスできるようになりました。
/tmpというディレクトリファイルを一時的に書き込むことができます。

外部ネットワークへのアクセス

基本的にURL Fetchを使って外部ネットワークにアクセスする必要がありましたがネイティブライブラリのサポートにより使い慣れたライブラリでのアクセスが可能になりました。

クラウドクライアントライブラリ

クライアントライブラリをサポートする用意なりました。これによってすべてのGCPサービスにアクセスできるようになりました。

最後に

現状選択するとしたらよっぽどの限り2nd⇔Flexといった選択になると思います。言語の制約やリクエスト時間などを考慮したうえでどちらにするかの選択が考えられます。ただ、無料枠があるという点において小さなサービスであれば2ndのほうが有用性はあるかと思います。
次はGAE環境の変化に注目していきます。ではまた。


N

私の常日頃の生活をベースに、皆さんの役に立てたり、探しているものを紹介できたらと思っています。今後もよろしくお願いします!