バックエンドからサービスへの変換

Backend API は 2014 年 3 月 13 日をもって非推奨となっており、2019 年 3 月 13 日に終了します。デベロッパーはすべてのバックエンド インスタンスをサービスに移行する必要があります。移行しないと、インスタンスを管理できなくなり、トラフィックの処理が停止されます。

App Engine の基本的な構造は、1 つのフロントエンド インスタンスにオプションのバックエンド インスタンスが付属する形をベースにしています。バックエンドを使用するアプリケーションでは、バックエンドをサービス形式に変換することにより、そのサービスが提供する付加的な機能(バックエンドのバージョン管理など)を十分に活用できます。

App Engine は既存のバックエンドを、デフォルトではない新しいバージョンのデフォルト サービスとして自動的に実行します。常駐バックエンドには手動スケーリングが、ダイナミック バックエンドには基本スケーリングが割り当てられます。

バックエンド インスタンスは、バージョン付けされ、明示的なスケーリング タイプとインスタンス クラスを持つ名前付きのサービスに変換できます。元の backends.xml ファイルを複数の WAR ファイル(サービスごとに 1 つのファイル)に置き換える必要があります。以下の手順を行います。

  1. 最上位の EAR ディレクトリを作成します。
  2. EAR ディレクトリに META-INF サブディレクトリを作成して、そこに appengine-application.xml ファイルと application.xml ファイルを配置します。
  3. サービス宣言要素を application.xml ファイルに追加します。
  4. アプリの各サービス(デフォルト サービスを含む)に対して EAR ディレクトリのサブディレクトリを 1 つずつ作成します。通例、各サブディレクトリの名前は対応するサービスの名前と同じにします。
  5. 元の WAR ディレクトリのコンテンツを各サブディレクトリにコピーします。元の WAR ディレクトリには WEB-INF という名前のサブディレクトリがあります。そのディレクトリを新しく作成した各サブディレクトリにコピーします。
  6. 各サブディレクトリの appengine-web.xml ファイルで、サービス名、スケーリング、インスタンス クラスなどの設定にサービス構成要素を追加します。
  7. cron.xmldispatch.xmldos.xml などのアプリケーション構成ファイルは、デフォルトのサービス サブディレクトリにのみ配置します。それ以外のすべてのサービス サブディレクトリから、これらのファイルを削除します。

一例として、3 つのバックエンド(memdbworkercmdline)を定義するファイル example/backends.xml を以下に示します。

<backends>
 <backend name="memdb">
   <class>B8</class>
   <instances>5</instances>
 </backend>
 <backend name="worker">
   <options>
     <fail-fast>true</fail-fast>
   </options>
 </backend>
 <backend name="cmdline">
   <options>
     <dynamic>true</dynamic>
   </options>
 </backend>
</backends>

これらのバックエンドをサービスに変換するには、まず「ear」という新しい EAR ディレクトリが作成されていることが前提となります。ファイル ear/META- INF/application.xml 内でバックエンドをサービスとして宣言します。このファイルがデフォルト サービスも宣言することに注意してください。

<?xml version="1.0" encoding="UTF-8"?>
<application
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/application_5.xsd"
  version="5">

  <description>Demo Application</description>
  <display-name>My Java App</display-name>

  <!-- Default Module -->
  <module>
    <web>
      <web-uri>default</web-uri>
      <context-root>defaultcontextroot</context-root>
    </web>
  </module>
  <!-- Other Modules -->
  <module>
    <web>
      <web-uri>memdb</web-uri>
      <context-root>memdb</context-root>
    </web>
  </module>
  <module>
    <web>
      <web-uri>worker</web-uri>
      <context-root>worker</context-root>
    </web>
  </module>
  <module>
    <web>
      <web-uri>cmdline</web-uri>
      <context-root>cmdline</context-root>
    </web>
  </module>
</application>

各サービスの構成は、対応するサブディレクトリにある個別の appengine-web.xml ファイルで記述します。ear/memdb/WEB-INF/appengine-web.xml では、次のようになります。

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>my-java-app</application>
  <module>memdb</module>
  <version>uno</version>
  <threadsafe>true</true>
  <instance-class>F4</instance-class>
  <manual-scaling>
    <instances>5</instances>
  </manual-scaling>
</appengine-web-app>

ear/worker/WEB-INF/appengine-web.xml では、次のようになります。

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>my-java-app</application>
  <module>worker</module>
  <version>uno</version>
  <threadsafe>true</threadsafe>
   <!-- For failfast functionality, please use the ‘X-AppEngine-FailFast’ header on requests made to this module. -->
  <instance-class>F2</instance-class>
  <manual-scaling>
    <instances>5</instances>
  </manual-scaling>
</appengine-web-app>

ear/cmdline/WEB-INF/appengine-web.xml では、次のようになります。

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>my-java-app</application>
  <module>cmdline</module>
  <version>uno</version>
  <threadsafe>true</threadsafe>
  <instance-class>F2</instance-class>
  <basic-scaling>
    <max-instances>10</max-instances>
  </basic-scaling>
</appengine-web-app>
このページは役立ちましたか?評価をお願いいたします。

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

Java の App Engine スタンダード環境