Les Systèmes Monolithiques
Les développeurs ont, pendant très longtemps, développé des systèmes monolithiques et sont à l’aise dans la réalisation de telles architectures. Souvent, un hybride entre les microservices et les monoliths est mis en place pour réaliser ce qui est appelé des “microliths”. Akka assiste les entreprises dans leur migration depuis les systèmes monolithiques lorsque ce design pattern n’est plus à leur avantage.
Comme schématisé sur la figure ci-dessus, un microlith partage certaines qualités du microservice. Cependant, ils gardent la même base de données. Le principal avantage que procurent les microservices réside dans le couplage lâche entre les différents services. Le couplage fort a lieu uniquement au niveau des APIs. Le déploiement des microliths peut se faire certes indépendamment. Néanmoins, ils gardent la même base de données et sont donc couplés à ce niveau. Par opposition, les microservices possèdent des bases de données indépendantes et les échanges sont basés sur les principes d’Event Sourcing, CQRS et CRDTs, comme précédemment mentionné.
L’introduction par Amazon de Lambda, qui est une plateforme de processing “server-less”. Elle permet d’allouer dynamiquement des ressources à l’exécution de fonctions et est une excellente opportunité pour utiliser la puissance d’Akka. En d’autres termes, pour une utilisation optimale des ressources mises à disposition et d’avoir des performances optimales, Akka gère tout l’aspect concurrentiel de l’exécution.
Comme illustré sur la figure ci-dessus, Akka permet de s’assurer qu’un système distribué sur plusieurs noeuds peut perdre un noeud et continuer de fonctionner normalement. Akka permet aussi d’augmenter automatiquement la capacité lorsque cela est nécessaire. Cette résilience est très importante aujourd’hui. En effet, chaque système qui subit des échecs importants sans résilience peut faire la une des journaux. En somme, le but pour chaque entreprise est d’assurer la résilience nécessaire pour ne pas subir de communication négative
Systèmes monolithiques et réactifs
Les systèmes réactifs ouvrent de nouvelles opportunités dans les métiers. De fait, ils produisent de la donnée disponible qui peut être exploitée avec des outils d’analytics, de machine learning, AI, ou autres. Dans une ère où la donnée représente le nouvel “Or binaire”, ces systèmes travaillent ensemble pour extraire des informations toujours plus pertinentes et de meilleure qualité. En définitive, l’utilisateur est mieux compris à travers ces travaux d’analyse, et son besoin mieux cerné.
Akka aide les développeurs à construire les systèmes d’information de manière réactive afin de répondre aux principes de la réactivité :
- La disponibilité en toute circonstance, qu’importe le contexte
- L’élasticité face à la montée ou baisse de charge
- La résilience vis à vis des problématiques qui peuvent survenir (comme les coupures réseau)
- L’utilisation des ressources mises à disposition. Ainsi que le économies des coûts d’exploitation en développant un système d’information optimal pour son besoin.
Systèmes monolithiques : systèmes réactifs avec Akka, Play et Lagom
Sur la Figure ci-dessus, est schématisé le lien entre Akka et les autres technologies de Lightbend. Akka est au coeur des autres technologies comme Akka HTTP. Cette technologie étant utilisée pour le développement des APIs RESTful, Play Framework pour les clients web. Ainsi que Lagom dans la construction des microservices avec un pattern prédéfini qui se basent sur le CQRS et l’Event sourcing. Les développeurs peuvent intégrer facilement les outils utilisés dans des clusters. Enfin, ceux-ci suppriment toute la complexité sous-jacente à la structuration des systèmes distribués.
Fonctionnalités commerciales des Systèmes monolithiques
Au delà de l’écosystème open source d’Akka présenté dans ce livre blanc, Lightbend propose un éventail de modules commerciaux pour le support des besoins des entreprises. Par exemple, le monitoring, la télémétrie, des modules de définition de stratégie de résolution de partition réseau et bien d’autres modules de configuration sont disponibles dans l’offre “Lightbend Enterprise Suite”.
Monitoring d’Akka et Télémétrie/logging
La Réactive Plateforme de Lightbend fournit les outils les plus avancés de télémétrie pour les systèmes réactifs :
- Les systèmes monolithiques traditionnels, contrairement aux systèmes réactifs, sont exécutés sur des serveurs couplés étroitement. Cela les rend plus simple à superviser.
- Cependant, les systèmes réactifs sont distribués sur différents microservices, base de données, clusters et data centers. En définitive, monitorer tous ces applicatifs est un challenge considérable. Les technologies traditionnelles sont réalisées pour superviser les systèmes monolithiques et ne sont pas adaptées à ces cas d’usage.
- Lightbend a créé “Cinnamon” dans son offre commerciale afin de fournir une vue détaillée de la santé, la disponibilité et la performance des applications basées sur l’une des technos suivantes : Akka, Play, Lagom et Scala. Cinnamon permet de customiser et de tracer très simplement les logs applicatifs. Enfin, Cinnamon facilite grandement la lecture et l’analyse de ceux-ci.
Akka Split Brain Resolver
Un outil de simplification de la gestion des partitions réseaux et des “splits brains” qui en découlent :
- Les partitions réseaux sont des événements récurrents et inévitables dans les systèmes distribués. Les risques liés à ces événements sont des inconsistances de données. Ils peuvent affecter d’autres composants les utilisant ainsi que l’utilisateur final.
- Bien qu’il soit impossible aujourd’hui de les éliminer totalement, il est possible de se prémunir de la corruption des données en cas d’occurrence d’une partition réseau.
- Akka Split Brain Resolver permet de rapidement résoudre les incohérences de données en fournissant des stratégies d’actions prédéfinies. Selon le cas d’utilisation, il est possible d’adopter la stratégie de résolution des incohérences et d’automatiser le comportement pendant et après la partition réseau.
Akka Thread Starvation Detector
Un module permettant de détecter en amont les goulots d’étranglement.
- Dans la majorité des projets, les entreprises ne peuvent pas effectuer de migration brutale de leur SI. En somme, elles doivent souvent garder pour une longue durée des composants bloquants dans leur SI (JDBC, Base de donnée Oracle etc…).
- Lors de l’utilisation de ces systèmes avec Akka, qui est asynchrone et non bloquant, il est souvent nécessaire de retrouver les endroits où apparaissent les goulots d’étranglement. Ces sections sont responsables des baisse de performance et d’échecs en cascade.
- Akka Thread Starvation Detector permet d’identifier les threads bloqués en mode synchrones et reconnaît les technologies bloquantes qui se connectent aux applications Akka. Le module fournit des informations importantes aux équipes de développement et de DevOps pour résoudre ces problématiques.
Akka Configuration Checker
Ce module analyse la configuration des applications développées avec Akka, Play et Lagom et remonte les possibilités d’amélioration.
- Akka offre une grande flexibilité de configuration pour s’adapter au besoin du métier
- Il est difficile de savoir quand modifier certains paramètres et quand utiliser les paramètres “booster”. Dans l’ensemble, ceux-ci sont souvent dédiés à des cas d’usages spécifiques.
- Akka Configuration Checker permet d’augmenter la productivité du développeur en analysant en profondeur les configurations du projet et en fournissant des recommandations de pratiques d’usage pour la production.
Akka Diagnostics Recorder
Un module facilitant l’envoi de diagnostics critiques au support de Lightbend pour une résolution rapide des problèmes.
- Quand un problème surgit en production, il est vital d’avoir accès aux informations les plus pertinentes. Cela facilite au support Lightbend le débogage et la résolution
- En ouvrant un ticket, l’utilisateur doit souvent chercher à mettre en situation l’équipe de support afin qu’elle puisse lui apporter son aide. En rassemblant manuellement les informations sur le contexte d’occurrence du problème, la résolution prend du temps et peut être infructueuse si les informations essentielles sont oubliées.
- Akka Diagnostics Recorder (DR) permet d’automatiser la collecte d’informations d’exécution (par exemple la configuration). Quand un problème se produit, facilitant l’envoi des données essentielles aux équipes de support de Lightbend pour une assistance rapide.
Akka Multi-DC Tooling (Cluster and Persistence)
La résilience et la scalabilité d’Akka Cluster aux mains des utilisateurs expérimentés pour déployer dans plusieurs Data Centers.
- Pour les systèmes particulièrement volumineux et performants, il peut être bénéfique d’opérer sur de multiples data-centers pour assurer une réactivité en toute circonstance.
- Akka Multi-DC Persistence et Akka Multi-DC Cluster permettent de persister l’état des acteurs au travers des data-centers en gardant la même scalabilité et résilience.
Spécialiste de sujets liés aux Architecture Reactives, j’ai travaillé sur de nombreux projets stratégiques de refonte SI impliquant plusieurs métiers. Je suis également passionné par les sujets liés à l’Agile, je contribue d’ailleurs au blog Organisation Performante.
N’hésitez pas à me faire un retour sur cet article ou à me contacter sur LinkedIn pour partager nos actualités!
Nidhal
Laisser un commentaire