Architecture Microservices – Les bonnes pratiques

Après plusieurs années de développement logiciel et de maintenance, certaines applications d’entreprise s’avèrent laborieuses et trop coûteuses à faire évoluer. Ce type de dette technologique est un constat, une difficulté majeure, que rencontrent à terme de nombreuses entreprises.

Cela conduit souvent à faire table rase des développements passés, et à les reconstruire à partir de zéro. L’essor des architectures micro-services (micro-services architectures – MSA) répond à cette problématique, et propose des moyens de la résoudre.

Les architectures micro-services permettent de développer, de déployer et de gérer opérationnellement des applications distribuées, constituées de services aux fonctionnalités complémentaires, potentiellement hétérogènes et interopérables.

Les micro-services favorisent drastiquement l’indépendance des cycles de vie, qu’il s’agisse des cycles de conception, de développement, ou de déploiement en production.

 

Elles se distinguent des architectures orientées services (SOA), répandues depuis environ une décennie :

 

  • Elles émergent de la recherche d’une agilité pratique et d’une efficacité accrue par des précurseurs du Cloud Computing, tels que Netflix, Amazon, Gilt ou Airbnb.
  • Elles sont naturellement adaptées au Cloud, et se déploient nativement sur les « Platforms as a Service » (PaaS). Il s’agit du type de plateformes sur lesquelles elles se sont développées et déployées historiquement, et elles en exploitent naturellement les bénéfices.
  • Elles ne dépendent aucunement d’une solution d’éditeur logiciel, tel que les Enterprise Service Bus (ESB), et minimisent les besoins d’intégration logicielle (EAI), mettant en œuvre des solutions décentralisées et alternatives aux fonctionnalités sophistiquées des ESB (médiation, orchestration de services, etc…)

 

OBJECTIFS DES ARCHITECTURES MICRO-SERVICES

« Qu’est-ce que l’architecture ? », Martin Fowler reprend à son compte la question dans son article ’Who Needs an Architect?’ . Il y développe sa propre définition :

  • À première vue, l’architecture d’une application se résume en la décomposition de la totalité du système applicatif considéré en éléments constitutifs plus simples, aux rôles, responsabilités et limites bien identifiés.
  • Mais, du point de vue pratique des personnes en charge d’une application, l’architecture, c’est surtout, ce qu’il est difficile de changer. De ce point de vue, l’architecture doit faire l’objet de décisions saines en amont d’un projet afin de minimiser les coûts d’évolution.

En effet, les évolutions d’une application nécessitent un effort d’adaptation, et le coût qu’elles induisent s’accroît au fur et à mesure que le système se complexifie. L’évolution d’un système a ainsi naturellement tendance à ralentir au fil du temps, et ce d’autant plus vite que « ce qu’il est difficile de changer » s’accumule.

En conclusion et un peu paradoxalement, une bonne architecture est minimaliste, et permet de changer facilement n’importe lequel de ses composants.

Les principaux buts des architectures micro-services sont :

  • de réduire les empêchements au changement,
  • de libérer les développeurs et les opérationnels des contraintes de la complexité,
  • et finalement d’accroître la compétitivité de l’entreprise.

 

Lire l’article a la source original: Partie 1, Partie 2

Autre article en langue français sur le sujet: Microservices architecture best practices

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s