En informatique, les microservices sont des services logiciels. L'architecture en microservices est une variante du style architectural de l'architecture orientée services (SOA) qui structure une application comme un ensemble de services faiblement couplés. Les microservices indépendants communiquent les uns avec les autres en utilisant des API indépendantes du langage de programmation.
Des API REST sont souvent employées pour relier chaque microservice aux autres. Un avantage avancé est que lors d'un besoin critique de mise à jour d'une ressource, seul le microservice contenant cette ressource sera mis à jour, l'ensemble de l'application restant compatible avec la modification, contrairement à la totalité de l'application dans une architecture classique, par exemple une architecture trois tiers. Cependant, le coût de mise en place, en raison des compétences requises, est parfois plus élevé.
Le terme microservice est apparu en 2011 au cours d'ateliers d'architecture[1], bien qu'il réutilise un grand nombre de principes largement employé par les systèmes d'information des grandes entreprises, notamment les concepts de l'architecture orientée service (SOA[2]).
Le sujet est réellement évoqué à partir de 2014 selon Google Trends[3]. Parmi les pionniers, Netflix a notamment œuvré à populariser ces architectures[4],[5].
La philosophie de l'architecture microservices s'inspire en grande partie de la philosophie UNIX, qui prône « ne faire qu'une seule chose, et la faire bien ».
Il n'existe pas de définition de ce que sont précisément ou ce que ne seraient pas les microservices[6]. L'architecture en microservices est décrite comme suit[7],[8],[9] :
Les services sont petits, et conçus pour remplir une seule fonction.
L'organisation du projet doit prendre en compte l'automatisation, le déploiement et les tests.
Chaque service est élastique, résilient, composable, minimal et complet[9].
« En bref, le style architectural microservice est une approche pour développer une application unique comme une suite de petits services, chacun fonctionnant dans son propre processus et communiquant avec des mécanismes légers. »[10]
« Commençons déjà par un constat clair émis par les précurseurs du microservice : cette architecture est une extension du concept de SOA. »[11]