Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Implementando una Arquitectura de Microservicios

Implementando una Arquitectura de Microservicios

Microservicios es una aproximacion de desarrollo en pequeños servicios, independientes uno del otro, que pueden ejecutarse en procesos aislados y que se comunican mediante un mecanismo ligero basado en api http

Federico Lozada Mosto

June 13, 2015
Tweet

More Decks by Federico Lozada Mosto

Other Decks in Technology

Transcript

  1. $ cd /var/www $ tree MyProject -L 2 MyProject ├──

    app/ ├── src/ │ ├── Bundle1/ │ ├── Bundle2/ │ ├── Bundle3/ │ ├── ... │ ├── BundleN/ ├── web/ ├── vendor/ └── ... Arquitectura monolítica
  2. Public API Microservicios Payment Gateway E-commerce Stock CRM integration Notification

    Logistic Reports Auth Servicio 1 Servicio 2 Servicio 3 Servicio 4 Servicio 5 Servicio 6 Servicio 7 Servicio 8
  3. 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 fowler http://martinfowler.com/articles/microservices.html
  4. Principios SOLID ✓ Single responsability ✓ Liskov Substitution ✓ Interface

    Segregation ✓ Dependency inversion ✓ HATEOAS ✓ HAL ✓ JSON-API Automagic service discovery
  5. DB distribuidas ✓ Cada servicio con su DB ✓ NO

    acoplar servicios por DB ✓ Sincronización de datos ✓ Consistencia de datos DB distribuidas
  6. APIs documentadas ✓ RAML ✓ Swagger ✓ Restfull ✓ AMQP

    (ZeroMQ, RabbitMQ, etc) ✓ NO ESB Comunidación sencilla ✓ Api Blueprint ✓ SNS/SQS ✓ Redis
  7. Versionado ✓ ¿Se versiona por servicio? ✓ NO acoplar servicios

    por DB ✓ Un componente puede ser un servicio Componentes Productos ✓ Productos en vez de proyectos
  8. ✓ Centralizar logs (Loggly, Logstash) ✓ Centralizar monitoreo (Zabix, New

    Relic) Monitoreo ✓ 1 servidor → N servidores / containers ✓ 1 app → N servicos ✓ Troubleshooting Monitoreo
  9. ✓ 1 deploy → N deploy ✓ AWS ✓ Vagrant

    / Docker ✓ Puppet / Chef Automatizar deploy Testing ✓ ¿Como probar enteramente la solución?
  10. BundleA Data Access BundleB UX Lógica API Rest BundleC BundleA

    Data Access BundleB UX Lógica API Rest ServicioC
  11. Thanks! FEDERICO LOZADA MOSTO TW: @mostofreddy Web: mostofreddy.com.ar FB: mostofreddy

    In: ar.linkedin.com/in/federicolozadamosto Git: mostofreddy