Comment bien dormir quand on a un service cloud : conseils architecturaux de base

Comment bien dormir quand on a un service cloud : conseils architecturaux de base« PERDU » par sophiagworld

Cet article contient quelques modĂšles courants pour aider les ingĂ©nieurs Ă  travailler avec des services Ă  grande Ă©chelle accessibles par des millions d'utilisateurs. 

D'aprÚs l'expérience de l'auteur, il ne s'agit pas d'une liste exhaustive, mais effectivement efficace des conseils. Alors, commençons.

Traduit avec support Solutions Cloud Mail.ru.

Niveau d'entrée

Les mesures Ă©numĂ©rĂ©es ci-dessous sont relativement simples Ă  mettre en Ɠuvre mais ont un impact Ă©levĂ©. Si vous ne les avez jamais essayĂ©s auparavant, vous serez surpris des amĂ©liorations significatives.

Infrastructure en tant que code

La premiĂšre partie du conseil consiste Ă  implĂ©menter l'infrastructure en tant que code. Cela signifie que vous devez disposer d'un moyen programmatique pour dĂ©ployer l'intĂ©gralitĂ© de l'infrastructure. Cela semble compliquĂ©, mais nous parlons en rĂ©alitĂ© du code suivant :

Déploiement de 100 machines virtuelles

  • с Ubuntu
  • 2 Go de RAM chacun
  • ils auront le code suivant
  • avec ces paramĂštres

Vous pouvez suivre les modifications apportées à votre infrastructure et y revenir rapidement à l'aide du contrÎle de version.

Le moderniste en moi dit que vous pouvez utiliser Kubernetes/Docker pour faire tout ce qui précÚde, et il a raison.

De plus, vous pouvez fournir une automatisation Ă  l'aide de Chef, Puppet ou Terraform.

Intégration et livraison continues

Pour crĂ©er un service Ă©volutif, il est important de disposer d'un pipeline de construction et de test pour chaque demande d'extraction. MĂȘme si le test est trĂšs simple, il garantira au moins que le code que vous dĂ©ployez est compilĂ©.

A chaque fois à ce stade vous répondez à la question : mon assemblage va-t-il compiler et réussir les tests, est-ce valide ? Cela peut sembler une barre basse, mais cela résout de nombreux problÚmes.

Comment bien dormir quand on a un service cloud : conseils architecturaux de base
Il n'y a rien de plus beau que de voir ces tiques

Pour cette technologie, vous pouvez évaluer Github, CircleCI ou Jenkins.

Équilibreurs de charge

Nous souhaitons donc exĂ©cuter un Ă©quilibreur de charge pour rediriger le trafic et garantir une charge Ă©gale sur tous les nƓuds, sinon le service continue en cas de panne :

Comment bien dormir quand on a un service cloud : conseils architecturaux de base
Un équilibreur de charge fait généralement un bon travail de répartition du trafic. La meilleure pratique consiste à suréquilibrer afin de ne pas avoir un seul point de défaillance.

En rÚgle générale, les équilibreurs de charge sont configurés dans le cloud que vous utilisez.

RayID, ID de corrĂ©lation ou UUID pour les requĂȘtes

Avez-vous dĂ©jĂ  rencontrĂ© une erreur d'application avec un message comme celui-ci : " Quelque chose s'est mal passĂ©. Enregistrez cet identifiant et envoyez-le Ă  notre Ă©quipe d'assistance"?

Comment bien dormir quand on a un service cloud : conseils architecturaux de base
Un identifiant unique, un ID de corrélation, un RayID ou l'une des variantes est un identifiant unique qui vous permet de suivre une demande tout au long de son cycle de vie. Cela vous permet de suivre l'intégralité du chemin de la demande dans les journaux.

Comment bien dormir quand on a un service cloud : conseils architecturaux de base
L'utilisateur fait une demande au systÚme A, puis A contacte B, qui contacte C, la stocke dans X, puis la demande est renvoyée à A.

Si vous deviez vous connecter Ă  distance Ă  des machines virtuelles et essayer de retracer le chemin de la requĂȘte (et de corrĂ©ler manuellement les appels effectuĂ©s), vous deviendrez fou. Avoir un identifiant unique rend la vie beaucoup plus facile. C’est l’une des choses les plus simples que vous puissiez faire pour gagner du temps Ă  mesure que votre service se dĂ©veloppe.

