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



Building large systems the easier way

Gergely Nemeth

January 29, 2015

More Decks by Gergely Nemeth

Other Decks in Programming


  1. Microservices(.js) Building large systems the easier way Gergely Nemeth @nthgergo

  2. $ whoami Work - RisingStack Twitter - @nthgergo GitHub -

    gergelyke Stuff I write - http://blog.risingstack.com
  3. “an approach to developing a single application as a suite

    of small services” Microservices
  4. Microservices Some “small” implementers: Amazon, Netflix, The Guardian

  5. BUT WHY!? Microservices

  6. • built as a single unit • handle HTTP requests,

    execute domain logic, retrieve and update data from the database, and select and populate HTML views to be sent to the browser, handles authentication - in short: does everything • any changes to the system involve building and deploying a new version of the server-side application The Monolithic Way
  7. What about scaling? The Monolithic Way

  8. You are going to have a BAD time. The Monolithic

  9. “Any organization that designs a system (defined broadly) will produce

    a design whose structure is a copy of the organization's communication structure.” -- Melvin Conway, 1967 The Monolithic Way
  10. The Monolithic Way

  11. Back to Microservices Cross-functional teams

  12. Microservices Advantages Small code base

  13. Microservices Advantages Easy to scale

  14. Microservices Advantages Easy to throw away

  15. Microservices Advantages System resilience

  16. Microservices Advantages Easy to deploy You build it, you run

  17. Microservices Ok. How?

  18. Microservices Communication HTTP REST interfaces for communication

  19. Microservices Communication Or messaging over a lightweight message bus (RabbitMQ,

    ZeroMQ, .. )
  20. Microservices Communication Yes, microservices can be written in different languages!

  21. Microservices Decentralized Data Management

  22. Microservices Automation When you own 10s of services, you do

    not want to deploy manually :)
  23. Microservices Automation Use Continuous Delivery: • automated tests • automated

  24. Microservices Design for Failure Monitor & Log everything

  25. Microservices Design for Failure Alerting

  26. Microservices How to get started if you have a monolithic

    architecture? Evolutionary Design
  27. Microservices Evolutionary Design The monolith still is the core of

    the website
  28. Microservices Evolutionary Design Add new features by building microservices

  29. Okok, but what is the catch? Microservices

  30. Your stack traces are gone Microservices

  31. Deploying breaking changes? Microservices

  32. Service discovery Microservices

  33. • Small code base • Easy to scale • Easy

    to throw away • Easy to deploy • System resilience • Possibility to use different tech stacks Summary
  34. Yes, we are hiring ;) RisingStack

  35. $ ./thanks.sh