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écnicos
Escalamiento
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 de
Microservicios
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 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/
Microservices
Session 2
Soon
An Evening with…

Arkho Innova Meetup Series

An evening with... Microservices - Session 1