App Engine 環境の選択

フレキシブル環境またはスタンダード環境を使用して、App Engine でアプリケーションを実行できます。また、アプリケーションに両方の環境を同時に使用するよう選択することもできます。これにより、お使いのサービスで各環境の個々の利点を活用できるようになります。

App Engine 環境

App Engine は、特に両方の環境を利用することにした場合、マイクロサービス アーキテクチャを使用するように設計されているアプリケーションにとても適しています。次のセクションを通して、どちらの環境がアプリケーションのニーズに適しているかを知り、理解を深めてください。

スタンダード環境を選択する場合

アプリケーション インスタンスは、次に示すサポートされている言語のランタイム環境を使用して、サンドボックス内で実行されます。

迅速なスケーリングに対処する必要があるアプリケーション。

スタンダード環境は、次の特性を持つアプリケーションに適しています。

  • ソースコードが、サポートされているプログラミング言語の特定のバージョンで記述されている。
    • Python 2.7、Python 3.7、Python 3.8
    • Java 8、Java 11
    • Node.js 8、Node.js 10、Node.js 12
    • PHP 5.5、PHP 7.2、PHP 7.3、PHP 7.4(ベータ版)
    • Ruby 2.5、Ruby 2.6(ベータ版)、Ruby 2.7(ベータ版)
    • Go 1.11、Go 1.12、Go 1.13、Go 1.14
  • 無駄な投資を抑え、無料または低コストで運用することを目的としている。 たとえばトラフィックがない場合、アプリケーションを 0 インスタンスにスケーリングできます。
  • 即時のスケーリングを必要とする、トラフィックの突然かつ急激な増加がある。

フレキシブル環境を選択する場合

アプリケーション インスタンスは、Compute Engine 仮想マシン(VM)上の Docker コンテナ内で実行されます。

一定したトラフィックを受信する、定期的にトラフィックの変動がある、または徐々にスケールアップやスケールダウンするパラメータを満たすアプリケーション。

フレキシブル環境は、次の特性を持つアプリケーションに適しています。

  • ソースコードが、次のサポートされているプログラミング言語のいずれかのバージョンで記述されている。
    PythonJavaNode.jsGoRubyPHP.NET
  • 他のプログラミング言語で書かれたカスタム ランタイムやソースコードを含む、Docker コンテナで実行する。
  • ネイティブ コードを含むフレームワークを使用するか、それに依存する。
  • Compute Engine ネットワークにある Google Cloud プロジェクトのリソースまたはサービスにアクセスします。

機能の概要の比較

次の表は、2 つの環境の違いをまとめたものです。

機能 スタンダード環境 フレキシブル環境
インスタンスの起動時間
リクエストの最大タイムアウト ランタイムとスケーリングのタイプによって異なります。 60 分
バックグラウンド スレッド ○(制限付き)
バックグラウンド プロセス ×
SSH デバッグ ×
スケーリング 手動、基本、自動 手動、自動
ゼロにスケーリング ×(最小 1 インスタンス)
ローカル ディスクへの書き込み
  • Java 8、Java 11、Node.js、Python 3、PHP 7、Ruby、Go 1.11、Go 1.12 以降には、/tmp ディレクトリに対する読み取り / 書き込みアクセス権が付与されています。
  • Python 2.7 と PHP 5.5 にはディスクに対する書き込みアクセス権がありません。
○(エフェメラル、各 VM の起動時に初期化されたディスク)
ランタイムの変更 × ○(Dockerfile 経由)
デプロイ時間
セキュリティ パッチの自動適用 ○(コンテナ イメージ ランタイムを除く)
Cloud StorageCloud SQLMemorystoreTasks などの Google Cloud API とサービスへのアクセス。
WebSocket ×
Java 8、Python 2、PHP 5 には独自の Sockets API(ベータ版)が用意されていますが、API は新しい標準ランタイムでは使用できません。
サードパーティ バイナリのインストール サポート
  • ○: Java 8、Java 11、Node.js、Python 3、PHP 7、Ruby 2.5(ベータ版)、Go 1.11、Go 1.12 以降。
  • ×: Python 2.7、PHP 5.5。
ロケーション 北米、アジア太平洋、ヨーロッパ 北米、アジア太平洋、ヨーロッパ
料金 インスタンス時間に基づく vCPU、メモリ、永続ディスクの使用量に基づく

環境の詳細な比較については、PythonJavaGo、または PHP のご使用の言語によるガイドをご覧ください。

フレキシブル環境と Compute Engine の比較

App Engine フレキシブル環境には、Compute Engine との間に次のような違いがあります。

  • フレキシブル環境の VM インスタンスは毎週再起動します。再起動中に、Google の管理サービスがオペレーティング システムとセキュリティの更新を適用します。

  • Compute Engine VM インスタンスにはルート権限でアクセスできます。デフォルトでは、フレキシブル環境の VM インスタンスへの SSH アクセスは無効になっています。アプリの VM インスタンスに対するルートアクセスを有効にすることもできます。

  • Cloud Build サービスを使用してコンテナ イメージを構築すると、コードのデプロイに時間がかかる可能性があります。

  • フレキシブル環境の VM インスタンスの地理的なリージョンは、Cloud プロジェクトの App Engine アプリケーションに指定した場所によって決まります。Google の管理サービスは、VM インスタンスを同じ場所に配置して最適なパフォーマンスを得られるようにします。

スタンダード環境からフレキシブル環境への移行

スタンダード環境で実行しているアプリケーションがある場合、サービスの一部をフレキシブル環境に移行することができます。詳細については、PythonJavaGoPHP のドキュメントをご覧ください。

特定のサービスを移行するには、PythonJavaGoPHP の手順をご覧ください。