Blog

Évoluez avant de vous détruire

par Sara Jeanes 9 novembre 2017 | 5 minutes de lecture

Atteindre l’échelle, c’est-à-dire la capacité à répondre à la demande d’applications à n’importe quel niveau, est essentiel si vous souhaitez que votre entreprise et votre base d’utilisateurs se développent, ou si vous espérez être en mesure de gérer les vicissitudes du déploiement de logiciels modernes.

Cependant, la mise à l'échelle n'est pas chose aisée. La plupart des applications existantes peinent à prendre en charge des milliers d'utilisateurs. Un pic de trafic inattendu peut tout simplement perturber une application non conçue pour cela, et d'innombrables clients et investissements sont perdus tandis que l'équipe ITOps peine à déployer des machines virtuelles ou des serveurs rackables pour gérer la charge.

Et même si vous exécutez votre application dans le cloud, son évolutivité n'est pas garantie. Une application cloud mal conçue rencontrera des goulots d'étranglement qui la rendront inutilisable.

Compte tenu des coûts exorbitants des services numériques sous-optimaux en termes de productivité, d'opportunités manquées, etc., l'évolutivité est aujourd'hui essentielle pour toute organisation. Et c'est possible ! Cela nécessite la mise en œuvre de les bons outils et processus , la bonne équipe et les bonnes lignes de communication au sein de cette équipe. J'explique ci-dessous comment atteindre l'évolutivité afin d'éviter de compromettre votre logiciel et votre organisation.

Les principes de l'évolutivité

Lors de la préparation à l'évolutivité, la flexibilité et l'adaptation de l'infrastructure déployée à la charge sont essentielles. Cela peut également optimiser les coûts de déploiement d'une application. Comprendre vos schémas de trafic, votre utilisation moyenne et l'écart type vous aidera à dimensionner correctement votre environnement. Prévoir une évolutivité rapide face à un événement extrêmement rare (mais possible) peut vous éviter bien des soucis en cas de propagation virale de l'application. Si une application est déployée régionalement, des cycles d'inactivité peuvent souvent survenir au milieu de la nuit. La charge en semaine et celle du week-end peuvent varier considérablement. De nombreuses entreprises sont saisonnières, et l'utilisation de l'application est très faible, voire exponentiellement, d'une période de l'année à l'autre.

L'évolutivité implique également de garantir la reproductibilité des artefacts, ce qui renforce la cohérence des déploiements en production. Les artefacts de service peuvent ensuite être mis à l'échelle indépendamment, à mesure que les besoins des applications évoluent et se développent. Cette méthode nécessite une solide compréhension des DevOps , avec une intégration continue durable et déploiement continu pipeline à sa base.

Outils et processus permettant l'évolutivité

Avant tout, le code source de l'application doit être vérifié dans un système de contrôle de version. Au lieu de prendre ce résultat bien structuré et de construire une pile de serveurs sur mesure autour, il faut également transformer la pile de serveurs elle-même en code. Ce processus peut être fastidieux au début, mais la seule façon de faire évoluer une infrastructure de manière cohérente et constante est de ne pas compter sur un membre de l'équipe ITOps pour cliquer sur le bouton « Suivant » ou saisir des commandes dans la console de chaque serveur déployé en développement, en test et en production.

Une fois votre infrastructure et votre code bien définis, vous pouvez écrire des tests d'intégration pour garantir leur bon fonctionnement dans un environnement complet. Pour les rendre encore plus sophistiqués, les conteneurs peuvent servir de blocs de construction d'infrastructure. Ces blocs disposent alors de connexions descendantes cohérentes avec l'infrastructure. Une plateforme de gestion de conteneurs cloud, associée à des fichiers manifestes décrivant l'interopérabilité et l'évolutivité des services, transforme ces artefacts cohérents en une application hautement résiliente et évolutive.

Coordonner votre équipe

L'élément essentiel à l'évolutivité, souvent négligé, est une équipe parfaitement adaptée à la topologie technologique décrite ci-dessus. Une telle équipe comprend trois groupes principaux (remarque : les conventions de nomenclature des titres et la répartition des responsabilités peuvent varier selon les organisations) :

  • Développeurs — alimenter le code d'application dans le pipeline
  • Équipes ITOps — responsable de l'écriture de l'infrastructure en tant que code pour créer des images contenant et exécutant le code de l'application
  • Ingénieurs en fiabilité du site (SRE) — travailler avec l'équipe ITOps pour surveiller et optimiser l'application en cours d'exécution en production, en concevant et en construisant l'environnement pour l'évolutivité et la fiabilité

L'astuce pour coordonner votre équipe et maximiser l'évolutivité consiste à concentrer les SRE sur la fiabilité en exploitant l'infrastructure en tant que code (IaaS) développée par leurs membres, plutôt que de consacrer du temps à la configuration manuelle. Cela crée une organisation d'équipe différente de la structure traditionnelle, où le code applicatif est simplement « déposé » par les développeurs à l'équipe ITOps pour déploiement et exécution. Le modèle traditionnel est un environnement hautement manuel et sujet aux erreurs.

Pour compléter cette visibilité accrue de l'infrastructure, les équipes d'ingénierie peuvent mettre en œuvre une meilleure journalisation des traces applicatives afin d'accélérer la détection des problèmes. Pour encourager la création d'applications mieux instrumentées, les versions Canary peuvent être rapidement déployées auprès d'un sous-ensemble de la base d'utilisateurs, ce qui permet à l'équipe de tester de nouvelles fonctionnalités et de détecter les bugs plus rapidement sans impacter l'ensemble des utilisateurs. Les versions Canary permettent également de déployer progressivement de nouvelles fonctionnalités, réduisant ainsi le risque de pics d'incidents lors du déploiement.

La communication est la clé

Enfin et surtout, n'oubliez pas l'importance de la communication. Il va sans dire que même l'équipe la mieux structurée ne parviendra pas à assurer l'évolutivité si ses membres ne communiquent pas de manière fluide entre eux.

Communication efficace nécessite non seulement des outils capables d'automatiser les tâches de communication, mais également un engagement à garantir que tous les membres de votre équipe « parlent la même langue », ce qui signifie que les développeurs, les ITOps et les SRE peuvent tous communiquer entre eux de manière mutuellement intelligible, car ils comprennent tous les rôles et les besoins de chacun.

Il peut être intimidant de se lancer dans la mise à l'échelle d'une application. Les personnes, les processus et la technologie doivent évoluer pour passer d'une méthode en cascade à DevOps, et pour faire évoluer les pratiques de gestion des infrastructures existantes vers des ITOps et une ingénierie de fiabilité modernes.

De la même manière que le développement agile La révolution a ajouté de la valeur dans un délai plus rapide, chaque étape du parcours de mise à l'échelle apporte une valeur qui peut être réalisée immédiatement.