an evening with... microservices - session 1

55
An Evening with… Arkho Innova Meetup Series

Upload: arkhotech

Post on 22-Jan-2018

205 views

Category:

Software


0 download

TRANSCRIPT

Page 1: An evening with... Microservices - Session 1

An Evening with…

Arkho Innova Meetup Series

Page 2: An evening with... Microservices - Session 1

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

Page 3: An evening with... Microservices - Session 1

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

Page 4: An evening with... Microservices - Session 1
Page 5: An evening with... Microservices - Session 1

Arquitectura monolítica tradicional

Page 6: An evening with... Microservices - Session 1

Algo con más complejidad, misma arquitectura

Page 7: An evening with... Microservices - Session 1

¿Qué ocurre cuando aumenta la demanda de conexiones?

Page 8: An evening with... Microservices - Session 1

404 ERROR / 503 ERROR / OMG ERROR

Page 9: An evening with... Microservices - Session 1

Arquitectura monolítica tradicional en High Availability

Page 10: An evening with... Microservices - Session 1

Problemas de arquitectura monolítica

Mantención Crecimiento

TécnicosEscalamiento

Page 11: An evening with... Microservices - Session 1

Problemas de arquitectura monolítica

Monetarios Operacionales

Costos

Page 12: An evening with... Microservices - Session 1

¿Qué son los Microservicios?

Pero…

Page 13: An evening with... Microservices - Session 1

"Microservice Architecture" describe a particular way of designing software applications as suites of independently deployable services

Martin Fowler 25 marzo 2014

Page 14: An evening with... Microservices - Session 1

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

Page 15: An evening with... Microservices - Session 1
Page 16: An evening with... Microservices - Session 1

Se discute por primera vez el término “Microservicio” en un Workshop de Arquitectos de Software. Venice USA.

Page 17: An evening with... Microservices - Session 1

El mismo grupo decide en mayo del 2012 que el nombre más apropiado para esta arquitectura es

“MICROSERVICIOS”

Page 18: An evening with... Microservices - Session 1

Entonces…

¿Por qué ahora?

Page 19: An evening with... Microservices - Session 1

DevOps Cloud Containers

Agile Continuos Integration

Herramientas, tecnologías, metodologías que han facilitado el despegue de los Microservicios

Page 20: An evening with... Microservices - Session 1

Compañías que evolucionaron a Microservicios

Page 21: An evening with... Microservices - Session 1

Principal impulsor de Microservicios

Page 22: An evening with... Microservices - Session 1
Page 23: An evening with... Microservices - Session 1

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

Page 24: An evening with... Microservices - Session 1

Colección de Módulos

Colección de Servicios

Primera Aproximación

Page 25: An evening with... Microservices - Session 1

Primera Aproximación

Page 26: An evening with... Microservices - Session 1

Qué resuelven los Microservicios

Page 27: An evening with... Microservices - Session 1

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 *

Page 28: An evening with... Microservices - Session 1

Microservicios y

Escalamiento

Page 29: An evening with... Microservices - Session 1

Martin Abbott y Michael Fisher The art of the scalability

Cubo de escalabilidad

Page 30: An evening with... Microservices - Session 1

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

Page 31: An evening with... Microservices - Session 1

Ejes del Cubo de Escalabilidad

Page 32: An evening with... Microservices - Session 1

Ejes del Cubo de Escalabilidad

Page 33: An evening with... Microservices - Session 1

Ejes del Cubo de Escalabilidad

Page 34: An evening with... Microservices - Session 1

Ejes del Cubo de Escalabilidad

Page 35: An evening with... Microservices - Session 1

Volviendo a la primera aproximación

Page 36: An evening with... Microservices - Session 1

Servicios comunicados entre sí

Page 37: An evening with... Microservices - Session 1

Acceso a datos de forma fragmentada

Page 38: An evening with... Microservices - Session 1

Comunicación entre servicios

API GatewayDiscover µServices

Page 39: An evening with... Microservices - Session 1

Cliente - Microservicios

Desktop

Mobile

Page 40: An evening with... Microservices - Session 1

• 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

Page 41: An evening with... Microservices - Session 1

Clientes y características de conexión

Problemas Latencia Native Mobile Apps Mala experiencia de usuario

Page 42: An evening with... Microservices - Session 1

API Gateway

Page 43: An evening with... Microservices - Session 1

• 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

Page 44: An evening with... Microservices - Session 1

API Gateway - On Cloud

Page 45: An evening with... Microservices - Session 1

Service Discovery - “Server Side”

Page 46: An evening with... Microservices - Session 1

Service registration

Eureka

Apache Zoo Keeper

Page 47: An evening with... Microservices - Session 1

Service Discovery - “Client Side”

Page 48: An evening with... Microservices - Session 1

Ribborn Eureka

Service Discovery - “Client Side”

Page 49: An evening with... Microservices - Session 1

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

Page 50: An evening with... Microservices - Session 1

Un ejemplo de arquitectura.

Page 51: An evening with... Microservices - Session 1

Arquitectura Monolítica a una deMicroservicios

Migrar desde

Page 52: An evening with... Microservices - Session 1

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

Page 53: An evening with... Microservices - Session 1

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/

Page 54: An evening with... Microservices - Session 1

Microservices Session 2

Soon

Page 55: An evening with... Microservices - Session 1

An Evening with…

Arkho Innova Meetup Series