Equilibrer les dynamiques d'innovation et de stabilité des opérations IT : un défi très actuel

Face à l'évolution des enjeux autour de la conception et de la mise sur le marché des produits aujourd'hui, il est important que les équipes de dev suivent certaines bonnes pratiques pour rester performantes et ne pas être dépassées par la dynamique toujours plus forte d'innovation.

La conception des produits doit aujourd'hui être pensée non seulement en termes de fonctionnalité mais aussi de service et d'expérience client, en attachant une importance particulière à la façon dont les clients peuvent acquérir un produit, s'enregistrer, le configurer, l'utiliser ou encore gérer son niveau de sécurité. La façon dont les clients peuvent être formés, obtenir une aide du support ou encore suivre leur consommation doit susciter davantage de réflexions.

Il est fréquent de voir des produits innovants ne pas marcher comme espéré à cause d'une trop faible prise en compte de paramètres comme la facilité d'utilisation, la dimension du service ou encore la qualité de l'expérience globale.

Les équipes adoptent désormais une approche de mise en œuvre plus incrémentale de l’innovation, notamment au début du cycle de vie du produit, avec le concept de MVP (produit minimum viable), pour structurer une culture de l’innovation centrée sur le client, le service, l’expérience et la performance.

Il s'agit d'opérer une mise sur le marché rapide d'un produit avec ses fonctionnalités et caractéristiques essentielles pour récolter rapidement les premières réactions et retours d'utilisation des clients. En fonction de ces retours, les équipes peuvent alors adapter et accélérer l'innovation en se fondant sur une connaissance réelle du point de vue qualitatif des clients, sur leur expérience de la fonctionnalité et de l'utilisation des produits, associée à des données quantitatives grâce à la télémétrie logicielle. 

Pour faire bien, il faut pratiquer souvent

Pour appliquer cette innovation rapide et incrémentale en ‘sprints’, fondée sur des petites équipes multidisciplinaires et autonomes, intégrant l’ensemble des parties prenantes, de la gestion de produits au développement logiciel, en passant par l’UX, les opérations et l’infrastructure, les pratiques agile et DevOps sont désormais considérées comme des standards. Grâce à elles, les équipes ont une vision globale des besoins clients réels, mais aussi des questions architecturales et opérationnelles très tôt dans le cycle de conception et de développement et y apportent les modifications nécessaires. 

Cette approche DevOps incrémentale se voit logiquement associée à des architectures modulaires construites sur des micro-services faiblement couplés qui interagissent via des interfaces bien définies sous forme d’APIs. Cela permet d'innover localement avec de nouvelles versions d'un micro-service sans impacter trop fortement les autres composants, ce qui diminue et circonscrit considérablement les risques logiciels et opérationnels liés au changement.

Si cette pratique peut paraître, à certains égards, contre-intuitive, déployer plus fréquemment de l’innovation contribue à améliorer la stabilité et la qualité opérationnelles. Car chaque version apporte des changements de façon incrémentale, qui facilitent le travail d'appréhension des équipes, tout en restant limités à un ou à quelques microservices à la fois. Avec un rythme régulier d'innovation, l'environnement opérationnel reste assez similaire d'un déploiement à l'autre, limitant ainsi les risques de dégradation ou de régression. De plus, déployer très régulièrement de nouveaux codes permet de créer une culture d'automatisation des déploiements, et de minimiser les erreurs humaines. 

Un changement de culture s'opère également grâce à la "mémoire musculaire" collective développée par les équipes sur leur façon de bien déployer. En s'entraînant quotidiennement, elles comprennent et maîtrisent beaucoup mieux leurs environnements de production, contrairement aux équipes qui pratiquent un déploiement de nouvelle version seulement une ou deux fois par an, avec un nombre et une complexité de changements qui font porter des risques élevés de régression ou de panne. Pour faire bien, il faut pratiquer souvent.

Développer, tester, supporter et résoudre

Ce changement de culture entraîne aussi un changement des responsabilités et l'apparition de nouveaux rôles. Les équipes DevOps sont les seules à pleinement comprendre l'évolution de leur code et de leur architecture, dans le contexte de changements fréquents sur les micro-services. Grâce à leurs SRE (Site Reliability Engineers), qui fournissent une visibilité de bout-en-bout sur le code, l’architecture, l’infrastructure et les niveaux de performance attendus (SLI/SLO/SLA), les équipes DevOps deviennent aussi responsables de la performance en production. En cas de survenue d'un problème, les SRE et les développeurs sont directement notifiés pour le résoudre et font désormais partie de la chaîne de gestion des alertes et des incidents

A partir du moment où le mode DevOps est correctement mis en place, il est possible d'innover rapidement et de faire se sentir responsables tous les membres de l'équipe à la fois de la fonctionnalité, mais aussi de la facilité d'utilisation, de la disponibilité, des performances et de l'expérience.

Selon le rapport "State of DevOps 2019", les meilleures organisations DevOps déploient des logiciels en moyenne 208 fois plus souvent et 106 fois plus rapidement depuis le codage jusqu'à la production. En revanche, elles subissent 7 fois moins d'incidents pendant les déploiements et récupèrent 2600 fois plus vite après un incident.

La télémétrie permet de mieux mesurer pour performer

Pour allier haute vélocité de développement et hauts niveaux de performance opérationnelle, la Formule 1 ou de SpaceX peuvent être des sources d'inspiration. Le recours à des instruments et à de la télémétrie permet de délivrer des performances hors du commun à vitesse élevée. Grâce à la technologie moderne, il est possible d’instrumenter les architectures logicielles et les infrastructures dans le but de collecter leur télémétrie en temps réel et de l’exploiter via des plateformes d’observabilité. 

Il est devenu incontournable d’utiliser la télémétrie pour gérer des systèmes complexes fondés sur des architectures en micro-services hautement modulaires, avec des déploiements de versions plusieurs milliers de fois par jour.

Les équipes qui aspirent à innover et à faire évoluer leur secteur doivent incorporer la télémétrie et l'observabilité en temps réel dans leurs pratiques d'innovation et axer leur culture sur les données.

Penser en termes de compétences et d'équipes

L'accélération de l’innovation, tout en préservant l’excellence opérationnelle, exige un véritable travail d’équipe dans lequel les compétences, les personnalités et la culture sont des éléments essentiels. En fonction de ses objectifs commerciaux et de ses impératifs de vitesse, chaque entreprise doit identifier les compromis à faire entre la formation des compétences internes, l'expérience et le savoir-faire nécessaires à leurs objectifs et réussir à recruter à l'extérieur des ressources et des savoir-faire clés. 

Pour former une équipe idéale, celle-ci doit posséder, au minimum, les capacités suivantes : penser non seulement en termes de technologie mais aussi en termes de service, d'expérience et de performance ; savoir mettre en œuvre des approches Agile et DevOps incluant l’amélioration en continu et une culture du “blameless post-mortem” de l’analyse des incidents ; maîtriser l'automatisation et la systématisation des processus de développement, de déploiement, et de gestion de la performance et des incidents ; coordonner la gestion des incidents et s'en approprier la responsabilité en s'appuyant sur une compréhension globale du système ; avoir une parfaite compréhension de l’architecture logicielle et de l’infrastructure de bout-en-bout (full-stack) ; et enfin maîtriser l’observabilité pour construire une gestion de la performance fondée sur les données.