J'ai fait des recherches sur les architectures de microservices en essayant d'obtenir un aperçu de haut niveau de tous les avantages et inconvénients, pourquoi et pourquoi, etc. Une grande partie des informations que je lis / regarde proviennent de ThoughtWorks (Martin Fowler, Neal Ford, et Al).
La plupart des travaux de Martin Fowler sur le sujet datent de quelques années, lorsque Microservices (en tant que nom connu dans la programmation, sinon en médecine générale) était encore jeune, j'en prends donc une grande partie avec un grain de sel.
Une chose en particulier est la suivante:
En entendant des histoires sur des équipes utilisant une architecture de microservices, j'ai remarqué un schéma commun.
- Presque toutes les histoires de microservices réussies ont commencé avec un monolithe qui est devenu trop grand et a été brisé
- Presque tous les cas où j'ai entendu parler d'un système qui a été conçu comme un système de microservice à partir de zéro, il s'est retrouvé dans de graves problèmes.
Ce modèle a conduit plusieurs de mes collègues à affirmer que vous ne devriez pas démarrer un nouveau projet avec des microservices, même si vous êtes sûr que votre application sera suffisamment volumineuse pour en valoir la peine. .
(ref: https://martinfowler.com/bliki/MonolithFirst.html - mettez l'accent sur le leur)
Maintenant, 3 ans plus tard et avec les microservices un terme plus omniprésent, est-il généralement acceptable qu'un nouveau système soit généralement mieux servi en ayant des blocs de service plus grands (-qui-microservice-mais-plus petits que-monolithiques) pour commencer, et en faisant les rendre plus granulaires dans le cadre d'une mesure évolutive?
Ou, existe-t-il une norme pour commencer un projet à partir de zéro avec une architecture de microservices granulaire, contrairement aux déclarations ci-dessus?
On dirait une approche générale saine, mais curieuse des pensées de la communauté.