Convertir des backends en services

L'API Backend est obsolète depuis le 13 mars 2014 et sera arrêtée le 13 mars 2019. Les développeurs sont tenus de migrer toutes les instances backend vers les services. Dans le cas contraire, les instances ne seront plus gérables et cesseront de diffuser le trafic.

L'architecture App Engine d'origine repose sur une seule instance frontend et des instances backend facultatives. Si vous avez une application qui utilise des backends, vous souhaiterez peut-être convertir les backends en un format de service afin de tirer pleinement parti des fonctionnalités supplémentaires offertes par les services, comme la possibilité de créer des versions de backends.

App Engine exécute automatiquement un backend existant en tant que nouvelle version, autre que celle de base, du service par défaut. Les backends résidents se voient attribuer un scaling manuel, et les backends dynamiques bénéficient d'un scaling de base.

Vous pouvez convertir des instances backend en services nommés qui disposent de versions gérées et sont dotés de classes d'instance et de type de scaling explicites. Vous devez remplacer le fichier original backends.xml par plusieurs fichiers WAR, un pour chaque service. Voici la procédure à suivre :

  1. Créez un répertoire EAR de premier niveau.
  2. Créez un sous-répertoire META-INF dans le répertoire EAR contenant un fichier appengine-application.xml et un fichier application.xml.
  3. Ajoutez des éléments de déclaration de service au fichier application.xml.
  4. Créez un sous-répertoire dans le répertoire EAR pour chaque service de l'application, y compris le service par défaut. Par convention, chaque sous-répertoire a le même nom que le service qu'il définit.
  5. Copiez le contenu du répertoire d'origine WAR dans chaque sous-répertoire. Le répertoire d'origine WAR doit avoir un sous-répertoire nommé WEB-INF. Chaque nouveau sous-répertoire doit avoir sa propre copie de ce répertoire.
  6. Ajoutez des éléments de configuration de service dans les paramètres des fichiers appengine-web.xml dans chaque sous-répertoire tels que le nom du service, le scaling ou la classe d'instance.
  7. Les fichiers de configuration d'application, tels que cron.xml, dispatch.xml ou dos.xml, ne doivent être inclus que dans le sous-répertoire de service par défaut. Supprimez ces fichiers de tous les autres sous-répertoires de service.

Par exemple, voici un fichier example/backends.xml qui définit trois backends (memdb , worker et cmdline) :

<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>

Pour convertir ces backends en services, supposons d’abord que vous ayez créé un nouveau répertoire EAR appelé "ear". Déclarez les backends en tant que services dans le fichier ear/META- INF/application.xml. Notez que ce fichier déclare également le service par défaut :

<?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>

La configuration de chaque service est écrite dans un fichier appengine-web.xml distinct, situé dans le sous-répertoire correspondant. Dans 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>

Dans 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>

Dans 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>
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement standard App Engine pour Java