Les microservices (également appelés architecture de microservices) sont une approche architecturale dans laquelle une application unique est composée de nombreux composants ou services plus petits, faiblement couplés et pouvant être déployés indépendamment. Ces services (également appelés microservices) possèdent généralement leur propre pile technologique, notamment une base de données et un modèle de données, et communiquent entre eux via une combinaison d'API REST, de diffusion de flux d'événements et de courtiers de messages.
Les microservices pouvant être déployés et redéployés indépendamment les uns des autres, sans s'impacter mutuellement ni perturber l'expérience de l'utilisateur final, ils sont parfaitement adaptés aux méthodologies de distribution automatisée et itérative telles que l'intégration continue/déploiement continu (CI/CD) ou DevOps.
Outre le fait qu'ils sont utilisés pour créer des applications cloud natives, les microservices peuvent être utilisés pour moderniser les applications monolithiques traditionnelles.
Dans une récente enquête d'IBM auprès de plus de responsables informatiques, de responsables de développement et de développeurs, 87 % des utilisateurs de microservices s'accordent à dire que l'adoption des microservices vaut l'investissement et les efforts qu'ils impliquent.
Les développeurs déploient souvent des microservices à l'intérieur de conteneurs (des composants d'application légers et exécutables qui combinent le code source de l'application, dans ce cas, le code des microservices) avec toutes les bibliothèques et dépendances du système d'exploitation nécessaires pour exécuter le code dans n'importe quel environnement. Plus petits, plus efficaces en termes de ressources et plus portables que les machines virtuelles (VM), les conteneurs sont de fait les unités de calcul des applications modernes cloud natives.
Les conteneurs amplifient les avantages des microservices en permettant un déploiement et une gestion cohérents dans un environnement hybride multicloud : clouds publics, clouds privés et infrastructure sur site. Mais au fur et à mesure que les applications cloud natives se multiplient, les conteneurs et la complexité de leur gestion augmentent également. La plupart des organisations qui utilisent des microservices conteneurisés utilisent également une plateforme d'orchestration de conteneurs, telle que Kubernetes, pour automatiser le déploiement et la gestion des conteneurs à grande échelle.