App Engine スタンダード環境ユーザーのための App Engine フレキシブル環境

このガイドでは、スタンダード環境に慣れているユーザーのためにフレキシブル環境を紹介します。それぞれの環境の類似点と重要な相違点を説明し、両方の環境を使用するアプリケーションにおすすめの一般的なアーキテクチャを紹介します。

スタンダード環境で使用可能なサービスをフレキシブル環境の類似サービスにマッピングするには、スタンダード環境からフレキシブル環境へのサービスの移行をご覧ください。

類似点と重要な相違点

App Engine のデプロイ、サービス、スケーリング インフラストラクチャは、両方の環境で提供されます。重要な違いは、環境がアプリケーションを実行する方法、アプリケーションが外部サービスにアクセスする方法、アプリケーションをローカルで実行する方法、アプリケーションのスケーリング方法です。これらの違いの概要については、環境を選択するでも確認できます。

アプリケーションの実行

スタンダード環境では、アプリケーションはサンドボックス内の軽量なインスタンス上で実行されます。このサンドボックスでは、アプリケーションにできることが制限されます。例えば、アプリケーションはディスクに書き込んだり、ホワイトリストに登録されていないバイナリ ライブラリを使用したりすることはできません。またスタンダード環境では、アプリケーションで使用できる CPU とメモリ量のオプションが制限されます。これらの制限のため、App Engine スタンダード アプリケーションのほとんどは HTTP リクエストに素早く応答するステートレス ウェブ アプリケーションとなる傾向があります。

対照的に、フレキシブル環境ではアプリケーションは制限の少ない Google Compute Engine 仮想マシン(VM)上の Docker コンテナで実行されます。例えば、任意のプログラミング言語の使用、ディスクへの書き込み、任意のライブラリの使用、さらに複数プロセスの実行が可能です。またフレキシブル環境では、インスタンスに対して任意の Compute Engine マシンタイプを選択して、アプリケーションがより多くのメモリと CPU にアクセスできるようにすることができます。

外部サービスにアクセスする

スタンダード環境では、アプリケーションは通常、組み込みの google.appengine API を介して Cloud Datastore などのサービスにアクセスします。しかし、フレキシブル環境ではこうした API を使用できません。代わりに、Google Cloud クライアント ライブラリを使用します。これらのクライアント ライブラリはどこでも使用できるので、アプリケーションのポータビリティが高まります。必要であれば、フレキシブル環境で実行されるアプリケーションは通常、大きな変更を加えずに Google Kubernetes EngineCompute Engine で実行できます。

ローカルでの開発

スタンダード環境では通常、アプリケーションを App Engine SDK を使用してローカルで実行します。SDK がアプリケーションの実行を処理し、App Engine サービスをエミュレートします。フレキシブル環境では、アプリケーションの実行に SDK は使用されません。代わりに、フレキシブル環境向けのアプリケーションは、どこででも実行できる標準的なウェブ アプリケーションとして記述する必要があります。前述のように、フレキシブル環境ではアプリケーションは Docker コンテナで実行されるだけです。つまり、ローカルでアプリケーションをテストするには、アプリケーションを直接実行することになります例えば、Django を使用して Python アプリケーションを実行するには、python manage.py runserver を実行すればよいのです。

もう一つの重要な違いとして、ローカルで実行されるフレキシブル環境のアプリケーションは、Cloud Datastore などの実際の Cloud Platform サービスを使用します。ローカルでのテストには別のプロジェクトを使用し、可能な場合にはエミュレータを使用してください。

スケーリングの特徴

どちらの環境も App Engine の自動スケーリング インフラストラクチャを使用しますが、スケーリングの方法は異なります。スタンダード環境では 0 個のインスタンスから数千のインスタンスまで素早くスケーリングすることができます。対照的に、フレキシブル環境では実行中のアプリケーションのインスタンスが少なくとも 1 つなければならず、トラフィックに応じてスケーリングするのに時間がかかる場合があります。

フレキシブル環境を使用すべき場合

フレキシブル環境は、スタンダード環境を補完することを目的としています。既存のアプリケーションをスタンダード環境で実行している場合、アプリケーション全体をフレキシブル環境に移行することは、通常必要ありません。そうではなく、アプリケーションの中で、より多くの CPU やメモリ、特殊なサードパーティ ライブラリやプログラムを必要とする部分や、スタンダード環境では不可能な動作を必要とする部分を見極めてください。アプリケーションにそのような部分があったら、その部分だけをフレキシブル環境を使用して処理する小さな App Engine サービスを作成します。スタンダード環境で実行されている既存のサービスは、HTTP、Cloud Tasks(ベータ版)、Cloud Pub/Sub を使用して他のサービスを呼び出すことができます。

たとえば、スタンダード環境で実行中の既存のウェブ アプリケーションがある場合に、ファイルを PDF に変換する新しい機能を追加するには、フレキシブル環境で実行され、PDF への変換のみを処理する別個のマイクロサービスを作成することができます。このマイクロサービスは、1 つか 2 つのリクエスト ハンドラだけが含まれたシンプルなプログラムにすることができます。このマイクロサービスでは、unoconv など、変換に利用できる任意の Linux プログラムをインストールして使用することができます。

メイン アプリケーションはスタンダード環境に残り、HTTP によって直接このマイクロサービスを呼び出すことができます。また、変換に長い時間がかかることが予想される場合は、アプリケーションで Cloud Tasks(ベータ版)または Cloud Pub/Sub を使用して、リクエストをキューに入れることができます。

次のステップ

スタンダード環境でアプリが使用するサービスをフレキシブル環境の類似サービスにマッピングする

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Go の App Engine フレキシブル環境