An Evening with…
Arkho Innova Meetup Series
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
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
Arquitectura monolítica tradicional
Algo con más complejidad, misma arquitectura
¿Qué ocurre cuando aumenta la demanda de conexiones?
404 ERROR / 503 ERROR / OMG ERROR
Arquitectura monolítica tradicional en High Availability
Problemas de arquitectura monolítica
Mantención Crecimiento
TécnicosEscalamiento
Problemas de arquitectura monolítica
Monetarios Operacionales
Costos
¿Qué son los Microservicios?
Pero…
"Microservice Architecture" describe a particular way of designing software applications as suites of independently deployable services
Martin Fowler 25 marzo 2014
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
Se discute por primera vez el término “Microservicio” en un Workshop de Arquitectos de Software. Venice USA.
El mismo grupo decide en mayo del 2012 que el nombre más apropiado para esta arquitectura es
“MICROSERVICIOS”
Entonces…
¿Por qué ahora?
DevOps Cloud Containers
Agile Continuos Integration
Herramientas, tecnologías, metodologías que han facilitado el despegue de los Microservicios
Compañías que evolucionaron a Microservicios
Principal impulsor de Microservicios
Principales características de los Microservicios
Domain Driving Design (DDD) Single Responsibility Principle
Explicitly Published Interface Independent DURS(Deployment, Update, Replace, Scale) Smart Endpoint & Dumb Pipes
Colección de Módulos
Colección de Servicios
Primera Aproximación
Primera Aproximación
Qué resuelven los Microservicios
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 *
Microservicios y
Escalamiento
Martin Abbott y Michael Fisher The art of the scalability
Cubo de escalabilidad
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
Ejes del Cubo de Escalabilidad
Ejes del Cubo de Escalabilidad
Ejes del Cubo de Escalabilidad
Ejes del Cubo de Escalabilidad
Volviendo a la primera aproximación
Servicios comunicados entre sí
Acceso a datos de forma fragmentada
Comunicación entre servicios
API GatewayDiscover µServices
Cliente - Microservicios
Desktop
Mobile
• 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
Clientes y características de conexión
Problemas Latencia Native Mobile Apps Mala experiencia de usuario
API Gateway
• 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
API Gateway - On Cloud
Service Discovery - “Server Side”
Service registration
Eureka
Apache Zoo Keeper
Service Discovery - “Client Side”
Ribborn Eureka
Service Discovery - “Client Side”
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
Un ejemplo de arquitectura.
Arquitectura Monolítica a una deMicroservicios
Migrar desde
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
Bibliografía y lecturas recomendadas• Microservices - Martin Fowler / James Lewis:
http://martinfowler.com/articles/microservices.html
• The Art of Scalability - Martin Abbott y Michael Fisherhttp://theartofscalability.com
• Microservices Architecturehttp://microservices.io/
• Microservices Designing Deployinghttps://www.nginx.com/wp-content/uploads/2015/01/Building_Microservices_Nginx.pdf
• Microservicios - Sergio Maurenzihttp://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/
Microservices Session 2
Soon
An Evening with…
Arkho Innova Meetup Series