Parcours 04Leçon 5 / 10

Concevoir un logiciel pour un environnement cloud native

Reliez une infrastructure reproductible, des processus remplaçables, un état durable et un comportement observable. Évaluez la conception cloud native au-delà de la mise en conteneur.

Pratique12 minRevu

Publié par Notre méthode de rédaction

Ce que vous apprendrez

  • Distinguer la mise en conteneur du comportement cloud native.
  • Identifier les risques liés à l’état, aux nouvelles tentatives et au remplacement dans un service généré.
  • Définir un contrat de plateforme que les agents et les personnes peuvent vérifier.

Définir le comportement nécessaire

Les pratiques cloud native favorisent un développement et une exploitation reproductibles dans des environnements publics, privés ou hybrides. La CNCF met l’accent sur des systèmes qui restent administrables, observables et résilients lorsqu’ils évoluent. Les conteneurs et l’orchestration peuvent soutenir cette approche. Ils ne garantissent pas toutes ces propriétés à eux seuls.

Partons d’un service de rapports fictif. Un outil IA crée un endpoint, un worker et une image de conteneur. Une démonstration produit le bon PDF. Avant la production, l’équipe doit répondre à une autre question : que se passe-t-il si la plateforme remplace le worker pendant une tâche ?

C’est une question de conception applicative autant que d’infrastructure. Un redémarrage peut rétablir un processus tout en perdant son travail inachevé.

Séparer le processus de l’état durable

Le prototype conserve les tâches en attente et les rapports terminés sur le disque du conteneur. Le remplacement du conteneur peut supprimer les deux. Ajouter des workers peut aussi donner des réponses différentes selon celui qui reçoit la requête.

La conception révisée utilise un stockage durable des tâches et un stockage objet approuvé. Une requête enregistre une identité de tâche. Un worker prend en charge la tâche, crée son résultat et enregistre son emplacement. Les contrôles d’accès s’appliquent toujours lorsqu’un utilisateur télécharge le rapport.

SujetQuestion pour le service de rapports
ÉtatQuels enregistrements doivent survivre au remplacement du processus ?
ConfigurationComment le même artefact fonctionne-t-il dans chaque environnement ?
IdentitéQuelle identité de service peut lire la tâche et écrire son résultat ?
État de santéLe worker peut-il accepter du travail et le terminer ?
ArrêtQue devient une tâche prise en charge lorsque le worker s’arrête ?
CapacitéQuelle limite est atteinte en premier : workers, base de données, stockage ou autre service ?

Gardez les secrets hors de l’image. Fournissez-les par le système approuvé de gestion des secrets. Consignez quels changements de configuration exigent une nouvelle livraison ou un redémarrage du processus.

Concevoir les nouvelles tentatives avant d’ajouter des workers

Supposons que le worker enregistre un PDF, puis s’arrête avant d’acquitter la tâche. La file livre à nouveau la tâche. Une seconde tentative ne doit pas créer une deuxième facturation au client ni envoyer des messages de fin contradictoires.

Utilisez une opération idempotente lorsque cela convient. Répéter la même requête logique doit préserver l’effet prévu. Définissez une identité stable de requête, enregistrez durablement le résultat et vérifiez ce qui se passe à chaque point de défaillance. AWS décrit cette technique dans son guide des nouvelles tentatives sûres.

Les nouvelles tentatives ont aussi besoin de limites. Utilisez un délai maximal, un nombre maximal de tentatives et une attente qui évite les répétitions simultanées. Conservez les travaux échoués pour examen au lieu de les relancer indéfiniment.

Rendre l’état souhaité vérifiable

Une configuration déclarative décrit le déploiement souhaité. Un contrôleur travaille à maintenir cet état. Par exemple, un Deployment Kubernetes gère les réplicas de l’application et les mises à jour contrôlées. L’application doit toujours gérer correctement le remplacement.

Versionnez l’infrastructure et la configuration applicative. Examinez les modifications dans la procédure normale de livraison. Observez l’achèvement réel des tâches, l’ancienneté des tâches en attente, les échecs et les limites des dépendances. Un processus en cours d’exécution peut malgré tout être incapable de produire un rapport.

Choisir une plateforme que l’équipe peut exploiter

Le cloud native n’impose pas de transformer chaque application en microservices. Une application modulaire sur un environnement d’exécution managé peut satisfaire ses exigences. Davantage de services signifie davantage d’interfaces, de décisions de déploiement et de travail d’exploitation.

Donnez à l’agent de développement le contrat réel de la plateforme : environnement d’exécution pris en charge, méthode d’identité, services de données, règles de déploiement et preuves requises. Testez les comportements d’interruption et de remplacement en plus des requêtes réussies. Poursuivez avec la disponibilité et les domaines de défaillance.

Faire l’exercice

Un service de rapports fictif stocke les tâches et les fichiers terminés sur le disque de son conteneur. Dessinez le flux entre la requête, la tâche, le fichier et le téléchargement. Identifiez l’état durable. Définissez ce qui se passe si le worker s’arrête après avoir écrit un fichier, mais avant d’avoir confirmé la tâche.

Télécharger la fiche d’exercice (Markdown)

Vérifier votre compréhension

Une plateforme remplace un worker de rapports après une défaillance. Qu’est-ce qui rend la nouvelle tentative sûre ?

Sources et lectures complémentaires

Lectures Taiga sur le sujet