The Doppler Quarterly (FRANÇAIS) Printemps 2018 | Page 66

Détection de services
Vous devez être capable de gérer le degré élevé de complexité qui accompagne ces architectures hautement évolutives et découplées . Désormais , il n ' est plus possible de se contenter de raisonner à partir d ' une seule application monolithique . Vous êtes maintenant face à un système distribué à grande échelle comprenant des interactions complexes qui doivent être planifiées de manière efficace , surveillées pour vérifier l ' absence de défaillances , et négociées de manière à s ’ assurer qu ' aucun conflit ne se crée entre les ressources , par exemple au niveau des ports et des adresses IP . Nous pouvons par exemple laisser Docker affecter des ports aléatoires à notre place , mais comment savoir quels ports seront utilisés par les autres services ? En outre , un système distribué qui est exécuté sur plusieurs centaines ou milliers d ’ ordinateurs individuels constitue un environnement hautement dynamique . Avec une telle envergure d ' échelle , une défaillance est davantage considérée comme la norme que comme l ’ exception . Au fur et à mesure des entrées et sorties des nœuds physiques , les Pods de conteneurs échouent et sont réaffectés à d ’ autres nœuds du cluster . D ' autres problèmes tiennent également à la nécessité d ' éviter les conflits , de permettre la détection des services et d ’ assurer une planification efficace .
Des outils de détection de services sont nécessaires pour coordonner toutes ces entités sans devoir recourir à une configuration manuelle fastidieuse à travers l ’ ensemble du cluster . À la base , un outil de détection de service est un magasin persistant de clés / valeurs , qui doit lui-même doit être évolutif et tolérant aux pannes de manière à ne pas devenir un goulet d ’ étranglement ou un point de défaillance unique . Ces outils de détection de service peuvent être construits en complément de magasins de clés / valeurs distribués , tels que ZooKeeper ou etcd , dans lesquels les services s ’ inscrivent euxmêmes , afin que d ' autres services puissent détecter leurs points de terminaison . La solution Consul de HashiCorp est un autre outil reposant sur un système de détection de services inclus dans des batteries , doté d ' une évolutivité horizontale , ainsi que de contrôles de l ' état de santé , de notifications et d ' un registre persistant .
Architecture sans serveur
Les architectures sans serveur , ou ce que d ’ aucuns appellent les composants de « Fonction en tant que service » ( FaaS ), fournissent une plateforme destinée aux services éphémères qui s ’ exécutent pendant de courtes durées et sont déclenchés par des événements précis . La plateforme FaaS la plus connue est AWS Lambda . Au lieu d ’ avoir un ensemble de conteneurs qui s ’ exécutent dans une instance EC2 réservée , et que vous payez quelle que soit l ’ activité du code contenu dans cette instance , vous pouvez déployer votre code sur Lambda , qui est planifié et exécuté uniquement lorsque nécessaire ( c ' est-à-dire , lors du déclenchement par une file d ’ attente d ' événements ). Avec Lambda , vous définissez la file d ’ attente d ’ événements que vous souhaitez connecter à votre fonction , et lorsque l ’ événement attendu est déclenché , Lambda planifie votre fonction , puis l ' exécute , ce qui peut générer des événements dans les files d ’ attente , lesquels déclenchent d ’ autres fonctions et ainsi de suite , jusqu ’ à ce que la fonction soit terminée lors de la sortie .
Le service AWS Alexa , combiné à des compétences personnalisées mises en œuvre dans AWS Lambda , est un excellent exemple pratique d ' utilisation des FaaS . Grâce au service AWS Alexa , vous pouvez enregistrer votre appareil Alexa et créer une compétence personnalisée invocable par le biais d ’ une série de commandes vocales définies , ce qui vous permet ainsi de personnaliser votre appareil Alexa . Vous pouvez par exemple créer facilement une compétence personnalisée qui fait que lorsque vous dites : « Alexa , dis-moi quelque chose d ’ intéressant », Alexa vous réponde par une citation qui égaiera votre journée . Une telle personnalisation peut être mise en œuvre en définissant une compétence dans le service Alexa qui est composée de « déclarations » ou de fragments de voix ( exemple : « dis-moi quelque chose d ' in-
Vous êtes maintenant face à un système distribué à grande échelle comprenant des interactions complexes qui doivent être planifiées de manière efficace , surveillées pour vérifier l ' absence de défaillances , et négociées de manière à s ’ assurer qu ' aucun conflit ne se crée entre les ressources , par exemple au niveau des ports et des adresses IP .
64 | THE DOPPLER | PRINTEMPS 2018