Descargo de responsabilidad
Espero no pisar los pies de nadie u ofender a los entusiastas de los conceptos.
Antecedentes
He estado buscando diferencias reales entre la arquitectura orientada a servicios y los microservicios, sin encontrar una respuesta clara.
Leo cosas como:
- los efectos secundarios de SOA
- SOA siendo antipatrón
- Los microservicios vinieron para arreglar las fallas de SOA
- Los ESB no son realmente ESB, sino EAI
- Dependencia excesiva en los corredores de mensajes
- Los vendedores abusan de la noción de SOA e intentan vender sus productos.
- SOA crece sin control
Pero aún así, nada define claramente las diferencias arquitectónicas entre la Arquitectura Orientada a Servicios (como concepto) y los Microservicios (como concepto)
Según lo que entendí, ambos tienen:
- Proveedores de servicios, haciendo solo una cosa
- Service Gateway / ESB exponiendo esos servicios a los consumidores
- Consumidores de servicios, acceso a servicios a través de ESB / Service Gateway
Pregunta
Entonces, ¿hay algo diferente aparte de volver a etiquetar SOA en Microservicios? ¿Es una restricción tecnológica colocada para limitar que los microservicios se conviertan en macro?
Nota: no estoy buscando opiniones, solo hechos concretos, con suerte en viñetas
Referencias
- Preguntas de ingeniería de software
- Sitio de Martin Fowler (creo que lo odia a lo grande)
- Info mundo
- Sitio web de Michael Fethers
- Preguntas de desbordamiento de pila
Actualizar
Parece que ocurrió un debate similar en una pregunta de desbordamiento de pila , con opiniones divididas ya sea que los microservicios sean una arquitectura orientada al servicio disfrazada.
Conclusión de la pregunta SO:
- MS es un caso especial de SOA
- MS respalda servicios de alojamiento de aplicaciones de menor tamaño
- MS depende de la tecnología (el uso de HTTP en lugar de opciones de protocolo abierto)
- MS depende de la tecnología para imponer disciplina (implementación automática de servicios)
- MS considera ESB (malvado), pero usa API Gateways, que en mi humilde opinión es un tipo de ESB
Eso concluye que MS es SOA, si lo siguiente es cierto:
- ¿La EM admite la noción de orquestación? Uno o más procesos maestros administran los flujos de trabajo
- ¿Hay una capa de intermediario de mensajes en MS? Un conjunto de adaptadores que traducen formatos de mensajes del espacio de mensajes de los productores de servicios a los consumidores de servicios.
- ¿Pueden los microservicios leer datos de aplicaciones empresariales monolíticas? ¿Pueden ser API de una aplicación monolítica? ¿O tiene que ser aplicaciones independientes autónomas, capaces de operar de forma independiente?
Si la respuesta a la última pregunta resultara no, entonces Microservicios no sería capaz de manejar sistemas de flujo de trabajo complejos, por ejemplo, sistemas de gestión de tarjetas de crédito o sistemas de reconciliación.
fuente
Martin Fowler's Site (I think he hates it big time)
Ese no era mi sentimiento cuando fui a su charla en Barcelona. Es consciente de las compensaciones y de cómo las personas se han cambiado ciegamente a esta arquitectura sin considerar que la EM no es adecuada para todos.Respuestas:
La diferencia principal, que tiene consecuencias generalizadas del proyecto, es que con Microservicios, estos Proveedores de servicios son implementables y escalables de forma independiente .
Esto es genial, porque puedes ser más ágil. Si un servicio necesita ser cambiado, simplemente cambia ese, ninguno de sus familiares. Si desea probar un nuevo marco o lenguaje, simplemente haga un reemplazo directo para ese servicio. Si de repente necesita una capacidad de 100x, encienda algunas máquinas nuevas con ese servicio para manejar esa afluencia. Si desea versionar algo, solo versione sin tocar toda la aplicación. Y hace que las cosas sean más fáciles de monitorear, instrumentar, dividir entre equipos, obsoletas ...
Pero viene con algunas implicaciones pesadas:
fuente
Aquí está el resultado final La única diferencia obvia entre SOA y Microservicios es la noción de
A diferencia de SOA , eso dependería de consumidores y productores de servicios ajenos, delegando la gestión del tráfico, la traducción de formatos de mensajes y la organización de servicios a sistemas externos, por ejemplo, ESB, Service Orchestrator, Message broker.
fuente