Top Banner
Implementando una arquitectura de microservicios 13/06/2015
47
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Implementando una Arquitectura de Microservicios

Implementando una arquitectura de

microservicios

13/06/2015

Page 2: Implementando una Arquitectura de Microservicios

FEDERICO LOZADA MOSTOTwitter: @mostofreddyWeb: mostofreddy.com.arFacebook: /mostofreddyLinkedin: ar.linkedin.com/in/federicolozadamostoGithub: /mostofreddy

Page 3: Implementando una Arquitectura de Microservicios
Page 4: Implementando una Arquitectura de Microservicios

Arquitectura monolítica

Page 5: Implementando una Arquitectura de Microservicios

BundleA

Data Access

BundleB BundleC

Browser

Monolithic App

Database

Arquitectura monolítica

UX

Page 6: Implementando una Arquitectura de Microservicios

BundleA

BundleB

BundleC

Monolithic App

Database

Arquitectura monolítica

Data Access

UX

Page 7: Implementando una Arquitectura de Microservicios

$ cd /var/www$ tree MyProject -L 2MyProject├── app/├── src/│ ├── Bundle1/│ ├── Bundle2/│ ├── Bundle3/│ ├── ...│ ├── BundleN/├── web/├── vendor/└── ...

Arquitectura monolítica

Page 8: Implementando una Arquitectura de Microservicios

Monolithic

Arquitectura monolítica - Ups!

mobile

systems

IOT

tablet

Page 9: Implementando una Arquitectura de Microservicios

Arquitectura

Compleja+ acoplamiento

Difícil documentaciónDifícil sincronización

¿Cómo afecta un cambio?

Page 10: Implementando una Arquitectura de Microservicios

Cambios

lentosdifíciles

Page 11: Implementando una Arquitectura de Microservicios

Cambios

lentosdifíciles

Hotfix!!!

Page 12: Implementando una Arquitectura de Microservicios

Deploy

App Completa

HotfixTesting

ReleaseCoordinación

Page 13: Implementando una Arquitectura de Microservicios

RiesgoInterrupción completa

Rollback complejo

Page 14: Implementando una Arquitectura de Microservicios

U$S+ Recursos

+ Infraestructura

+ Tiempo para migrar app

Page 15: Implementando una Arquitectura de Microservicios

Microservicios

Page 16: Implementando una Arquitectura de Microservicios

Microservicios

E-commerce

Payment Gateway Stock

Public API

Reports

Auth

CRM integration

Logistic...

Page 17: Implementando una Arquitectura de Microservicios

Public API

Microservicios

Payment Gateway

E-commerce

Stock

CRM integration

NotificationLogistic

Reports

Auth

Servicio 1

Servicio 2

Servicio 3

Servicio 4

Servicio 5

Servicio 6

Servicio 7Servicio 8

Page 18: Implementando una Arquitectura de Microservicios

Public API

Microservicios

Payment Gateway

Stock

CRM integration

NotificationLogistic

Auth

Page 19: Implementando una Arquitectura de Microservicios

Is an approach to developing a single application

as a suite of small services, each running in its

own process and communicating with lightweight

mechanisms, often an HTTP resource API.

- Martin fowlerhttp://martinfowler.com/articles/microservices.html

Page 20: Implementando una Arquitectura de Microservicios

¿Quienes usan Microservios?

Page 21: Implementando una Arquitectura de Microservicios

Características

Page 22: Implementando una Arquitectura de Microservicios

Arquitectura

Sencilla- acoplamiento + cohesión

Comunicación mediante APIs HTTPPequeños

No afecta a otros servicios

Page 23: Implementando una Arquitectura de Microservicios

Desarrollo

SencilloServicios pequeños

Independientes

Mayor controlImplemente una necesidad de negocio

Page 24: Implementando una Arquitectura de Microservicios

Cambios

RápidosIndependientes

mejor “time to market”

Page 25: Implementando una Arquitectura de Microservicios

Deploy

Por servicio

HotfixTesting

Release- Coordinación

Page 26: Implementando una Arquitectura de Microservicios

Equipos

Especializados

Geodistribuidos

Page 27: Implementando una Arquitectura de Microservicios

Independiente a la tecnología

Page 28: Implementando una Arquitectura de Microservicios

Eficiente

EscalabilidadAuto Scalling

Serv 2

LB

Serv 3 Serv 3

Serv 3

Serv 1

Page 29: Implementando una Arquitectura de Microservicios

Mobile+

API

First

Servicio

Page 30: Implementando una Arquitectura de Microservicios

Independiente

Especializados

Pequeño

Key words

Page 31: Implementando una Arquitectura de Microservicios

Buenas prácticasy

desafíos

Page 32: Implementando una Arquitectura de Microservicios

Principios SOLID

✓ Single responsability

✓ Liskov Substitution

✓ Interface Segregation

✓ Dependency inversion

✓ HATEOAS✓ HAL✓ JSON-API

Automagic service discovery

Page 33: Implementando una Arquitectura de Microservicios

DB distribuidas

✓ Cada servicio con su DB✓ NO acoplar servicios por DB

✓ Sincronización de datos✓ Consistencia de datos

DB distribuidas

Page 34: Implementando una Arquitectura de Microservicios

APIs documentadas

✓ RAML✓ Swagger

✓ Restfull✓ AMQP (ZeroMQ, RabbitMQ, etc)

✓ NO ESB

Comunidación sencilla

✓ Api Blueprint

✓ SNS/SQS✓ Redis

Page 35: Implementando una Arquitectura de Microservicios

Versionado✓ ¿Se versiona por servicio?✓ NO acoplar servicios por DB

✓ Un componente puede ser un servicio

Componentes

Productos✓ Productos en vez de proyectos

Page 36: Implementando una Arquitectura de Microservicios

✓ Centralizar logs (Loggly, Logstash)✓ Centralizar monitoreo (Zabix, New Relic)

Monitoreo

✓ 1 servidor → N servidores / containers✓ 1 app → N servicos✓ Troubleshooting

Monitoreo

Page 37: Implementando una Arquitectura de Microservicios

✓ 1 deploy → N deploy✓ AWS✓ Vagrant / Docker✓ Puppet / Chef

Automatizar deploy

Testing

✓ ¿Como probar enteramente la solución?

Page 38: Implementando una Arquitectura de Microservicios
Page 39: Implementando una Arquitectura de Microservicios

BundleA

Data Access

BundleB BundleC

UX

Page 40: Implementando una Arquitectura de Microservicios

BundleA

Data Access

BundleB BundleC

UX

BundleA

Data Access

BundleB

BundleCUX

Composer

Page 41: Implementando una Arquitectura de Microservicios

BundleA

Data Access

BundleB

UX

Lógica

API Rest

BundleC

Page 42: Implementando una Arquitectura de Microservicios

BundleA

Data Access

BundleB

UX

Lógica

API Rest

BundleC

BundleA

Data Access

BundleB

UX

Lógica

API Rest

ServicioC

Page 43: Implementando una Arquitectura de Microservicios

BundleA

Data Access

BundleB

UX

Lógica

API Rest

ServicioC

Page 44: Implementando una Arquitectura de Microservicios
Page 45: Implementando una Arquitectura de Microservicios

Servicio 1

Servicio 2

Legacy

API Gateway

Servicio N

Page 46: Implementando una Arquitectura de Microservicios

¿Preguntas?

Page 47: Implementando una Arquitectura de Microservicios

Thanks!

FEDERICO LOZADA MOSTOTW: @mostofreddyWeb: mostofreddy.com.arFB: mostofreddyIn: ar.linkedin.com/in/federicolozadamostoGit: mostofreddy