He estado investigando arquitecturas de microservicios tratando de obtener una visión general de alto nivel de todos los pros y los contras, cuándo y por qué, etc. Gran parte de la información que estoy leyendo / viendo proviene de ThoughtWorks (Martin Fowler, Neal Ford, et al. Alabama).
La mayor parte del trabajo de Martin Fowler sobre el tema tiene unos pocos años, cuando Microservicios (como un nombre familiar en programación, si no en la práctica general) todavía era joven, por lo que tomo gran parte con un grano de sal.
Una cosa en particular es esta:
Cuando escucho historias sobre equipos que utilizan una arquitectura de microservicios, noté un patrón común.
- Casi todas las historias exitosas de microservicios han comenzado con un monolito que se hizo demasiado grande y se rompió
- Casi todos los casos en los que escuché de un sistema que fue construido como un sistema de microservicio desde cero, terminó en serios problemas.
Este patrón ha llevado a muchos de mis colegas a argumentar que no debe comenzar un nuevo proyecto con microservicios, incluso si está seguro de que su aplicación será lo suficientemente grande como para que valga la pena. .
(ref: https://martinfowler.com/bliki/MonolithFirst.html - énfasis en el suyo)
Ahora, 3 años más tarde y con microservicios, un término más omnipresente, es generalmente aceptable que un nuevo sistema sea mejor servido al tener trozos de servicio más grandes (que un microservicio pero más pequeños que el monolito) para comenzar, y hacer ¿Son más granulares como parte de una medida evolutiva?
O, ¿existe una norma para comenzar un proyecto desde cero con una arquitectura de microservicio granular, en contraste con las declaraciones anteriores?
Parece un enfoque general sensato, pero curioso de los pensamientos de la comunidad.
fuente