Archivos de configuración

Cada versión de un servicio se define en un archivo .yaml, que proporciona el nombre del servicio y la versión. El archivo YAML suele llevar el mismo nombre que el servicio que define, pero esto no es obligatorio. Si implementas distintas versiones de un servicio, puedes crear varios archivos YAML en el mismo directorio, uno para cada versión.

En general, creas un directorio para cada servicio, que contiene los archivos YAML del servicio y el código fuente asociado. En el directorio principal de la aplicación, se incluyen ciertos archivos de configuración opcional a nivel de la aplicación (dispatch.yaml, cron.yaml, index.yaml y queue.yaml). El siguiente ejemplo muestra tres servicios. En service1 y service2, los archivos fuente están en el mismo nivel que el archivo YAML. En service3, hay archivos YAML para dos versiones.

Grafo de jerarquías de los servicios YAML

En el caso de proyectos pequeños y simples, todos los archivos de la aplicación pueden ubicarse en el mismo directorio.

Grafo de jerarquías de los servicios YAML pequeños

Todos los archivos YAML deben incluir un parámetro de versión. Para definir el servicio predeterminado, puedes incluir el parámetro service: default de forma explícita o dejar el parámetro de servicio fuera del archivo.

El archivo de configuración de cada servicio define el tipo de escalamiento y la clase de instancia para un servicio o versión específicos. Se usan diferentes parámetros de escalamiento, según el tipo de escalamiento que especifiques. Si no lo especificas, la opción predeterminada es el ajuste de escala automático. La configuración de clase de instancia y escalamiento se describe en la sección referencia de app.yaml.

Para cada servicio, también puedes especificar una configuración que asigne las solicitudes de URL a secuencias de comando específicas y que identifique los archivos estáticos a fin de lograr una mejor eficiencia del servidor. Esta configuración también se incluye en el archivo yaml y se describe en la sección de referencia de app.yaml.

Servicio predeterminado

Todas las aplicaciones tienen un solo servicio predeterminado. Puedes definir el servicio predeterminado en app.yaml con la configuración service: default, pero no es necesario hacerlo. Todos los parámetros de configuración relevantes para los servicios pueden aplicarse al servicio predeterminado.

Archivos de configuración opcional

Estos archivos de configuración controlan características opcionales que se aplican a todos los servicios de la aplicación:

  • dispatch.yaml
  • queue.yaml
  • index.yaml
  • cron.yaml
  • dos.yaml

Para implementar actualizaciones de estos archivos de configuración en App Engine, ejecuta el siguiente comando desde el directorio donde se encuentran:

    gcloud app deploy [CONFIG_FILE]

Ejemplo

A continuación, puedes ver un ejemplo de cómo podrías configurar los diversos archivos en una estructura del directorio WAR para una aplicación que tiene dos servicios: uno predeterminado que controla solicitudes web, y otro (denominado my-service) que controla el procesamiento de backend.

Suponiendo que el directorio EAR de nivel superior es “my-application”, define el archivo my-application/META-INF/appengine-application.xml:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<appengine-application xmlns="http://appengine.google.com/ns/1.0">
  <application>my-application</application>
</appengine-application>

Crea directorios de WAR para los dos servicios: my-application/default y my-application/my-service.

Luego, crea un archivo appengine-web.xml en cada WAR que especifique los parámetros del servicio. Este archivo debe incluir un nombre de la versión del servicio. Para definir el servicio predeterminado, puedes incluir el parámetro <service>default</service> de forma explícita o dejar el parámetro de servicio fuera del archivo. Este es el archivo my-application/default/WEB-INF/appengine-web.xml que define el servicio predeterminado:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>my-application</application>
  <module>default</module>
  <version>uno</version>
  <threadsafe>true</threadsafe>
</appengine-web-app>

El archivo my-application/my-service/WEB-INF/appengine-web.xml define el servicio que controla las solicitudes en segundo plano:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>my-application</application>
  <module>my-service</module>
  <version>uno</version>
  <threadsafe>true</threadsafe>
  <manual-scaling>
    <instances>5</instances>
  </manual-scaling>
</appengine-web-app>

Por último, define el archivo my-application/META-INF/application.xml que enumera los servicios. Ten presente que el servicio predeterminado debe ser el primero que enumeres.

<?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>GAE Java SuperFun app</description>
  <display-name>SuperFun</display-name>

  <!-- Services -->
  <!-- The default service should be listed first -->
  <module>
    <web>
      <web-uri>default</web-uri>
      <context-root>default</context-root>
    </web>
  </module>
  <module>
    <web>
      <web-uri>my-service</web-uri>
      <context-root>my-service</context-root>
    </web>
  </module>

</application>

App Engine ignorará los elementos <context-root>; por lo tanto, no es necesario que los clientes HTTP los antepongan a la ruta de URL cuando direccionan un servicio.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno estándar de App Engine para Java 8