Organizar archivos de configuración

ID de región

REGION_ID es un código abreviado que Google asigna en función de la región que seleccionas cuando creas tu app. El código no corresponde a un país o provincia, aunque algunos ID de región puedan parecer similares a los códigos de país y provincia de uso común. Incluir REGION_ID.r en las URL de App Engine es opcional para las apps existentes, y pronto será obligatorio para todas las apps nuevas.

A fin de garantizar una transición sin problemas, estamos actualizando App Engine con lentitud para usar los ID de región. Si aún no actualizamos tu proyecto de Google Cloud, no verás un ID de región para la app. Dado que el ID es opcional para las apps existentes, no necesitas actualizar las URL ni realizar otros cambios una vez que el ID de región esté disponible para las apps existentes.

Obtén más información acerca de los ID de región.

Lee este documento para comprender cómo estructurar los servicios y recursos relacionados de tu aplicación en App Engine.

Estructura del directorio

Cada versión de tu servicio de App Engine se define en un archivo de configuración app.yaml. En el caso de las apps simples, el requisito mínimo para la implementación es definir el archivo app.yaml. El archivo app.yaml actúa como un descriptor de implementación y define el tipo de escalamiento y los recursos de CPU, disco y memoria para una versión específica de un servicio. Si estás implementando distintas versiones de un servicio, puedes crear varios archivos YAML en el mismo directorio a fin de representar la configuración para cada versión.

Puedes crear directorios separados para cada servicio en el directorio raíz de la aplicación cuando desarrolles de forma local. Si alojas la aplicación fuera del sistema de control de versión (VCS), p. ej., GitHub, también puedes estructurarla para usar directorios separados en un repositorio o usar repositorios separados en cada servicio. Cada directorio o repositorio debería representar un solo servicio y contener el archivo app.yaml de ese servicio, además del código fuente asociado.

Tienes la opción de especificar un nombre único para cada archivo app.yaml de tu servicio. Por ejemplo, puedes usar el nombre de tu servicio para un archivo de configuración o usar nombres únicos que representen cada versión de ese servicio específico, como service1.yaml o app.flexible.yaml.

Los otros archivos de configuración opcionales deben residir en el directorio raíz o repositorio del servicio default de tu app. Estos archivos de configuración opcionales aplican una configuración para toda la aplicación que no es específica de un servicio en particular, incluidos los archivos dispatch.yaml, index.yaml y cron.yaml.

Ejemplos

En el siguiente ejemplo se muestra cómo podría ser una aplicación con tres servicios si la estás desarrollando de manera local. El archivo opcional dispatch.yaml se agregó a la app en el directorio raíz. Además, en la raíz, hay tres directorios, uno para cada servicio de la app. El subdirectorio de service1 incluye los archivos fuente y de configuración de ese servicio. Del mismo modo, service2 y service3 están en directorios separados que contienen los archivos de cada servicio, aunque service3 incluye dos versiones del archivo de configuración YAML:

Grafo de jerarquías de los servicios YAML

Una aplicación de servicio único solo incluirá el servicio default, y todos los archivos pueden residir en el mismo directorio, en la raíz de la aplicación. En el siguiente ejemplo, se demuestra la posible estructura de una aplicación de servicio único y se incluye el archivo de configuración dispatch.yaml opcional y dos archivos de configuración que representan diferentes versiones de ese servicio, service1.yaml y service2.yaml:

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

Consideraciones de diseño para el tiempo de actividad de la instancia

Las fallas de hardware o software que causan que la aplicación finalice antes de tiempo o las instancias se reinicien frecuentemente pueden ocurrir de improvisto, y su resolución puede llevar mucho tiempo. Tu aplicación debe manejar estas fallas.

A continuación se detallan algunas estrategias para evitar el tiempo de inactividad por reinicios de las instancias.

  • Reduce el tiempo que lleva reiniciar tus instancias o iniciar las nuevas.
  • Crea puntos de control de forma periódica para los cálculos de larga duración, a fin de permitirte reanudar el proceso desde ese estado.
  • La app debe ser "sin estado" para que no se almacene nada en la instancia.
  • Usa colas para ejecutar tareas asíncronas.
  • Si configuras tus instancias para el ajuste de escala manual, haz lo siguiente:
    • Usa el balanceo de cargas en varias instancias.
    • Configura más instancias de las necesarias para controlar un tráfico normal.
    • Escribe una lógica de resguardo que use resultados almacenados en caché cuando no esté disponible una instancia de escalamiento manual.

Obtén más información sobre las instancias en Cómo se administran las instancias.

El servicio default

Cada aplicación de App Engine incluye un servicio default. Debes implementar la versión inicial de tu aplicación en el servicio default para poder crear y, también, implementar servicios adicionales en tu app.

El servicio predeterminado se puede especificar de forma opcional en el archivo app.yaml con la configuración service: default.

Las solicitudes enviadas a tu app mediante tu proyecto de Cloud se envían al servicio default, por ejemplo, https://PROJECT_ID.REGION_ID.r.appspot.com. Para obtener más información sobre cómo orientar otros servicios, consulta Establece comunicaciones entre servicios.

Archivos de configuración opcional

Los siguientes archivos de configuración controlan las funciones opcionales que se aplican a todos los servicios en una aplicación individual. Consulta los siguientes temas para obtener más detalles sobre cada función opcional:

Consideraciones sobre el almacenamiento de archivos y datos

Desde App Engine, puedes acceder con facilidad a otros servicios de Google Cloud, como Datastore, Cloud SQL y Cloud Storage.

También puedes usar una base de datos externa o de terceros si es compatible con tu lenguaje y accesible desde tu instancia de App Engine.

Para obtener más información sobre cómo almacenar archivos en Google Cloud o de forma externa, consulta Comprende cómo funciona el almacenamiento de datos y archivos.

Además, puedes seleccionar la forma en que deseas entregar el contenido estático. Puedes entregar el contenido estático de tu aplicación directamente desde App Engine, alojar tu contenido estático en una opción de Google Cloud como Cloud Storage o usar una red de distribución de contenidos de terceros (CDN). Para obtener más información sobre la entrega de contenido estático, consulta la página sobre cómo entregar archivos estáticos.