Niveau moyen

Les conseils ici sont plus complexes que les prĂ©cĂ©dents, mais les bons outils facilitent la tĂąche, offrant un retour sur investissement mĂȘme pour les petites et moyennes entreprises.

Journalisation centralisée

Toutes nos félicitations! Vous avez déployé 100 machines virtuelles. Le lendemain, le PDG vient se plaindre d'une erreur qu'il a reçue lors du test du service. Il indique l'ID correspondant dont nous avons parlé ci-dessus, mais vous devrez parcourir les journaux de 100 machines pour trouver celle qui a provoqué le crash. Et il faut le trouver avant la présentation de demain.

MĂȘme si cela semble ĂȘtre une aventure amusante, il est prĂ©fĂ©rable de vous assurer que vous avez la possibilitĂ© de rechercher tous les magazines au mĂȘme endroit. J'ai rĂ©solu le problĂšme de la centralisation des journaux en utilisant la fonctionnalitĂ© intĂ©grĂ©e de la pile ELK : elle prend en charge la collecte de journaux consultable. Cela aidera vraiment Ă  rĂ©soudre le problĂšme de la recherche d’une revue spĂ©cifique. En prime, vous pouvez crĂ©er des graphiques et d’autres choses amusantes comme ça.

Comment bien dormir quand on a un service cloud : conseils architecturaux de base
Fonctionnalité de la pile ELK

Agents de surveillance

Maintenant que votre service est opĂ©rationnel, vous devez vous assurer qu’il fonctionne correctement. La meilleure façon d'y parvenir est d'exĂ©cuter plusieurs agents, qui fonctionnent en parallĂšle et vĂ©rifient qu'ils fonctionnent et que les opĂ©rations de base sont effectuĂ©es.

A ce stade, vous vérifiez que la version en cours se sent bien et fonctionne bien.

Pour les projets de petite et moyenne taille, je recommande Postman pour surveiller et documenter les API. Mais en gĂ©nĂ©ral, vous voulez simplement vous assurer que vous disposez d’un moyen de savoir quand une panne s’est produite et d’ĂȘtre averti en temps opportun.

Mise à l'échelle automatique en fonction de la charge

C'est trĂšs simple. Si vous avez des demandes de maintenance de VM et que son utilisation de la mĂ©moire approche les 80 %, vous pouvez soit augmenter ses ressources, soit ajouter plus de VM au cluster. L'exĂ©cution automatique de ces opĂ©rations est excellente pour les changements de puissance Ă©lastiques sous charge. Mais vous devez toujours faire attention au montant que vous dĂ©pensez et fixer des limites raisonnables.

Comment bien dormir quand on a un service cloud : conseils architecturaux de base
Avec la plupart des services cloud, vous pouvez le configurer pour une mise à l'échelle automatique en utilisant davantage de serveurs ou des serveurs plus puissants.

SystÚme d'expérimentation

Un bon moyen de dĂ©ployer les mises Ă  jour en toute sĂ©curitĂ© est de pouvoir tester quelque chose pour 1 % des utilisateurs pendant une heure. Vous avez bien sĂ»r vu de tels mĂ©canismes en action. Par exemple, Facebook affiche une couleur diffĂ©rente Ă  certaines parties de l’audience ou modifie la taille de la police pour voir comment les utilisateurs perçoivent les changements. C’est ce qu’on appelle les tests A/B.

MĂȘme la publication d'une nouvelle fonctionnalitĂ© peut ĂȘtre lancĂ©e Ă  titre expĂ©rimental, puis dĂ©terminer comment la publier. Vous avez Ă©galement la possibilitĂ© de « mĂ©moriser » ou de modifier la configuration Ă  la volĂ©e en fonction de la fonction qui provoque la dĂ©gradation de votre service.

Niveau avancé

Voici des astuces assez difficiles Ă  mettre en Ɠuvre. Vous aurez probablement besoin d’un peu plus de ressources, donc une petite ou moyenne entreprise aura du mal Ă  gĂ©rer cela.

Déploiements bleu-vert

