Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Conseil / Astuce
Ce contenu est un extrait de l’eBook, Architecting Cloud Native .NET Applications pour Azure, disponible sur .NET Docs ou en tant que PDF téléchargeable gratuitement qui peut être lu hors connexion.
En résumé, voici des conclusions importantes de ce guide :
Le cloud natif consiste à concevoir des applications modernes qui adoptent des changements rapides, une grande échelle et une résilience, dans des environnements modernes, dynamiques tels que des clouds publics, privés et hybrides.
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 recommandations de CNCF recommandent que les applications natives cloud adoptent six piliers importants, comme illustré dans la figure 11-1 :
Figure 11-1. Piliers fondamentaux natifs du cloud
Ces piliers de l'informatique en nuage sont les suivants :
- Le cloud et son modèle de service sous-jacent
- Principes de conception modernes
- Microservices
- Conteneurisation et orchestration de conteneurs
- Services de stockage basés sur le cloud, tels que 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. Les services plus petits et simples sont parfois hébergés dans des plateformes serverless, telles qu’Azure Functions. Parmi de nombreuses fonctionnalités d’automatisation clés, les deux environnements fournissent une mise à l’échelle automatique pour gérer les volumes de charge de travail fluctuants.
La communication de service devient une décision de conception significative lors de la construction d’une application native cloud. Les applications exposent généralement une passerelle d'API pour gérer la communication avec le client de l'interface utilisateur. Ensuite, les microservices principaux s’efforcent de communiquer entre eux en implémentant des modèles de communication asynchrones, lorsque cela est possible.
gRPC est un framework moderne et hautes performances qui évolue le protocole RPC (Age-Old Remote Procedure Call). Les applications natives cloud adoptent souvent gRPC pour simplifier la messagerie entre les services principaux. gRPC utilise HTTP/2 pour son protocole de transport. Il peut être jusqu’à 8 fois plus rapide que la sérialisation JSON avec des tailles de message de 60 à 80% plus petites. gRPC est open source et géré par Cloud Native Computing Foundation (CNCF).
Les données distribuées sont un modèle souvent implémenté par les applications natives cloud. Les applications séparent les fonctionnalités métier en microservices indépendants de petite taille. Chaque microservice encapsule ses propres dépendances, données et état. Le modèle de base de données partagée classique évolue en 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 désignent des magasins de données non relationnels à haute performance. Ils excellent dans leurs caractéristiques de facilité d’utilisation, d’extensibilité, de résilience et de disponibilité. Les services à volume élevé qui nécessitent un temps de réponse inférieur à la seconde favorisent les magasins de données NoSQL. La prolifération des technologies NoSQL pour les systèmes cloud-native distribués ne peut pas être exagérée.
NewSQL est une technologie de base de données émergente qui combine l’extensibilité 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 volumes élevés de données, dans des environnements distribués, avec une conformité transactionnelle/ACID complète. Cloud Native Computing Foundation (CNCF) propose plusieurs projets de base de données NewSQL.
La résilience est la capacité de votre système à réagir aux défaillances et à rester fonctionnelle. Les systèmes natifs cloud adoptent l’architecture distribuée où l’échec est inévitable. Les applications doivent être construites pour répondre avec élégance aux défaillances et revenir rapidement à un état pleinement opérationnel.
Les maillages de service sont une couche d’infrastructure configurable avec des fonctionnalités intégrées pour gérer la communication de service et d’autres défis inter-coupes. Ils dissocient les responsabilités croisées de votre code métier. Ces responsabilités passent à un proxy de service.
Sidecar patternAppelé « proxy », le proxy est déployé dans un processus distinct pour fournir une isolation de votre code métier.L’observabilité est une considération de conception clé pour les applications natives cloud. À mesure que les services sont distribués sur un cluster de nœuds, la journalisation centralisée, la supervision et les alertes, deviennent obligatoires. Azure Monitor est une collection d’outils cloud conçus pour fournir une visibilité sur l’état de votre système.
L’infrastructure en tant que code est une pratique largement acceptée qui automatise l’approvisionnement de plateforme. Votre infrastructure et vos déploiements sont automatisés, cohérents et reproductibles. Les outils tels qu’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 requise pour les applications natives cloud. Les systèmes CI/CD modernes aident à respecter ce principe. Ils fournissent des étapes de génération et de déploiement distinctes qui permettent de garantir un code cohérent et de qualité. L’étape de génération transforme le code en artefact binaire. La phase de mise en production récupère l’artefact binaire, applique la configuration de l’environnement externe et la déploie dans un environnement spécifié. Azure DevOps et GitHub sont des environnements DevOps complets.