La récente épidémie du Covid-19 a transformé les habitudes de consommation et a engendré une augmentation sans précédent de l’utilisation des services digitaux, ce qui a eu pour effet d’accroître la pression sur les systèmes IT et les applications des entreprises. La bonne nouvelle, c’est qu’il existe des stratégies éprouvées et des bonnes pratiques pour aider les entreprises à gérer de telle situation.
La pandémie du COVID-19 accroit considérablement l’activité digitale. Certaines entreprises essaient de compenser leurs pertes de revenus en basculant tout ou partie de leur activité en ligne, tandis que d’autres tentent de faire face à l’augmentation massive du nombre de leurs utilisateurs en ligne.
Si la plupart des organisations proposent des services numériques, le trafic actuel – notamment sur les services essentiels d’emploi, de santé, et de commerce – a en effet atteint des volumes inédits, auxquels les organisations n’avaient jamais été confrontées jusqu’à présent.
Ces dernières doivent donc se préparer pour être capable non seulement de répondre à une demande attendue et anticipée, mais aussi à une demande imprévisible et soudaine, que ce soit pour les services existants ou pour ceux qui seront développés demain.
Il existe pour ce faire des stratégies éprouvées, et je suis heureux de partager ici de bonnes pratiques pour vous aider à comprendre et à surmonter la situation actuelle, mais aussi à préparer vos applications et vos infrastructures pour pouvoir faire face à une future situation similaire.
Étape 1 : Comprendre les schémas de trafic et les pics potentiels ; supprimer les silos entre les équipes
Pour comprendre l’impact des pics de trafic, prenons l’exemple des sites de e-commerce pendant le Black Friday. Une augmentation massive d’utilisateurs sur une période de temps très réduite entraîne un ralentissement des systèmes, et une augmentation du taux d’erreurs. Les sites d’e-commerce y sont en général bien préparés, dans la mesure où ils savent à quels moments ils vont se produire..
Toutefois la situation vécue par de nombreux sites web au début de la pandémie était tout sauf prévisible, avec des hausses massives et soudaines de trafic, sans schéma clair, ni visibilité sur les prochains pics.
La meilleure façon pour les organisations de ne pas être prises au dépourvu par ces hausses subites et inattendues d’activité en ligne est de repenser la structure de leurs équipes IT, en tenant compte des expériences du passé et en intégrant ces connaissances. Les équipes métiers et techniques doivent pour cela être en phase, communiquer, et se préparer. C’est ce que l’on appelle la stratégie BizDevOps.
Pour développer une approche BizDevOps, les organisations doivent mettre en place une collaboration plus étroite entre leurs équipes, en établissant un modèle de communication intégrée, basé sur les données des utilisateurs finaux. Les équipes doivent se réunir pour passer en revue les évènements de la veille, planifier la journée en cours et anticiper les jours suivants. Si tout le monde partage les mêmes données, il devient beaucoup plus facile de travailler sur un objectif commun. Et lorsque tous sont sur la même longueur d’onde, les organisations sont plus à mêmes d’agir rapidement en cas d’imprévu.
Étape 2 : Comprendre à quoi se préparer
La question n’est pas d’être capable de voir ou de prédire un pic de trafic, car cela n’empêchera pas vos systèmes d’être en surcharge, et les problèmes d’affecter vos utilisateurs. Il s’agit de comprendre à quel moment votre système va lâcher.
Comment savoir à quoi se préparer ?
Difficile à évaluer dans une situation telle que la pandémie, sans précédent dans l’ère digitale. Mais souvent, la meilleure stratégie consiste à effectuer un stress test. Il s’agit de soumettre votre infrastructure à un volume croissant de trafic jusqu’à ce que vous commenciez à constater un impact négatif sur les temps de réponse et/ou d’autres erreurs.
Il faut idéalement avoir un environnement dédié pour cela. Si ce n’est pas le cas, utilisez votre système de production au moment où l’impact est minime sur vos utilisateurs. Une fois que les limites de ce que votre système peut gérer sont connues, vous êtes prêt pour l’étape suivante.
Étape 3: Comprendre pourquoi votre système lâche
Connaître les limites de votre système ne fournira pas pour autant un meilleur service à vos utilisateurs, et en fonction du type de système que vous utilisez, les corrections à apporter peuvent ne pas apparaitre de manière évidente. Elles peuvent être flagrantes, comme l’ajout de nouveaux serveurs, ou plus complexes, comme le changement du comportement d’une application spécifique, en passant par exemple d’un contenu dynamique à un contenu statique, ou en désactivant certaines fonctionnalités en cas de forte charge.
Lorsque vous commencez à atteindre le point de rupture identifié via vos stress tests (étape 2), utilisez l’analyse automatisée de root-cause pour identifier les composants en cause et la raison exacte de leur dysfonctionnement. Cela permettra à vos équipes de savoir comment corriger les problèmes.
Étape 4: Valider les corrections en temps réel
Après avoir compris l’origine des problèmes, vos équipes devront travailler sur leurs corrections, à déployer rapidement en production. Il est donc essentiel de monitorer l’impact de ses corrections sur le fonctionnement global de votre système, en temps réel. Parfois, corriger un problème d’un côté peut en engendrer d’autres ailleurs, ce qui nécessite alors de faire un roll back ou de corriger les nouveaux problèmes.
Il est cependant important de se concentrer sur un problème à la fois, et de valider l’impact des corrections qui y sont apportées. Les équipes doivent commencer par les petits problèmes et, au besoin, combiner leurs corrections plutôt que d’essayer de corriger des processus complexes impliquant de nombreuses interdépendances.
Étape 5 : Automatiser les corrections et les rendre reproductibles
Après l’étape 4, vous aurez donc une liste de petites corrections qui pourront être appliquées séparément. Vous pourriez être tenté de documenter la façon de les exécuter. C’est bien, mais une implémentation reproductible est bien plus efficace qu’une documentation.
La mise à disposition des correctifs dans des scripts présente des avantages, en particulier si vous avez besoin de réagir rapidement à un imprévu. En effet, n’importe qui pourra les lancer instantanément sans avoir à en apprendre les détails. Exécuter un script automatiquement est toujours plus rapide, et surtout plus sûr, que de le lancer manuellement.
Étape 6 : Automatiser le workflow
Si les étapes de ce processus nécessitent la présence d’une personne, elles ne vous prépareront pas à un imprévu qui adviendrait en dehors des heures de bureau. Heureusement, vous avez maintenant tous les ingrédients nécessaires pour automatiser ces processus et vous mener vers ce que l’on appelle le NoOps. Avec une approche NoOps, plus aucune tâche manuelle n’est nécessaire pour exécuter des opérations d’exploitation clairement définies.
Il s’agit donc de lier l’analyse de la root-cause à l’action corrective appropriée. Cela permet aux différentes actions d’être déclenchées automatiquement en cas de besoin.
J’entends d’ici la question « pourquoi ne pas tout simplement configurer vos systèmes pour qu’ils soient toujours à capacité maximale, ou activer toutes les étapes et fonctions de correction ? »
Tout d’abord, parce que l’exploitation d’une infrastructure est coûteuse et que la plupart des sites ne sont sujets qu’à de très courtes périodes de pics (30 à 60 minutes en moyenne). Tourner en permanence à pleine capacité entraînerait une hausse irrationnelle des coûts.
Ensuite, parce que les actions d’atténuation ne sont pas gratuites et peuvent avoir des conséquences importantes sur votre business. Prenons l’exemple des sites médias. Les services tiers, telles les publicités qui s’y affichent, peuvent être la cause d’un ralentissement de votre système pendant un pic de trafic. Une action d’atténuation pourrait consister à supprimer temporairement ces composants du site, ce qui entrainerait une perte en revenus publicitaires, alors que ces recettes pourraient par exemple financer la mise à l’échelle de l’infrastructure, ce qui pourrait avoir un impact plus important encore sur l’expérience utilisateur. Le tout est de parvenir à identifier et comprendre rapidement les causes d’un ralentissement dans votre système, afin de pouvoir concentrer les efforts de vos équipes sur les composants qui impactent le plus le business.