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

Détection de services Vous devez être capable de gérer le degré élevé de com- plexité qui accompagne ces architectures hautement évolutives et découplées. Désormais, il n'est plus possi- ble 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'au- cun 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 envi- ronnement hautement dynamique. Avec une telle enver- gure 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’au- tres nœuds du cluster. D'autres problèmes tiennent également à la nécessité d'éviter les conflits, de per- mettre la détection des services et d’assurer une planifi- cation 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’en- semble du cluster. À la base, un outil de détection de ser- vice 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 eux- mê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 ser- vice » (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éne- ments). 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 per- ۛ[\Y\Z\\[1d]H[U[XK\[^[[^[\H]\]YH ][\][ۈ\XTˈܰB]H\XHU[^K\]^[Y\\B\\Z[[^H]ܰY\[H\0][H\ۛ[\YB[XH\HXZ\8&][H\YHH[X[\[\™0Y[Y\H]ZH\\Y]Z[HH\ۛ[\\B\\Z[[^K\]^\^[\HܰY\X[KBY[[H\0][H\ۛ[\YH]ZHZ]]YHܜ]YB\]\0[^K\[[H]Y[]YHH8&Z[0\\B[00[^H\\ۙH\[H]][ۈ]ZH0YZY\BH\YK[H[H\ۛ[\][ۈ]]0HZ\B[1d]H[0Y[\[[H\0][H[H\XB[^H]ZH\\YHH00X\][ۜ0HHYBY[H^ ^[\p0\[[H]Y[]YHH [B\0\XZ[[[XH0[\0YH\XpH0ܘ[BX[H\[[\[\X[ۜ\^\]ZH][0B[YpY\HX[pHYXXK\Z[0Y\\\YY\ X[BH0YZ[[\]YpY\HX[pH0&X\\\]I]X[ۙ]HHܰYH[H\\\\\^[\H]H]X]B\ܝ]\Y\\T HTSST N