Je ne parlerais pas de mon expérience personnelle puisqu’au niveau professionnel je ne travaille pas sur une architecture microservice pour des raisons de packagings. Je ne fais que du microservice au niveau personnel sur des projets non significatifs.
Cependant je peux te donner des pistes avec les cas d’usages de :
Between 100-150 services are accessed to build a page.
De plus je te propose ce slide qui regroupe pas mal d’information.
Après pour
Qui bénéficient réellement de ce type d’architecture
Il n’y a pas de réponse simple mais voilà mes pistes personnelles :
- Il faut avoir un vrai besoin d’optimisation des performances comme dirait Donald Knuth
Premature optimization is the root of all evil (or at least most of it) in programming.
Sans oublier Jeff Atwood
Hardware is Cheap, Programmers are Expensive
Par ces citations je veux faire comprendre que parfois un refactoring complet pour changer d’architecture ou commencer avec une architecture trop complexe (telle que microservice) peut être un anti-pattern.
Il faut bien comprendre que le microservice ajoute énormément de complexité :
- Complexité de déploiement
- Complexité d’opération IT
- Complexité pour tester
- Complexité de consistence (à cause de la multiplication des bases de données et des transactions)
Le cloud facilite pas mal de chose et je pense qu’il n’est pas possible (ou difficilement) de faire du microservice sans cloud et son environement (container Docker
, instrumentation Puppet
ou autre, etc).
De plus, il faut aussi bien maitriser son application car le but du microservice est de pouvoir scaler qu’une partie de l’application (celle qui est surcharger) au lieu de scaler un gros block monolithique. Cela peut paraitre une évidence mais ce n’est pas toujours le cas.
Je ne fais qu’esquisser des points, et j’invite chacun à ajouter sa pierre à mon analyse. Je m’excuse par avance pour la possible confusion de mes propos, j’ai écris d’un seul jet.