image représentant les lumières d'un dôme

« Le meilleur moment pour planter un arbre était il y a 20 ans.
Le deuxième meilleur moment est maintenant !»

Les architectures réactives ont été introduites sur le marché depuis bientôt une décennie et ont révolutionné les systèmes d’information en apportant une grande agilité et une meilleure adaptation au changement. Chaque jour, de nombreuses entreprises franchissent le pas, souvent convaincues par les résultats de leur pairs, ou à la suite d’un événement malheureux rencontré sur un SI traditionnel.
Avant de se lancer, Il est légitime de se demander ce que l’architecture réactive apporte pour le métier, car celle-ci représente un investissement pour les managers, directeurs et responsables de SI. Tout d’abord, qu’est ce qu’une architecture réactive ?

Qu’est ce qu’une architecture réactive ?
Une architecture réactive est une architecture qui répond à 4 principes :

  • Être orienté message : les différents composants des architectures doivent communiquer via l’envoi de message de manière asynchrone. En d’autres termes, il faut éviter au maximum de bloquer les composants pour attendre des réponses à des requêtes. Cela garantit un couplage faible des composants et facilite la mise en oeuvre des trois autres principes.
  • Être résilient face aux erreurs : les erreurs sont inévitables. Une coupure réseau, une anomalie non détectée en phase de recette, ou une dépendance externe indisponible sont des exemples parmi tant d’autres. Le système doit être résilient face à des erreurs, c’est à dire qu’il doit pouvoir se remettre automatiquement dans un état de fonctionnement normal quel que soit l’échec rencontré.
  • Être souple et élastique : face à la montée ou à la baisse de charge, le système d’information doit pouvoir s’adapter de manière à ce que le SLA ne soit jamais affecté. Cela est réalisé au travers d’un ajustement des ressources alloués à chacun des services du système.
  • Être disponible : quelle que soit la charge de travail, l’erreur rencontrée ou le contexte d’exécution, le système doit répondre dans un temps décent et assurer une qualité de service vis à vis des sollicitations de l’utilisateur.
4 principes pour les architectures réactives : responsivité, résilience, elasticité et asynchronicité des communications
Les quatres principes des architectures réactives

Un manifeste, signé par près de 25000 personnes au moment de l’écriture de cet article, encadre la définition exacte d’un système réactif et est disponible ici : https://www.reactivemanifesto.org/fr

Quels avantages y a-t-il à implémenter des systèmes réactifs ?
S’agissant de prendre la décision pour une équipe, un pôle ou une branche de l’entreprise, le doute s’installe quant à la valeur ajoutée d’un point de vue business des architectures réactives. Nous vous avons listé ici les principaux avantages à migrer vers un système réactif.

1- Augmenter la réactivité face au besoin de l’utilisateur :
Un client est par définition exigeant. Lorsqu’un besoin se fait entendre, la fenêtre pour y répondre se fait courte. D’autant plus qu’à l’ère de la digitalisation, ce besoin évolue rapidement. Un cycle de développement classique ne permet pas de mettre en production assez rapidement pour répondre en temps et en heure, d’où le besoin d’agilité.

Pour des systèmes d’information classique, le couplage fort entre les différents composants ralentit considérablement les phases de développement. Les tests de non régression sont de plus en plus nombreux, les déploiements de plus en plus lents et l’application en elle-même ralentie.

Dans une architecture réactive, le couplage faible entre les composants rendu possible grâce aux communication asynchrones augmente les possibilités d’agilité dans le développement et les déploiements.

2- Absorber les montées en charges pendant les périodes pleines :
Faire la queue dans une boutique (souvent une franchise) et voir que la personne à la caisse est ralentie dans son travail, “à cause du système”, cela nous est déjà arrivé. Ces ralentissements ont lieu durant les heures de pointe où l’afflux de clients est le plus important. Malheureusement, c’est aussi à ce moment là que beaucoup de clients ressentent de la frustration vis à vis du service qui leur est fourni.

Un système réactif absorbe les montées de charge en adaptant les ressources sous-jacentes aux applicatifs. Cette adaptation est encouragée par l’utilisation du cloud où les ressources peuvent être augmentée simplement dans un système d’information. En combinant une architecture réactive et un hébergement cloud, l’élasticité est considérablement augmentée, fournissant à l’utilisateur finale une expérience optimale.

3- En finir avec les systèmes qui tombent en cascade
Aucune entreprise ne veut apparaître sur les news lorsque son système d’information est en échec. Aussi, aucune entreprise ne peut se prémunir à 100% de l’échec de l’un de ses services informatiques. Alors qu’est-il possible de faire à ce moment-là ? Diminuer le couplage des composant au minimum possible ?

L’un des principes de base de l’architecture réactive est son orientation message, les communications se font de manière asynchrone et les couplages entre les différents composants sont faibles. Dans de telles architectures, le risque d’échecs en cascade est grandement diminué voire totalement supprimé. Pour assurer la résilience d’un service qui échoue, un système réactif met en place une mécanique d’auto-réparation (par la réplication de ses données, les réinitialisations automatiques de systèmes défaillants etc…)

4- Augmenter les résultats et le taux de conversion
“Un client satisfait est un client qui revient”
Pour satisfaire le besoin du client, il faut lui fournir une expérience d’utilisation agréable. Eviter les pages qui ralentissent, les applications qui se ferment sans raison apparente, les résultats incohérents.

Un client doit avoir un service qui répond à son besoin rapidement, oui, mais aussi qui s’adapte à l’évolution de celui-ci. Lorsqu’une banque repère le besoin de ses clients en terme de coaching, il faut qu’elle puisse adapter son système assez rapidement pour gagner la confiance et l’adhésion de son client. D’autant plus que dans un domaine concurrentiel, cette rapidité d’itération doit être accrue pour ne pas perdre de part de marché.

Agilité et architectures réactives vont de pair
les organisations qui définissent des systèmes … sont contraintes de les produire sous des designs qui sont des copies de la structure de communication de leur organisation.”  Melvin Conway

Concevoir un système réactif avec des méthodologies agiles permet de catalyser la transformation du SI. Les avantages que procurent cette combinaison sont nombreux et méritent un article spécifique. Un des avantages les plus remarquables est que la taille d’équipe Agile (pizza team ~ 6 à 12 personnes) est optimale pour gérer quelques microservices réactifs. Pour un système réactif, les dépendances entre équipe sont réduites et favorisent l’autonomies de celles-ci.

Pour aller plus loin :
Un cours réalisé conjointement par Lightbend et IBM (partenaires de Mind7 Consulting)
“Reactive Microservice Architecture” par Jonar Boér, co-auteur du manifeste réactif et CTO de Lightbend

 

Ismail Hrimech,
Tech Lead Big Data