Cada versión de un servicio se define en un archivo .yaml
, que indica el nombre del servicio y de la versión. El archivo YAML suele tener el mismo nombre que el servicio que define, pero no es obligatorio. Si vas a implementar varias versiones de un servicio, puedes crear varios archivos YAML en el mismo directorio, uno para cada versión.
Normalmente, se crea un directorio para cada servicio, que contiene los archivos YAML del servicio y el código fuente asociado. Los archivos de configuración opcionales a nivel de aplicación (dispatch.yaml
, cron.yaml
, index.yaml
y queue.yaml
) se incluyen en el directorio de nivel superior de la aplicación. En el ejemplo siguiente se muestran tres servicios.
En service1
y service2
, los archivos de origen están en el mismo nivel que el archivo YAML. En service3
, hay archivos YAML para dos versiones.
En proyectos pequeños y sencillos, todos los archivos de la aplicación pueden estar en un mismo directorio:
Todos los archivos YAML deben incluir un parámetro de versión. Para definir el servicio predeterminado, puedes incluir explícitamente el parámetro service: default
o dejar fuera del archivo el parámetro de servicio.
El archivo de configuración de cada servicio define el tipo de escalado y la clase de instancia de un servicio o una versión concretos. Se usan diferentes parámetros de escalado en función del tipo de escalado que especifiques. Si no especificas el escalado, se aplicará el escalado automático de forma predeterminada. Los ajustes de escalado y de clase de instancia se describen en la sección de app.yaml
referencia.
En cada servicio, también puedes especificar ajustes que asignen solicitudes de URL a secuencias de comandos concretas e identificar archivos estáticos para mejorar la eficiencia del servidor. Estos ajustes también se incluyen en el archivo YAML y se describen en la sección de referencia de app.yaml
.
El servicio predeterminado
Cada aplicación tiene un único servicio predeterminado. Puedes definir el servicio predeterminado en app.yaml
con el ajuste service: default
, pero no es necesario. Todos los parámetros de configuración relevantes para los servicios se pueden aplicar al servicio predeterminado.
Archivos de configuración opcionales
Estos archivos de configuración controlan las funciones opcionales que se aplican a todos los servicios de una aplicación:
dispatch.yaml
anula las reglas predeterminadas de enrutamiento enviando las solicitudes entrantes a un servicio específico en función de la ruta o el nombre de host de la URL.queue.yaml
configura las colas de salida y las colas para tareas extraídas.index.yaml
especifica los índices que necesita tu aplicación si usa consultas de Datastore.cron.yaml
configura tareas programadas para operar a horas concretas o en intervalos regulares.
Para implementar las actualizaciones de estos archivos de configuración en App Engine, ejecuta el siguiente comando desde el directorio en el que se encuentran:
gcloud app deploy [CONFIG_FILE]
Ejemplo
A continuación, se muestra un ejemplo de cómo configurar archivos YAML para una aplicación que tiene tres servicios: un servicio predeterminado que gestiona las solicitudes web y dos servicios más que gestionan las solicitudes móviles y el procesamiento backend.
Empieza definiendo un archivo de configuración llamado app.yaml
que gestione todas las solicitudes relacionadas con la Web:
runtime: php55
api_version: 1
threadsafe: true
Si el Google Cloud ID de proyecto de la consola de esta aplicación es simple-sample
, esta configuración crearía un servicio predeterminado con escalado automático y una dirección pública https://simple-sample.uc.r.appspot.com
.
A continuación, supongamos que quieres crear un servicio para gestionar solicitudes de la Web para móviles.
Por el bien de los usuarios móviles (en este ejemplo), la latencia máxima pendiente será de solo un segundo y siempre tendremos al menos dos instancias inactivas. Para configurar esto, debes crear un archivo de configuración mobile-frontend.yaml
con el siguiente contenido:
service: mobile-frontend
runtime: php55
api_version: 1
threadsafe: true
automatic_scaling:
min_idle_instances: 2
max_pending_latency: 1s
El servicio que crea este archivo se podrá acceder a través de https://mobile-frontend-dot-simple-sample.uc.r.appspot.com
.
Por último, añade un servicio llamado my-service
para gestionar el trabajo de backend estático.
Puede ser una tarea continua que exporte datos de Datastore a BigQuery. La cantidad de trabajo es relativamente fija, por lo que solo necesitas un servicio residente en cualquier momento. Además, estas tareas tendrán que gestionar una gran cantidad de procesamiento en memoria, por lo que te recomendamos que uses servicios con una configuración de memoria ampliada. Para configurarlo, crea un archivo de configuración my-service.yaml
con el siguiente contenido.
service: my-service
runtime: php55
api_version: 1
threadsafe: true
instance_class: B8
manual_scaling:
instances: 1
El servicio que crea este archivo se podrá acceder a través de https://my-service-dot-simple-sample.uc.r.appspot.com
.
Fíjate en el ajuste manual_scaling:
. El parámetro instances:
indica a App Engine cuántas instancias debe crear para este servicio.