Architecture Réactive et Expérience Client
Au risque de commencer par une évidence, dans des marchés compliqués, moroses et concurrentiels, comment sortir du lot? … Avec une expérience exceptionnelle pardi! Du coup, nous allons nous intéresser ici à la façon dont les Architectures Réactives permettent de créer une expérience client vraiment différente. Et nous allons l’illustrer à travers quelques projets que nous avons réalisés.
En effet, les architectures réactives sont une approche de conception logicielle qui met l’accent sur la réactivité, la résilience et l’évolutivité. Ça ressemble à ce qu’une expérience client pourrait attendre non?
Petit rappel sur les Architectures réactives
Les architectures réactives reposent sur quelques principes simples mais puissants : ceux du reactive manifesto. La Disponibilité, par exemple, signifie que les applications agissent rapidement aux demandes des utilisateurs. Ensuite, il y a la Résilience, qui assure que même en cas de problème, le système reste opérationnel et offre une expérience sans accroc. De plus, l’Elasticitié permet à ces systèmes de s’adapter (à la hausse ou à la baisse) au volume d’activité sans compromettre leurs performances. Enfin, les Architectures réactives sont “orientées message”, c’est-à-dire que les différentes briques ne sont pas directement reliées entre elles. Elles communiquent à travers des messages qui sont postés dans des files d’attentes (comme un courrier qui attend dans votre boîte aux lettres).
Les architectures réactives viennent de fêter leurs 10 ans d’existence puisque le concept a été lancé en 2013. Les principes ont été utilisés et généralisés par des gros acteurs tels que Netflix, Uber, Spotify ou encore Linkedin pour ne citer que les plus gros.
La stack Technique d’une architecture réactive repose généralement sur des briques telles que Kafka ou Spark, des développements qui sont réalisés en Java Spring Boot, Scala ou encore Go et des couches de gestion des données telles que Cassandra, Elastic ou encore MongoDB.
Mais alors, après ce petit rappel, quel rapport entre Architectures Réactives et Expérience Client.?
Expérience client et maintien de la Continuité de Service
Si vous avez un service de qualité (c’est le présupposé, sinon il va falloir innover et nous ferons un article sur le sujet), bah la moindre des choses c’est que l’utilisateur puisse y accéder. En clair, pour une bonne expérience client, il faut limiter les Interruptions de service!
Or, les architectures réactives sont par construction modulaires. Elles offrent ainsi une solution robuste au défi de la continuité de service.
En effet, la résilience est un des piliers des architectures réactives. Plutôt que de compter sur des solutions de contournement après coup, ces architectures intègrent des mécanismes de résilience dès leur conception. Par exemple, elles utilisent des techniques telles que la duplication des données et la redondance des composants pour garantir une disponibilité continue, même en cas de défaillance d’une partie du système. Cette approche proactive réduit considérablement le risque d’interruptions de service. C’est donc un élément clé de l’expérience client, et in fine, de sa satisfaction.
De plus, les architectures réactives sont intrinsèquement évolutives et “scalables”. Elles sont conçues pour s’adapter de manière transparente à des fluctuations de charge. Ceci permet aux entreprises de répondre efficacement à une demande croissante sans compromettre la qualité du service. Cette capacité à évoluer dynamiquement garantit une continuité de service constante, même dans des environnements hautement changeants et imprévisibles. Une remarque et non des moindres c’est que l’adaptation fonctionne dans les deux sens… En cas de baisse d’activité on va libérer des ressources et donc faire des économies!
Ensemble, ces caractéristiques font des architectures réactives un choix idéal pour les entreprises qui cherchent à maintenir une continuité de service ininterrompue et donc une très bonne expérience client.
Architectures Réactives, Expérience Client et l’interaction Temps Réel
On connaît grâce aux réseaux sociaux, le principe du FOMO qui nous rend accro aux notifications… Force est de constater que ce principe ne se limite pas aux réseaux… Aujourd’hui, le temps réel est devenu la norme! Et en cas de retard, l’expérience client peut vite en pâtir… Si vous renouvelez votre mot de passe, vous allez directement dans votre boîte mail pour récupérer le lien de connexion et pas le lendemain. Si vous vous faites livrer quelque chose, il y a de fortes chances que vous ayez pris l’habitude de suivre en temps réel votre livreur pour vous préparer à l’accueillir…
Or, les architectures réactives sont une solution de choix pour faire du temps réel.
Un certain nombre d’applications et d’architectures traditionnelles reposent sur des principes de batch. Avec les architectures réactives, les actions donnent lieu à des messages et les messages “vivent leur vie” indépendamment des autres. Même si en réalité, la plupart des bus de messagerie fonctionnent par micro-batch, le traitement d’une action utilisateur est beaucoup plus rapide qu’avec des applications plus traditionnelles. C’est donc le même système qui donne de la flexibilité en cas de problème (le traitement asynchrone des messages par chaque composant) qui garantit la rapidité d’exécution en temps normal.
Mais ce qui est important dans le temps réel, c’est surtout l’expérience client que cela permet. D’abord, comme illustré plus haut, cela permet de positionner son service au plus au niveau. Le temps réel devient la norme et en assurant une “réactivité” maximale de son SI, on se met en capacité d’améliorer la satisfaction du client final.
Par ailleurs, une autre caractéristique clé des architectures réactives est la capacité à mettre en place un suivi en temps réel de l’activité. Cela va permettre de piloter l’activité et de réagir au plus tôt en cas de dysfonctionnement ou de risque. Je parle ici d’activité technique (temps de réponse, problème d’infrastructure, saturation…) mais aussi et surtout d’activité “métier”. Il s’agit alors d’assurer un bon fonctionnement des processus qui délivrent le service ou le produit au client final. Sur une architecture classique et souvent “monolithique”, on détecte souvent les problèmes trop tard. Avec une architecture réactive, on suit en temps réel et on peut donc prendre des actions préventives.
Au-delà de son exigence, le temps réel permet également une meilleure intimité avec l’utilisateur. L’aspect FOMO, le suivi en temps réel sont autant d’occasions d’interagir avec l’utilisateur. Et donc de renforcer les échanges avec ce dernier. Ainsi, chez un de nos clients, La Poste Colissimo, la mise en place du temps réel a permis de développer “l’interactivité” dans le processus de livraison. D’abord à travers les notifications qui sont envoyées au bon moment et en fonction du contexte et des préférences du client. Mais l’idée est ainsi d’offrir la possibilité au destinataire de modifier les instructions de livraison en fonction de la situation.
Vous avez peut-être expérimenté cela avec la possibilité de changer de destination la veille de la livraison (ex. en choisissant un point de retrait plutôt qu’une livraison à domicile) mais le principe permet d’aller beaucoup plus loin. On peut, de plus en plus, “interagir” avec son colis en fonction de son cycle de vie. Cela rend forcément les choses plus compliquées d’un point de vue logistique puisque cela nécessite d’adapter le processus en fonction des retours. Par contre, l’expérience client est optimale puisqu’elle est personnalisée!
C’est un élément important, à mon sens, qu’offrent les architectures réactives. La possibilité de personnaliser les interactions client en fonction des données en temps réel. Je l’ai illustré dans le cadre d’une livraison de colis, chez un de nos clients, mais c’est également ce qu’on connaît depuis des années sur l’ajustement dynamique du contenu d’une page web. Les publicités et les possibilités de clic sont modifiées en fonction du comportement de navigation de l’internaute. Cela offre une expérience plus pertinente et engageante. Au final, l’expérience est améliorée, mais surtout… le taux de conversion et les revenus!
Ainsi, les architectures réactives sont un atout de poids dans la création d’une expérience client “aux petits oignons”. Elles permettent d’avoir une meilleure disponibilité des systèmes et de mettre à disposition des clients une expérience “temps réel” qui devient de plus en plus la norme. L’enjeu, c’est de pouvoir adapter et personnaliser l’expérience de son utilisateur afin d’anticiper et d’interagir au bon moment… Un rêve mais aussi de plus en plus une réalité.