Résumé : Architecture d’applications natives cloud
Conseil
Ce contenu est un extrait du livre électronique, Cloud Native .NET apps for Azure (Architecture d’applications .NET natives cloud pour Azure), disponible dans la documentation .NET ou au format PDF à télécharger gratuitement pour le lire hors connexion.
En résumé, voici les conclusions importantes de ce guide :
L’informatique native cloud consiste à concevoir des applications modernes qui adoptent un changement rapide, une grande échelle et une résilience dans des environnements modernes et dynamiques tels que les clouds publics, privés et hybrides.
La Cloud Native Computing Foundation (CNCF) est un consortium open source influent de plus de 300 grandes entreprises. Elle est responsable de l’adoption de l’informatique native cloud dans les piles technologiques et cloud.
Les directives de la CNCF recommandent que les applications natives cloud adoptent six piliers importants, comme illustré dans la figure 11-1 :
Figure 11-1 : Piliers fondamentaux du natif cloud
Ces piliers du natifs cloud comprennent :
- Le cloud et son modèle de service sous-jacent
- Des principes de conception modernes
- Microservices
- La conteneurisation et l’orchestration de conteneurs
- Des services de soutien basés sur le cloud, comme les bases de données et les répartiteurs de messages
- L’automatisation, infrastructure en tant que code et déploiement du code compris
Kubernetes est l’environnement d’hébergement de choix pour la plupart des applications natives cloud. Des services simples plus petits sont parfois hébergés dans des plateformes serverless comme Azure Functions. Parmi les nombreuses fonctionnalités d’automatisation clés, les deux environnements fournissent une mise à l’échelle automatique pour gérer les volumes fluctuants des charges de travail.
La communication entre les services devient une décision de conception importante lors de la création d’une application native cloud. Les applications exposent généralement une passerelle API pour gérer la communication cliente front-end. Ensuite, les microservices back-end s’efforcent de communiquer entre eux en implémentant des modèles de communication asynchrones, le cas échéant.
gRPC est un framework moderne et hautes performances qui fait évoluer l’ancestral protocole RPC (Remote Procedure Call). Les applications natives cloud adoptent souvent gRPC pour simplifier les messages entre les services back-end. gRPC utilise HTTP/2 pour son protocole de transport. Il peut être jusqu’à 8 fois plus rapide que la sérialisation JSON avec des messages de 60 à 80 % plus petits. gRPC est open source et géré par la CNCF (Cloud Native Computing Foundation).
Les données distribuées sont un modèle souvent implémenté par les applications natives cloud. Les applications divisent les fonctionnalités métier en petits microservices indépendants. Chaque microservice encapsule ses propres dépendances, données et état. Le modèle de base de données partagée classique se transforme en l’une des nombreuses bases de données plus petites, chacune s’alignant sur un microservice. Lorsque tout s’éclaircit, nous émergeons avec une conception qui expose un modèle
database-per-microservice
.Les bases de données No-SQL font référence à des magasins de données non relationnelles hautes performances. Elles excellent dans leurs caractéristiques de facilité d’utilisation, de scalabilité, de résilience et de disponibilité. Les services avec des volumes élevés qui demandent un temps de réponse inférieur à une seconde préfèrent les magasins de données NoSQL. La prolifération des technologies NoSQL pour les systèmes natifs cloud distribués ne doit pas être surestimée.
NewSQL est une technologie de base de données émergente qui combine la scalabilité distribuée de NoSQL et les garanties ACID d’une base de données relationnelle. Les bases de données NewSQL ciblent les systèmes métier qui doivent traiter des grands volumes de données dans des environnements distribués, avec une conformité transactionnelle/ACID totale. La CNCF (Cloud Native Computing Foundation) propose plusieurs projets de base de données NewSQL.
La résilience est la capacité de votre système à réagir aux défaillances tout en restant fonctionnel. Les systèmes natifs cloud adoptent une architecture distribuée où les défaillances sont inévitables. Les applications doivent être créées pour répondre intelligemment aux défaillances et revenir rapidement à un état totalement fonctionnel.
Les maillages de services sont une couche d’infrastructure configurable avec des fonctionnalités intégrées pour gérer la communication des services et autres défis transversaux. Ils dissocient les responsabilités transversales de votre code métier. Ces responsabilités passent à un proxy de service. Appelé
Sidecar pattern
, le proxy est déployé dans un processus distinct pour fournir une isolation de votre code métier.L’observabilité est un élément de conception clé à prendre en compte pour les applications natives cloud. À mesure que les services sont distribués sur un cluster de nœuds, la journalisation centralisée, la surveillance et les alertes deviennent obligatoires. Azure Monitor est une collection d’outils basés sur le cloud conçue pour offrir une visibilité de l’état de votre système.
L’infrastructure en tant que code est une pratique largement acceptée qui automatise le provisionnement de la plateforme. Votre infrastructure et vos déploiements sont automatisés, cohérents et reproductibles. Les outils, comme Azure Resource Manager, Terraform et Azure CLI, vous permettent de scripter de manière déclarative l’infrastructure cloud dont vous avez besoin.
L’automatisation du code est indispensable pour les applications natives cloud. Les systèmes CI/CD modernes permettent de respecter ce principe. Ils fournissent des étapes de génération et de déploiement distinctes qui permettent de garantir la cohérence et la qualité du code. La phase de build transforme le code en artefact binaire. La phase de mise en production récupère l’artefact binaire, applique la configuration d’environnement externe et la déploie dans un environnement spécifié. Azure DevOps et GitHub sont des environnements DevOps complets.