an evening with... microservices - session 1

Post on 22-Jan-2018

205 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

top related