El documento presenta una introducción a los microservicios, incluyendo una descripción de sus características principales como el diseño centrado en dominios, el principio de responsabilidad única y la publicación de interfaces explícitas. También discute los beneficios de los microservicios como despliegues independientes, menor impacto de actualizaciones y menores costos de escalamiento. Finalmente, ofrece un ejemplo práctico de migración de una arquitectura monolítica a microservicios utilizando SpringBoot.
2. ARKHO Innova
Meetup series
Gracias por su asistencia!!!
• Un espacio para compartir experiencias y conocimiento
• Un espacio para hacer relaciones entre personas y
equipos con intereses afines
• Un espacio para pasarla bien
3. Overview
• Problemática Actual.
• ¿Qué son los Microservicios?
• ¿Qué resuelven?
• Arquitectura de software orientada a microservicios.
• Microservicios y modelos de Escalamiento.
• Ejemplo práctico con SpringBoot
• Resumen
13. "Microservice Architecture" describe a particular
way of designing software applications as suites
of independently deployable services
Martin Fowler
25 marzo 2014
14. La “Arquitectura de Microservicios" describe la forma
de diseñar aplicaciones de software como una serie de
servicios desplegables de forma independiente
Martin Fowler
25 marzo 2014
15.
16. Se discute por primera vez el término “Microservicio”
en un Workshop de Arquitectos de Software. Venice
USA.
17. El mismo grupo decide en mayo del 2012 que el
nombre más apropiado para esta arquitectura es
“MICROSERVICIOS”
27. Beneficios Microservicios
• Al ser componentes acotados, es más simple la compresión para el
desarrollador
• Despliegues independientes
• Menor impacto de actualizaciones de código
• Actualizaciones independientes de los otros servicios
• Aislamiento y resiliencia a fallas
• Menores costos de escalamiento
• Menor complejidad de escalamiento *
29. Martin Abbott y Michael Fisher
The art of the scalability
Cubo de escalabilidad
30. Eje X
(Scale by cloning)
• Ejecutar múltiples instancias
(clonación) de una aplicación
detrás de un load balancer
• La carga total es 1/N nodos
Eje Y
(Scale by functionalities)
• Ejecutar múltiples instancias o
copias de servicios
• Cada servicio es responsable de
una funcionalidad en específico o
un conjunto de funcionalidades
similares. (dominio)
Eje Z
(Data partitioning)
• Ejecutar múltiples instancias
(clonación) de una aplicación
detrás de un load balancer
• Cada nodo maneja sólo una parte
de la data. (Fragmentación de
datos / Sharding)
Ejes del Cubo de Escalabilidad
40. • Conexiones de alta
velocidad
• Baja latencia
• Mayor cantidad de recursos
• Conexiones de velocidad reducida
(4G /3G / 2G)
• Alta latencia
• Menor cantidad de recursos
Clientes y características de conexión
41. Clientes y características de conexión
Problemas Latencia
Native Mobile Apps
Mala experiencia de usuario
43. • Proporciona APIs que se adaptan a los clientes
• Granularidad fina para clientes desktop
(muchas peticiones)
• Granularidad gruesa para apps mobiles nativas
(idealmente 1 petición)
API Gateway
• Optimiza comunicación entre Cliente y Servicios
• Encapsula detalles de los Servicios. API de APIs.(?)
• Transparencia ante cambio de servicios hacia el lado Cliente
49. Tipos de comunicación entre Servicios
Sync
Async
• Comunicación típica a través de protocolo HTTP
• Puede provocar latencia alta en la respuesta final
• Requiere de un nuevo componente que sirva de intermediario
entre Productor y Consumidor
• Más complejidad para el desarrollo
52. Consideraciones
• Comprender que es más que crear servicios
• Cambio cultural en el equipo. Se debe pensar en API
• El tipo de comunicación cobra mayor relevancia (Sync / Async)
• Conocer DevOps de apoyo
• Pensar en Cloud
53. Bibliografía y lecturas recomendadas
• Microservices - Martin Fowler / James Lewis:
http://martinfowler.com/articles/microservices.html
• The Art of Scalability - Martin Abbott y Michael Fisher
http://theartofscalability.com
• Microservices Architecture
http://microservices.io/
• Microservices Designing Deploying
https://www.nginx.com/wp-content/uploads/2015/01/Building_Microservices_Nginx.pdf
• Microservicios - Sergio Maurenzi
http://sergiomaurenzi.blogspot.cl/2015/04/microservicios-parte-i.html
• Implementación de un API Gateway con ZUUL
http://www.robertocrespo.net/kaizen/zuul-implementacion-de-un-api-gateway/