Convierte backends en servicios

La API de Backend es obsoleta desde el 13 de marzo de 2014 y se dará de baja el 13 de marzo de 2019. Se solicita a los desarrolladores migrar todas las instancias de backend a Servicios, de lo contrario, las instancias no se podrán administrar y dejarán de entregar tráfico.

La arquitectura original de App Engine se basa sobre una sola instancia de frontend con instancias opcionales de backend. Si tienes una aplicación que usa backends, tal vez los quieras convertir en un formato de servicio y así sacar mayor ventaja de la funcionalidad adicional que ofrecen los servicios, como la habilidad de control de versiones de backends.

App Engine ejecuta de manera automática un backend existente como una versión nueva y no predeterminada del servicio predeterminado. A los backends residentes se les asigna escalamiento manual y, a los backends dinámicos, escalamiento básico.

Puedes convertir las instancias de backend en los servicios mencionados con versión y que tienen un tipo de escalamiento explícito y clases de instancias. Debes reemplazar el archivo backends.xml original con varios archivos WAR, uno para cada servicio. El procedimiento es como se describe a continuación:

  1. Crea un directorio EAR de nivel superior.
  2. Crea un subdirectorio META-INF en el directorio EAR que contenga un archivo appengine-application.xml y un archivo application.xml.
  3. Agrega elementos de declaración de servicio al archivo application.xml.
  4. Crea un subdirectorio en el directorio EAR para cada servicio de la app, incluido el predeterminado. Por convención, cada subdirectorio tiene el mismo nombre que el servicio que lo define.
  5. Copia los contenidos del directorio WAR original dentro de cada subdirectorio. El WAR original debe tener un subdirectorio llamado WEB-INF. Cada subdirectorio nuevo debe tener su copia propia de ese directorio.
  6. Agrega elementos de servicio de configuración a los archivos appengine-web.xml en cada subdirectorio a las configuraciones como el nombre del servicio, escalamiento o clase de instancia.
  7. Los archivos de configuración de la aplicación, como cron.xml, dispatch.xml, o dos.xml, se deben incluir solo en el subdirectorio del servicio predeterminado. Quita estos archivos de todos los otros subdirectorios de servicios.

Por ejemplo, a continuación tenemos un archivo example/backends.xml que define tres backends (memdb, worker, y 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>

Para convertir estos backends en servicios, primero supongamos que creaste un nuevo directorio EAR llamado "ear". Declara a los backends como servicios en el archivo ear/META- INF/application.xml. Ten en cuenta que este archivo también declara al servicio predeterminado:

<?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 configuración para cada servicio se escribe en un archivo appengine-web.xml por separado, dentro del subdirectorio correspondiente. En 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>

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

En 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>
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Java 8