L’application monolithe

L’application monolithe

À l’origine, une application dite « monolithe », comme le menhir ou la montagne massive, décrivait une application énorme qui s’installait sur une mainframe, un ancien ordinateur très puissant. Aujourd’hui, on déploie les nouvelles applications sur des serveurs ou dans le cloud. L’application monolithe ne peut pas s’installer sur plusieurs machines (scalabilité horizontale) et son code est très complexe à comprendre, parce qu’elle n’est pas modulaire.

Le style monolithe est une architecture simple qui crée une seule application avec un ensemble de fonctionnalités. Dès qu’il y aura des évolutions ou de la maintenance, le code sera de plus en plus difficile à comprendre. Il peut être choisi pour développer une petite application sans trop de coûts.

Une application est monolithe, car elle n’est pas modulaire. Au début des logiciels, vers 1960, la programmation modulable était de la création de bibliothèques pour réutiliser du code. Plus tard, en 1972, le concept était de cacher une partie du code d’un programme (ou information hiding) pour le protéger de certaines modifications. Deux ans après, en 1974, le concept de la séparation des responsabilités (ou SoC pour separation of concerns) permet d’isoler un programme en plusieurs parties pour distinguer des aspects. Maintenant, un module désigne la séparation entière d’un programme, à un niveau haut, en plusieurs pièces lisibles et compréhensibles.

Bien que deux paradigmes, la programmation structurée et la programmation orientée objet soient proches d’un concept modulaire en facilitant la création d’une application en plusieurs parties, ce n’est pas la même chose. La programmation structurée est à un niveau bas de la séparation de code, et la programmation orientée objet à un type de structure de données.

L’alternative au monolithe est l’architecture trois tiers (séparation en trois couches), les microservices (services indépendants), ou une architecture basée sur les interfaces (ensemble de composants). Le langage Java peut séparer un programme en plusieurs pièces avec ses interfaces et ses packages, mais l’utilisation d’un système de module, depuis la version 9 de Java, peut être également indispensable. Pour preuve, la librairie JDK (librairie de développement Java), contenant une vingtaine de frameworks, a été séparée en une douzaine de modules…

Laisser un commentaire