Microservicios es un tipo de arquitectura que nos permite desacoplar sistemas pasando del clásico estilo monolítico a tener sistemas mucho más pequeños y mantenibles.
Temas
Definición
Se puede decir que los microservicios son un conjunto de componentes pequeños y autónomos que se colabiran entre si.
Small autonomous services that work together

SOA vs Microservicios
SOA | Microservicios |
Reusabilidad en servicios suministrados por diferentes aplicaciones | Se enfoca en el servicios totalmente desacoplados |
Un cambio sistemático requiere modificar el monolito | Un cambio sistemático es para crear un nuevo servicios |
Los DevOps y la entregas continuas llegan a ser populares pero no son lo importante | Es altamente enfocado en los DevOps y las entregas continuas |
Enfocado en negocios con funcionalidades reusables | Más importante el concepto que el contexto delimitado |
Para la comunicación se usan enterprise services bus ESB | Para la comunicación se usan sistemas de mensajería menos elaborados |
Soporta múltiple protocolos de mensajes | Usa protocolos lijeros tales como HTTP, Rest y API de terceros |
Usa una sola plataforma y todos los servicios se despliegan sobre esta | Los servidores de aplicaciones no son muy usados, es más popular el uso de plataformas en la nube |
El uso de contenedores es menos popular | Usa contenedores (tales como docker) |
Los servicios SOA comparten el almacenamiento de datos | Cada microservicios tiene su propio sistema de almacenamiento de datos |
Estándares y administación son comunes | Administración es independiente con gran enfoque en equipos de colaboración y libertad de elección |
Características
- Componentes via servicios
- Son organizados alrededor de las necesidades del negocio
- Productos, no proyectos
- Smart endpoints and dumb pipes
- Gobernabilidad descentralizada
- Gestión de datos descentralizada
- Automatización
- Diseñados para prevenir fallos
- Diseño evolutivo
¿Qué se busca con los microservicios ?
Básicamente los microservicios para dar solución a los problemas dados en los sistemas monolíticos. Entre algunas soliciones se tienen.
- Servicios pequeños e independientes –> principio de responsabilidad única
- Unidades de despliegue pequeñas
- Reducción de tiempo de desarrollo
- Agilidad en hot fixes •Multitecnología
- Fácil escalamiento horizontal
Ley de conway
organizations which design system…are constrained to produce designs which are copies of the communication structure of these organization

Ventajas
- Otorga a los desarrolladores libertad de desarrollar y desplegar servicios de forma independiente
- Un microservicio se puede desarrollar con un equipo de trabajo mínimo.
- Se pueden usar diferentes lenguajes de programación en diferentes módulos.
- Fácil integración y despliegue automático (por ejemplo con Jenkins…).
- Fácil de entender y modificar, por lo que la integración de nuevos miembros al equipo de desarrollo será muy rápida.
- Una nueva tecnología y adaptación de procesos se vuelve más fácil. Puede probar nuevas tecnologías con los microservicios más nuevos que creamos.
- Ciclos de lanzamiento más rápidos.
- Escalando con la nube.
Desventajas
- Si se cuenta con un gran número de servicios, integrarlos y gestionarlos puede resultar muy complejo
- Esta tecnología suele incurrir en un alto consumo de memoria
- Fragmentar una aplicación en diferentes microservicios puede llevar muchas horas de planificación (y casi podría considerarse un arte).
Beneficios
- Los desarrolladores podrán hacer uso de las tecnologías más actuals.
- El uso de contenedores hará el desarrollo y despliegue de la app mucho más rápido.
- Funcionalidad modular, con lo que la modificación de un módulo no afectará al funcionamiento del resto.
- Fácil de escalar e integrar con aplicaciones de terceros.
Desafíos
- Fácil configuración
- Automatización
- Visibilidad
- Contexto delimitado
- Gestión de la configuración
- Escalamiento de forma dinámica
- Consistencia
- Debugging