Fichiers de configuration

Chaque version d'un service est définie dans un fichier .yaml, qui donne le nom du service et sa version. Le fichier YAML porte généralement le même nom que le service qu'il définit, mais ce n'est pas obligatoire. Si vous déployez plusieurs versions d'un service, vous pouvez créer plusieurs fichiers YAML dans le même répertoire, à savoir un pour chaque version.

Généralement, vous créez pour chaque service un répertoire contenant les fichiers YAML du service et le code source associé. Des fichiers de configuration facultatifs au niveau de l'application (dispatch.yaml, cron.yaml, index.yaml et queue.yaml) sont inclus dans le répertoire de premier niveau de l'application. L'exemple ci-dessous décrit trois services. Dans service1 et service2, les fichiers source se trouvent au même niveau que le fichier YAML. Dans service3, il existe des fichiers YAML pour deux versions.

Graphique de la hiérarchie des services YAML

Pour les projets simples de petite taille, tous les fichiers de l'application peuvent se situer dans un même répertoire :

Graphique de la hiérarchie des petits services YAML

Chaque fichier YAML doit inclure un paramètre de version. Pour définir le service par défaut, vous pouvez explicitement inclure le paramètre service: default ou l'exclure du fichier.

Le fichier de configuration de chaque service définit le type de scaling et la classe d'instance pour un service ou une version spécifique. Différents paramètres de scaling sont utilisés selon le type de scaling que vous indiquez. Si vous ne spécifiez pas ce type, le scaling automatique est utilisé par défaut. Les paramètres de scaling et de classe d'instance sont décrits dans la documentation de référence sur le fichier app.yaml.

Pour chaque service, vous pouvez également spécifier des paramètres qui mappent les requêtes URL à des scripts spécifiques et identifient les fichiers statiques pour améliorer l'efficacité du serveur. Ces paramètres sont également inclus dans le fichier yaml et sont décrits dans la documentation de référence sur le fichier app.yaml.

Service par défaut

Chaque application possède un seul service par défaut. Vous pouvez définir le service par défaut dans le fichier app.yaml avec le paramètre service: default, mais ce n'est pas obligatoire. Tous les paramètres de configuration relatifs aux services peuvent s'appliquer au service par défaut.

Fichiers de configuration facultatifs

Ces fichiers de configuration contrôlent les fonctionnalités facultatives qui s'appliquent à tous les services d'une application :

  • dispatch.yaml remplace les règles de routage par défaut en envoyant des requêtes entrantes à un service spécifique en fonction du chemin d'accès ou du nom d'hôte indiqué dans l'URL.
  • queue.yaml configure les files d'attente d'envoi et les files d'attente de retrait.
  • index.yaml spécifie les index dont l'application a besoin si vous utilisez des requêtes Datastore.
  • cron.yaml configure les tâches planifiées régulièrement qui fonctionnent à des heures définies ou à intervalles réguliers.

Pour déployer les mises à jour de ces fichiers de configuration sur App Engine, exécutez la commande suivante à partir du répertoire où ils se trouvent :

    gcloud app deploy [CONFIG_FILE]

Exemple

Voici un exemple de configuration des fichiers YAML pour une application comportant trois services : un service par défaut qui traite les requêtes Web, ainsi que deux autres services qui gèrent les requêtes mobiles et le traitement backend.

Commencez par définir un fichier de configuration nommé app.yaml qui gérera toutes les requêtes Web :

runtime: python27
api_version: 1
threadsafe: true

Si l'ID de projet de la console Google Cloud pour cette application est simple-sample, cette configuration crée un service par défaut avec scaling automatique et avec une adresse publique : https://simple-sample.uc.r.appspot.com.

Supposons ensuite que vous souhaitiez créer un service afin de traiter les requêtes Web mobiles. Dans l'intérêt des utilisateurs mobiles (dans cet exemple), le temps de latence maximal sera d'une seconde et nous aurons toujours au moins deux instances inactives. Pour ce faire, vous devez créer un fichier de configuration mobile-frontend.yaml avec le contenu suivant :

service: mobile-frontend
runtime: python27
api_version: 1
threadsafe: true

automatic_scaling:
  min_idle_instances: 2
  max_pending_latency: 1s

Le service créé par ce fichier sera alors accessible à l'adresse https://mobile-frontend-dot-simple-sample.uc.r.appspot.com.

Enfin, ajoutez un service appelé my-service pour gérer les tâches statiques liées au backend. Il peut par exemple s'agir d'une tâche continue exportant des données Datastore vers BigQuery. Comme la quantité de travail est relativement fixe, vous n'avez besoin que d'un service résident. En outre, ces tâches devront gérer un volume important de traitement en mémoire. Vous aurez donc besoin de services avec une configuration de mémoire accrue. Pour ce faire, vous devez créer un fichier de configuration my-service.yaml avec le contenu suivant.

service: my-service
runtime: python27
api_version: 1
threadsafe: true

instance_class: B8
manual_scaling:
  instances: 1

Le service créé par ce fichier sera alors accessible à l'adresse https://my-service-dot-simple-sample.uc.r.appspot.com.

Notez le paramètre manual_scaling:. Le paramètre instances: indique à App Engine le nombre d'instances à créer pour ce service.

Vous pouvez également télécharger cette application de démonstration Python pour en savoir plus.