Implementando una Arquitectura de Microservicios
-
Upload
federico-damian-lozada-mosto -
Category
Technology
-
view
104 -
download
2
Transcript of Implementando una Arquitectura de Microservicios
FEDERICO LOZADA MOSTOTwitter: @mostofreddyWeb: mostofreddy.com.arFacebook: /mostofreddyLinkedin: ar.linkedin.com/in/federicolozadamostoGithub: /mostofreddy
$ cd /var/www$ tree MyProject -L 2MyProject├── app/├── src/│ ├── Bundle1/│ ├── Bundle2/│ ├── Bundle3/│ ├── ...│ ├── BundleN/├── web/├── vendor/└── ...
Arquitectura monolítica
Arquitectura
Compleja+ acoplamiento
Difícil documentaciónDifícil sincronización
¿Cómo afecta un cambio?
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
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
Arquitectura
Sencilla- acoplamiento + cohesión
Comunicación mediante APIs HTTPPequeños
No afecta a otros servicios
Desarrollo
SencilloServicios pequeños
Independientes
Mayor controlImplemente una necesidad de negocio
Principios SOLID
✓ Single responsability
✓ Liskov Substitution
✓ Interface Segregation
✓ Dependency inversion
✓ HATEOAS✓ HAL✓ JSON-API
Automagic service discovery
DB distribuidas
✓ Cada servicio con su DB✓ NO acoplar servicios por DB
✓ Sincronización de datos✓ Consistencia de datos
DB distribuidas
APIs documentadas
✓ RAML✓ Swagger
✓ Restfull✓ AMQP (ZeroMQ, RabbitMQ, etc)
✓ NO ESB
Comunidación sencilla
✓ Api Blueprint
✓ SNS/SQS✓ Redis
Versionado✓ ¿Se versiona por servicio?✓ NO acoplar servicios por DB
✓ Un componente puede ser un servicio
Componentes
Productos✓ Productos en vez de proyectos
✓ Centralizar logs (Loggly, Logstash)✓ Centralizar monitoreo (Zabix, New Relic)
Monitoreo
✓ 1 servidor → N servidores / containers✓ 1 app → N servicos✓ Troubleshooting
Monitoreo
✓ 1 deploy → N deploy✓ AWS✓ Vagrant / Docker✓ Puppet / Chef
Automatizar deploy
Testing
✓ ¿Como probar enteramente la solución?
BundleA
Data Access
BundleB
UX
Lógica
API Rest
BundleC
BundleA
Data Access
BundleB
UX
Lógica
API Rest
ServicioC