Successfully reported this slideshow.

Adventureswith micro services

1,768 views

Published on

Published in: Technology, Business
  • Be the first to comment

Adventureswith micro services

  1. 1. Adventures with micro-Services Mohit Thatte (@mohitthatte) Jesal Mistry (@jesalnmistry) ThoughtWorks Inc.
  2. 2. What? Why? How? When?
  3. 3. Components Library Service
  4. 4. What are micro services? small independent composable services that do one thing well
  5. 5. Unix philosophy Write programs that do one thing well. Write programs that work together. cat | grep | sed | awk | ... HTTP is the new pipe!
  6. 6. lots of legacy, no reuse not flexible, high cost of change no one knows how it works concentrated complexity independent small that do one thingcomposable 90 year old business
  7. 7. “A 100k loc app is just 100 1k loc apps waiting to happen” - Jeff Bay
  8. 8. Adventure so far 25 VM’s in production 10+ micro-services one click deployment 60+ VM’s across environments
  9. 9. µService DB µService DB µService DB µService DB
  10. 10. Orders PaymentsCustomersLegacy ResultsOrder Processing Catalog (Games)
  11. 11. Thumb Rules 1 top level resource (2 at most) bounded contexts focus on contracts avoid coupling idempotent jobs extract cross cutting concerns
  12. 12. Orders PaymentsCustomers Communications Legacy ResultsOrder Processing Scheduled Jobs Error reporting Catalog (Games)
  13. 13. Continuous Delivery Is my code good to go to production? Can I deploy it in a single click?
  14. 14. “we’re effectively pushing the complexity from the application into the infrastructure...” - James Lewis
  15. 15. CI + DevOps enables single-click deployment so easy, our product owner does it! it just works™ 3 mins to production (~25 servers)
  16. 16. Puppet Solo Provisioning begins at home - Vagrant Puppet goes through CI just like app code Our ideal : ImmutableServer Provisioning
  17. 17. Tradeoffs benefit cost small units of reuse/maintenance complex infrastructure grow independently (**polyglot) network overhead scale independently fragmented data “easier” to grok “harder” to grok isolated boundaries coarse-grained API logging / tracing

×