Architecture monolithique signifie que toutes les fonctions de l'application sont regroupées dans un seul code développé et déployé.
Architecture orientée services (SOA) et en particulier les microservices — c'est une approche où l'application est composée d'un ensemble de modules interagissant via des interfaces clairement définies (généralement réseau).
Quand le monolithique est avantageux :
Quand SOA est avantageux :
Exemple de comparaison : Monolithique :
public class Application { public static void main(String[] args){ UserService userService = new UserService(); OrderService orderService = new OrderService(); // Logique des commandes, des utilisateurs — tout dans une seule application } }
SOA — interaction via API :
GET /user/42 # requête au service utilisateurs GET /order/532 # requête au service commandes
Caractéristiques clés :
Les services SOA partagent-ils la base de données ?
En général, les services partagent des données pour une faible couplage. Des bases de données communes peuvent être acceptées lors des étapes de migration, mais idéalement, chaque service a sa propre base de données.
Le monolithique est-il toujours moins performant ?
Non, un monolithique peut être plus performant sur de petits volumes, car il n'y a pas de surcoût en appels réseau et en séparation de mémoire.
Peut-on passer à des microservices "d'un coup" ?
Non, la transition se fait généralement par étapes, en commençant par délimiter les frontières contextuelles et les transformer en services.