Les différences entre l’architecture monolithique et les microservices sont diverses et complexes. Chaque option offre des avantages uniques et aucune ne peut être considérée comme supérieure à l’autre.
L’approche monolithique est le modèle logiciel traditionnel. Les microservices reflètent un développement de logiciels plus récent, mais qui n’a pas rendu l’architecture monolithique obsolète.
Supposons que vous ayez commencé à travailler pour une startup technologique et que vous ayez été chargé de mettre en œuvre un plan informatique pour la nouvelle entreprise. Vous devez faire face à une multitude de décisions, mais aucune n’est aussi fondamentale ou aussi ambitieuse que le choix d’une architecture monolithique ou d’une architecture de microservices. Le choix de l’architecture logicielle ne doit pas être fait en vase clos ou sans une compréhension claire des besoins initiaux et éventuels de l’entreprise en matière de traitement de données, car quelle que soit l’approche architecturale choisie, elle aura des répercussions considérables sur la capacité de l’entreprise à atteindre ses objectifs commerciaux.
Les enjeux sont donc considérables. Et parce que vous êtes le nouveau directeur de l’informatique, c’est aussi une décision importante pour vous personnellement. Cette décision pourrait vous mener vers une évolution de carrière considérable si vous faites le bon choix.
Que choisir ? Tout d’abord, examinons les options qui s’offrent à vous.
Comme indiqué, l’architecture monolithique est le modèle traditionnel de développement logiciel. Dans ce type de code, une base de code exécute plusieurs fonctions (c’est-à-dire, des fonctions commerciales). Le noyau de l’ordinateur contrôle toutes les fonctions. Dans les applications monolithiques, tout le code nécessaire à l’ensemble de l’application est conservé dans un emplacement central.
Les applications monolithiques contiennent généralement les composants suivants :
L’utilisation d’une architecture monolithique présente de nombreux avantages :
L’utilisation d’une architecture monolithique présente également certains problèmes :
L’autre modèle de développement logiciel, les microservices, est un style d’architecture cloud natif. Avec les microservices, une application est basée sur plusieurs composants individuels ou services faiblement couplés. Les applications de microservice ont leur propre pile technologique, qui est un ensemble de technologies fonctionnant ensemble pour accomplir une tâche particulière.
Le principal avantage des microservices, c’est qu’ils peuvent être facilement mis à jour pour tenir compte des nouvelles capacités métier au sein de l’application, sans affecter l’ensemble du système. Cela peut se traduire par des économies considérables en termes de temps et de main-d’œuvre.
Les avantages des microservices sont nombreux. Ils s’adaptent à la fois à la croissance constante de l’entreprise et aux évolutions technologiques :
Les microservices offrent des avantages certains, mais leur complexité crée certains problèmes :
Avant de comparer l’architecture monolithique et l’architecture de microservices, abordons quelques détails historiques afin de bénéficier d’un contexte plus large.
À certains égards, il est difficile de retracer l’origine de l’architecture monolithique à une seule date. Plus la technologie est complexe, plus il peut être difficile d’en déterminer l’apparition exacte. Il en va de même pour les architectures monolithiques, qui ont commencé à se développer vers le milieu du XXe siècle.
International Business Machines (IBM) a été un acteur majeur dans ce développement précoce essentiel. Selon Pier-Jean Malandrino, collaborateur de DZone, «... des entreprises comme IBM ont joué un rôle déterminant dans la définition des premières architectures logicielles en développant des ordinateurs mainframe dans les années 1960 et 1970. » 1
Les architectures monolithiques n’étaient pas parfaites : elles étaient souvent écrites dans des langages ultrabasiques et devaient être lues par une seule machine. Comme une seule machine contenait l’ensemble du système, tous les composants de l’ordinateur étaient étroitement couplés. La mise à l’échelle était soit inexistante, soit à peine possible, nécessitant généralement la reconstruction complète d’un système.
Par ailleurs, si l’architecture monolithique semble primitive avec le recul, c’est en partie parce qu’elle était là la première, avant tout autre système d’architecture logicielle. Et elle a été constamment utile, voire résiliente, au fil du temps. Le fait que les architectures monolithiques soient encore utilisées sept décennies après leur introduction en dit long dans un secteur où les changements sont généralement incessants.
L’architecture monolithique a perduré, mais elle n’est plus la seule sur le marché, et ce depuis un certain temps. Au fil des années 1980, le génie logiciel a connu une tendance à la modularité et à l’utilisation de langages de programmation orientés objet. Dans les années 1990, les conditions étaient réunies pour que les systèmes distribués puissent profiter des progrès récents de l’informatique en réseau.
Cela a finalement conduit au développement de microservices, qui se sont généralisés après l’apparition des technologies de cloud computing et de conteneurisation dans les années 2000. L’architecture de microservices a été créée pour améliorer le modèle monolithique en l’adaptant à une mise à l’échelle rapide et à des systèmes décentralisés.
Aujourd’hui, dans les années 2020, le développement de logiciels s’appuie soit sur une architecture monolithique, soit sur une architecture de microservices. Sur la base de ce que nous attendons de l’évolution technologique, nous pourrions supposer que la technologie la plus récente est la meilleure, et dans certaines circonstances, c’est le cas.
Cependant, il est dangereux de faire ce genre d’affirmation générale, principalement parce que ce n’est pas toujours vrai. Il existe encore de nombreuses situations informatiques qui bénéficient de la simplicité du modèle d’architecture monolithique.
Ces deux architectures logicielles présentent des avantages et des inconvénients. Les entreprises doivent donc évaluer soigneusement les deux types et prendre en compte leurs besoins en matière de développement d’applications avant d’adopter un système ou un autre.
Comment l’architecture monolithique et l’architecture de microservices se comparent-elles lorsqu’elles à travers le prisme des étapes opérationnelles clés ?
Il existe un nombre quasi illimité de cas d’utilisation qui peuvent être atteints en utilisant une architecture monolithique ou une architecture de microservices. Voici quelques-uns des plus importants :
Toute mise en œuvre à grande échelle d’une architecture monolithique ou d’une architecture de microservices sera inévitablement erronée si sa conception est réalisée dans un vide effectif, sans tenir compte au préalable de la partie la plus importante de l’équation, à savoir les besoins particuliers de votre startup technologique.
En tant que responsable informatique, il s’agit de l’activité la plus essentielle lors de la planification de vos décisions en matière d’infrastructure logicielle. Il est essentiel de savoir quand utiliser un style d’architecture et d’identifier le système le plus adapté à vos besoins.
L’exercice d’auto-analyse est très précieux, car vous devez choisir le système architectural optimal pour votre organisation, mais aussi estimer avec précision le système architectural dont votre entreprise aura besoin dans les mois et les années à venir. D’une certaine manière, vous devez prédire l’avenir.
Ainsi, bien qu’une architecture monolithique puisse sembler parfaitement idéale pour votre startup, c’est à vous de prévoir la croissance future. Et si une expansion fulgurante est prévue, il pourrait être plus judicieux d’aller de l’avant et d’investir dans une architecture de microservices. Il existe de nombreuses variables à prendre en compte :
Tous les liens sont externes au site ibm.com.
1 « Evolution of Software Architecture: From Monoliths to Microservices and Beyond », Pier-Jean Malandrino, DZone, 11 novembre 2023.
2 « Retail e-commerce sales worldwide from 2014 to 2027 », Statista, mai 2024
Service entièrement géré et à locataire unique pour le développement et la livraison d’applications Java.
Utilisez les logiciels et outils DevOps pour créer, déployer et gérer des applications cloud natives sur de nombreux appareils et environnements.
Le développement d’applications cloud implique de les créer une fois, de les itérer rapidement et de les déployer n’importe où.