C’est ce que j’appelle la maniĂšre « Erlang » de se dĂ©ployer. Erlang est devenu largement utilisĂ© avec l’apparition des compagnies de tĂ©lĂ©phone. Les softswitches ont commencĂ© Ă  ĂȘtre utilisĂ©s pour acheminer les appels tĂ©lĂ©phoniques. L'objectif principal du logiciel sur ces commutateurs Ă©tait de ne pas interrompre les appels lors des mises Ă  niveau du systĂšme. Erlang a une bonne façon de charger un nouveau module sans planter le prĂ©cĂ©dent.

Cette Ă©tape dĂ©pend de la prĂ©sence d'un Ă©quilibreur de charge. Imaginons que vous disposez de la version N de votre logiciel, et que vous souhaitiez ensuite dĂ©ployer la version N+1. 

Vous pourrait arrĂȘtez simplement le service et dĂ©ployez la version suivante Ă  un moment qui convient Ă  vos utilisateurs et obtenez un certain temps d'arrĂȘt. Mais supposons que vous ayez vraiment conditions strictes de SLA. Ainsi, SLA 99,99 % signifie que vous pouvez vous dĂ©connecter seulement de 52 minutes par an.

Si vous souhaitez vraiment atteindre de tels indicateurs, vous avez besoin de deux dĂ©ploiements en mĂȘme temps : 

  • celui qui est en ce moment (N) ;
  • version suivante (N+1). 

Vous dites à l'équilibreur de charge de rediriger un pourcentage du trafic vers la nouvelle version (N+1) pendant que vous surveillez activement les régressions.

Comment bien dormir quand on a un service cloud : conseils architecturaux de base
Ici, nous avons un déploiement N vert qui fonctionne bien. Nous essayons de passer à la prochaine version de ce déploiement

Nous envoyons d’abord un trĂšs petit test pour voir si notre dĂ©ploiement N+1 fonctionne avec une petite quantitĂ© de trafic :

Comment bien dormir quand on a un service cloud : conseils architecturaux de base
Enfin, nous disposons d'un ensemble de contrĂŽles automatisĂ©s que nous exĂ©cutons Ă©ventuellement jusqu'Ă  ce que notre dĂ©ploiement soit terminĂ©. Si tu trĂšs trĂšs attention, vous pouvez Ă©galement sauvegarder votre dĂ©ploiement N pour toujours pour un rollback rapide en cas de mauvaise rĂ©gression :

Comment bien dormir quand on a un service cloud : conseils architecturaux de base
Si vous souhaitez passer à un niveau encore plus avancé, laissez tout s'exécuter automatiquement dans le déploiement bleu-vert.

Détection des anomalies et atténuation automatique

Étant donnĂ© que vous disposez d’une journalisation centralisĂ©e et d’une bonne collecte de journaux, vous pouvez dĂ©jĂ  dĂ©finir des objectifs plus Ă©levĂ©s. Par exemple, prĂ©disez de maniĂšre proactive les Ă©checs. Les fonctions sont suivies sur des moniteurs et dans des journaux et divers diagrammes sont créés - et vous pouvez prĂ©dire Ă  l'avance ce qui ne va pas :

Comment bien dormir quand on a un service cloud : conseils architecturaux de base
Une fois les anomalies dĂ©tectĂ©es, vous commencez Ă  examiner certains des indices fournis par le service. Par exemple, un pic de charge du processeur peut indiquer qu'un disque dur est en panne, tandis qu'un pic de requĂȘtes peut indiquer que vous devez Ă©voluer. Ce type de donnĂ©es statistiques vous permet de rendre le service proactif.

Grùce à ces informations, vous pouvez évoluer dans n'importe quelle dimension et modifier de maniÚre proactive et réactive les caractéristiques des machines, des bases de données, des connexions et d'autres ressources.

C'est ça!

Cette liste de priorités vous évitera bien des problÚmes si vous développez un service cloud.

L'auteur de l'article original invite les lecteurs à laisser leurs commentaires et à apporter des modifications. L'article est distribué en open source, pull request de l'auteur accepte sur Github.

Que lire d'autre sur le sujet :

  1. Allez et caches CPU
  2. Kubernetes dans l'esprit du piratage avec un modùle de mise en Ɠuvre
  3. Notre chaĂźne Autour de Kubernetes dans Telegram

Source: habr.com

Achetez un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Achetez un hĂ©bergement web fiable avec protection DDoS, serveurs VPS et VDS | ProHoster