El documento habla sobre microservicios y cómo evolucionaron de conceptos como desarrollo ágil de software, entrega continua y DevOps. Explica que los microservicios son servicios pequeños y autónomos que se comunican entre sí de forma ligera para funcionar como una aplicación. También describe algunas características clave de una arquitectura basada en microservicios como configuración, registro, balanceo de carga, circuit breaker y trazabilidad. Finalmente, menciona algunos factores a considerar para determinar si un componente debe implementarse como microservicio
2. Microservicios
A estas alturas todos hemos escuchado o leído, por
lo menos una vez, la palabra “microservicio”...
Es un buzzword que no podemos dejar pasar por
alto. Para bien o para mal, están aquí, y sirven para
algo…
3. De agile a
microservicios
¿Cómo llegamos
aquí? Artículo
“Microservice architecture is
agile software architecture”
Matt McLarty
API Academy, CA Technologies
4. Un poco de historia
Desarrollo ágil de software
Entrega continua (CD)
DevOps
Microservicios
5. Un poco de historia
Desarrollo ágil de software
Entrega continua (CD)
DevOps
Microservicios
6. Un poco de historia
Desarrollo ágil de software
Entrega continua (CD)
DevOps
Microservicios
7. Un poco de historia
Desarrollo ágil de software
Entrega continua (CD)
DevOps
Microservicios
9. ¿Qué son realmente?
Arquitectura orientada a servicios
débilmente acoplados con un
contexto delimitado.
Adrian Cockcroft
VP Cloud Architecture Strategy, AWS
Una suite de pequeños servicios,
en procesos independientes,
comunicados de forma liviana que
funcionan como una aplicación.
Martin Fowler
Agile Manifesto co-author
10. SOA corresponde a la
ORQUESTACIÓN
de servicios y soluciona
problemas típicos de la
INTEGRACIÓN
entre varios sistemas.
11. Una arquitectura orientada
a Microservicios
corresponde a una
COREOGRAFÍA de
servicios que ocurre
dentro de un solo sistema.
13. 1. Configuración
Una configuración centralizada y versionada facilita la manipulación de los parámetros y el rollback
ante situaciones de posibles fallas.
Microservicio A Microservicio B Microservicio C
Config ServerRepositorio
1. Push value
2. Pull value
source
14. 2. Registro
El registro y descubrimiento de servicios facilita la localización de instancias disponibles para cada
servicio. Permite que la ubicación de un microservicio sea indiferente para su invocación.
Microservicio B
Service Registry
1. Register 2. Discover
3. Connect
Microservicio A
Soy “Microservicio A”
y estoy en
“10.0.5.123”
↑
Busco a
“Microservicio A”
↓
Está en
“10.0.5.123”
15. 3. Balanceo
El balanceo de carga en el lado del cliente se apoya en el Registro para dinamizar la elasticidad del
sistema.
Microservicio B
Service Registry
1. Register 2. Discover
Microservicio A’
3. Connect
↑
Busco a
“microservicio A”
↓
Está en esta lista
de lugares
CSLB
Microservicio A’’
Microservicio A
16. 4. Circuit breaker
Este diseño permite que cada microservicio cense los métodos propensos a fallos y en función de
valores estadísticos determine si debe o no inhabilitar momentáneamente un método (corto-
circuito). Tiene la capacidad de invocar un método de respaldo (fallback) mientras el circuito se
encuentra abierto.
Microservicio B
CB
CSLB Microservicio A’
Microservicio A’’
Microservicio A
Fails over threshold? No. 😃
Fails over threshold? Yes. ☹️
Fails over threshold? No. 😃
17. 5. Trazabilidad
Un servidor de trazabilidad distribuida permite poder contar con un único repositorio de logs de
trazabilidad alimentado dinámicamente por las invocaciones internas que realizan los microservicios.
Microservicio A Microservicio B Microservicio C
Tracing Server
“MiSeA-TrxA-Span-1”
“MiSeB-TrxA-Span-2”
“MiSeC-TrxA-Span-3”
Logs y Métricas
20. Podemos apoyar
nuestra decisión en
alguno de estos 6
aspectos Artículo
“Should that be a
microservice?”
Nathaniel Schutta
Pivotal
21. 1) Múltiples tasas de cambio
2) Ciclos de vidaindependientes
3) Escalabilidadindependiente
4) Fallar de forma aislada
5) Simplificar las interacciones con las dependenciasexternas
6) La libertadde elegir la tecnología adecuada para el trabajo
En el 2001, Agile Manifesto: entregables más pequeños en intervalos cortos de tiempo.
Integración continua: combinar componentes de software asap
Cuello de botella --> momento de liberar el software
En el 2006, la integración continua promueve la entrega continua.
Scrum “incremento potencialmente entregable”
Cambios desarrollados y probados --> ambiente productivo asap.
Mayor velocidad y mayor calidad
El desarrollo y el despliegue --> áreas diferentes en la organización
En 2009 John Allspaw y Paul Hammond (Flickr) conferencia
Cambio cultural: mayor colaboración, mayor empatía
Desarrolladores con una perspectiva operativa desde el principio y operadores con un enfoque de ingeniería para resolver problemas mediante automatización.
Mayor complejidad y escala → impedimentos para desplegar funcionalidades sobre sistemas
Servicios discretos enfocados en una parte específica de su negocio → Flexibilidad de acuerdo a su metodología ágil y cultura devops
Amazon, Netflix, Soundcloud → Pioneros en este tipo de arquitecturas
Todos los 4 puntos, objetivos comunes → Ser lo más receptivo posible a las necesidades del cliente, manteniendo altos niveles de calidad del software y disponibilidad del sistema