Résilience cloud native
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.
La résilience est la capacité de votre système à réagir aux défaillances et à rester fonctionnelle. Il ne s’agit pas d’éviter l’échec, mais de l’accepter et de construire vos services natifs cloud pour y répondre. Vous souhaitez revenir rapidement à un état pleinement opérationnel.
Contrairement aux applications monolithiques traditionnelles, où tout s’exécute ensemble dans un seul processus, les systèmes natifs cloud adoptent une architecture distribuée, comme illustré dans la figure 6-1 :
Figure 6-1. Environnement natif cloud distribué
Dans la figure précédente, chaque microservice et chaque service de stockage basé sur le cloud s’exécutent dans un processus distinct, dans l’infrastructure du serveur, en communiquant via des appels réseau.
Dans cet environnement, un service doit être sensible à de nombreux défis différents :
Latence réseau inattendue : le temps d’une requête de service pour effectuer un aller-retour avec le récepteur.
Pannes temporaires – erreurs de connectivité réseau de courte durée.
Blocage par une opération synchrone longue.
Processus hôte qui s’est arrêté et qui est redémarré ou déplacé.
Microservice surchargé qui ne peut pas répondre pendant une courte période.
Opération d’orchestrateur en cours, telle que le déploiement d’une mise à niveau ou le déplacement d’un service d’un nœud vers un autre.
Pannes matérielles.
Les plateformes cloud peuvent détecter et atténuer un grand nombre de ces problèmes d’infrastructure. Il peut redémarrer, effectuer un scale-out et même redistribuer votre service à un autre nœud. Toutefois, pour tirer pleinement parti de cette protection intégrée, vous devez concevoir vos services pour y réagir et prospérer dans cet environnement dynamique.
Dans les sections suivantes, nous allons explorer les techniques défensives desquelles votre service et vos ressources cloud gérées peuvent tirer parti pour réduire les temps d’arrêt et les interruptions.