Monolithique vs microservices : un guide sur l'architecture des applications
Aujourd'hui, les entreprises utilisent une multitude d'applications SaaS, 137 en moyenne, d'après le Rapport 2020 sur les tendances SaaS de Blissfully. Ces applications génèrent des téraoctets de données. Souvent, les données présentes sur plusieurs plateformes peuvent être liées, comme l'adresse associée à une carte de crédit utilisée pour un achat en ligne, adresse également exploitée par une plateforme d'expédition, et le suivi de cette transaction en ligne peut être réalisé via la plateforme analytique d'une entreprise.
En matière de déploiement de piles technologiques, les entreprises ont le choix entre deux grands modèles : la mise en œuvre d'une seule plateforme qui combine de nombreuses fonctionnalités ou l'adoption d'une approche « best-of-breed » qui utilise des microsystèmes pour intégrer des services distincts de différents fournisseurs. Quels sont les avantages et les inconvénients de chaque approche ?
Qu'est-ce qu'une architecture monolithique ?
Les applications monolithiques ont été conçues pour traiter de multiples tâches connexes. Il s'agit généralement d'applications complexes qui englobent plusieurs fonctions étroitement couplées.
Prenez par exemple une application SaaS e-commerce monolithique. Elle peut contenir un serveur web, un équilibreur de charge, un catalogue qui propose des images de produits, un système de commande, une fonction de paiement et une composante d'expédition.
Comme vous pouvez l'imaginer, étant donné leur large portée, les outils monolithiques ont tendance à avoir d'énormes bases de code. Une petite modification à une seule fonction peut obliger à compiler et tester toute la plateforme, ce qui va à l'encontre de l'approche agile aujourd'hui privilégiée par les développeurs.
Qu'est-ce qu'un microservice ?
Contrairement à l'approche monolithique, l'architecture microservices permet de déployer de petites applications indépendantes sous forme de services en couplage lâche, reliées entre elles via l'intégration des applications. Avec les microservices, la logique applicative englobe les multiples plateformes, y compris en mode SaaS, les bases de données on-premise et les applications développées en interne destinées à répondre aux besoins non traités par les applications SaaS.
Du point de vue de l'ingénierie logicielle, les microservices peuvent être plus simples à développer. Leur portée est moins large et leur taille est donc plus petite, ce qui permet aux développeurs de les améliorer plus facilement via à une intégration et une livraison en continu (approche CI/CD). Ils peuvent être codés dans n'importe quel langage de programmation. Et ils peuvent communiquer avec d'autres microservices via des API.
Une API (ou interface de programmation d'application) est un ensemble d'appels de programmation qui exposent la fonctionnalité d'une application aux développeurs. Les API simplifient le développement d'applications intégrées en offrant un moyen simple de transmettre des informations d'identification et des données entre les applications.
Monolithe vs microservices
Quelle est donc la meilleure architecture ? La réponse dépend des besoins de chaque organisation. Les entreprises doivent prendre en compte différents critères :
- La facilité de mise en œuvre — On pourrait croire que les systèmes monolithiques sont plus faciles à mettre en œuvre, puisque le logiciel est fourni par un seul vendeur. Ce n'est pas toujours le cas. Les systèmes monolithiques étant généralement complexes, leur déploiement peut être aussi difficile que celui de multiples plateformes individuelles. Le point fort des systèmes monolithiques est leur guichet unique pour l'assistance. Mais c'est un point fort uniquement si le vendeur est réputé pour son assistance de qualité.
- Verrouillage propriétaire — En règle générale, les systèmes monolithiques essaient de couvrir un large éventail de fonctions connexes. Par exemple, une plateforme d'hébergement web monolithique ne comprend pas seulement un serveur web qui gère les requêtes HTTP côté serveur, mais aussi des pare-feux, un équilibreur de charge et un réseau de distribution de contenus. Mais, ayant été conçus pour « tout faire », les systèmes monolithiques ont habituellement du mal à fonctionner avec d'autres systèmes. Ce qui nous amène au point suivant...
- Le contrôle et la propriété de leurs données — Les systèmes monolithiques ne permettent pas aux organisations d'intégrer facilement les données de leurs systèmes. Habituellement, vous ne pouvez utiliser vos données qu'au sein du monolithe. Par exemple, un système d'analyse monolithique qui comprend l'intégration de données, les pipelines de données ETL, un data warehouse et un logiciel analytique peut ne pas fournir d'outils permettant aux entreprises d'accéder à leurs propres données pour les intégrer à d'autres systèmes, ni réaliser des analyses avec d'autres logiciels.
- Retour sur investissement (RSI) — Il est inutile de déployer une application si son RSI n'est pas positif. Si vous développez vos propres applications ou déployez des solutions SaaS, vos ingénieurs logiciels peuvent créer des micro-services relativement rapidement, les déployer dès qu'ils sont prêts et les mettre à disposition des clients (externes ou internes, selon l'application). Au fur et à mesure que vous déployer vos services, vos délais de mise sur le marché diminuent et votre ROI devient positif.
Le marché semble être en train de passer du monolithique au microservice car il est difficile pour les entreprises de combiner toutes les fonctions nécessaires et souhaitées, complètement en phase avec leurs processus en place, sur une même plateforme. La plupart des entreprises obtiennent une meilleure expérience globale en déployant la solution la plus adaptée à des besoins spécifiques, et en les reliant via l'intégration des applications.
L'intégration des applications est un sujet que Talend connaît bien. Nos logiciels permettent à votre organisation de mettre en œuvre des intégrations SaaS point à point et à de créer des API modulaires évolutives dans le cadre d'une architecture orientée évènements. Découvrez comment Talend peut vous aider à intégrer des applications.