Blog

Développez-vous 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.

Mais la mise à l’échelle n’est pas une mince affaire. La plupart des applications existantes ont du mal à prendre en charge des milliers d’utilisateurs. Un pic de trafic inattendu peut tout simplement mettre hors service une application qui n’est pas conçue pour cela, et d’innombrables clients et dollars sont perdus pendant que l’équipe ITOps s’efforce de faire tourner des machines virtuelles ou des serveurs en rack pour gérer la charge.

Et même si vous exécutez votre application dans le cloud, l'é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 énormes des services numériques sous-optimaux en termes de productivité, d'opportunités perdues et plus encore, 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 entre cette équipe. Ci-dessous, j'explique comment atteindre l'évolutivité afin d'éviter de faire dérailler votre logiciel et votre organisation.

Les principes de l'évolutivité

Lors de la préparation de l’évolutivité, la flexibilité et l’adaptation de l’infrastructure déployée à la charge sont essentielles. Cela peut également permettre de réaliser des économies de coûts lors du déploiement d’une application. Comprendre vos schémas de trafic, l’utilisation moyenne et l’écart type vous aidera à dimensionner correctement votre environnement, et planifier une mise à l’échelle rapide pour un événement extrêmement rare (mais possible) peut vous éviter bien des maux de tête lorsque l’application devient virale. Si une application est déployée au niveau régional, il arrive souvent que des cycles d’inactivité se produisent au milieu de la nuit. La charge en semaine par rapport à la charge du week-end peut varier considérablement. De nombreuses entreprises sont saisonnières et l’utilisation de l’application est fractionnelle ou exponentiellement inférieure d’une période de l’année à l’autre.

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

Outils et processus permettant l'évolutivité

Tout d’abord, 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 de celui-ci, la pile de serveurs elle-même doit également être transformée en code. Ce processus peut être pénible au début, mais la seule façon de faire évoluer une infrastructure de manière cohérente, à chaque fois, est de ne pas compter sur un membre du personnel ITOps qui clique sur le bouton « suivant » ou qui tape des commandes dans la console de chaque serveur déployé en développement, en test et en production.

Une fois que votre infrastructure et votre code sont tous deux bien définis, vous pouvez écrire des tests d’intégration pour vous assurer qu’ils fonctionnent comme ils le devraient dans un environnement entièrement construit. Pour les amener au niveau de sophistication supérieur, les conteneurs peuvent être utilisés comme blocs de construction d’infrastructure. Ces blocs ont alors des hooks « descendants » cohérents vers l’infrastructure. Une plateforme de gestion de conteneurs cloud, combinée à des fichiers manifestes qui décrivent comment les services s’articulent et doivent évoluer, transforme ces artefacts cohérents en une application hautement résiliente et évolutive.

Coordonner votre équipe

L'ingrédient essentiel à l'évolutivité est souvent négligé : une équipe qui s'adapte bien à la topologie technologique décrite ci-dessus. Une telle équipe comprend trois groupes principaux (remarque : les conventions de dénomination des titres et la répartition des responsabilités peuvent varier selon les organisations) :

  • Développeurs — alimenter le pipeline avec le code d'application
  • Équipes ITOps — responsable de l'écriture de l'infrastructure en tant que code pour créer des images pour contenir et exécuter le code de l'application
  • Ingénieurs en fiabilité de 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é

Pour coordonner votre équipe de manière à maximiser l’évolutivité, l’astuce consiste à faire en sorte que les SRE se concentrent sur les efforts de fiabilité en exploitant l’infrastructure en tant que code que leurs membres ont écrite, plutôt que de passer du temps sur la configuration manuelle. Cela crée un type d’organisation d’équipe différent d’une structure d’équipe traditionnelle, dans laquelle le code d’application est simplement « jeté par-dessus le mur » par les développeurs à l’équipe ITOps pour qu’elle le déploie et l’exécute. 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 un degré plus élevé de journalisation des traces d'application pour aider à détecter les problèmes plus rapidement. Pour inciter à créer une application plus instrumentée, les versions Canary peuvent être rapidement déployées sur un sous-ensemble de la base d'utilisateurs de l'application, ce qui permet à l'équipe de tester de nouvelles fonctionnalités et de trouver des bugs plus rapidement sans affecter la base d'utilisateurs plus large de l'application. Les versions Canary vous permettent également de publier progressivement de nouvelles fonctionnalités, réduisant ainsi la probabilité de pics d'incidents lors du déploiement.

La communication est la clé

Enfin, 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 peuvent pas communiquer de manière transparente 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 se parler de manière mutuellement intelligible, car ils comprennent tous les rôles et les besoins de chacun.

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

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.