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

Eberhard Wolff on Micro Services

Eberhard Wolff on Micro Services

More Decks by Enterprise Java User Group Austria

Other Decks in Technology

Transcript

  1. Eberhard Wolff - @ewolff Common libraries & technical foundation Order

    Billing Search Catalog E Commerce Shop Deployment monolith Global code integration & coordination needed Code changes to production takes loooong Architecture can be non-monolithic but dependencies might sneak in How to introduce e.g. Elasticsearch for Search?
  2. Eberhard Wolff - @ewolff Micro Services: Definition •  Small • 

    Independent deployment units •  i.e. virtual machine •  Any technology •  Any infrastructure Micro Service Server Micro Service Server
  3. Eberhard Wolff - @ewolff Micro Services •  Component Model • 

    Component… •  Separate process •  Individual deployment unit •  GUI+Logic
  4. Eberhard Wolff - @ewolff Micro Services vs. SOA •  Micro

    Service: 1 service = 1 deployment unit Service + GUI •  SOA: 1 deloyment unit = n services Service / GUI separate
  5. Eberhard Wolff - @ewolff Common libraries & technical foundation Order

    Billing Search Catalog Global code integration & coordination needed Code changes to production takes loooong Architecture can be non-monolithic but dependencies might sneak in How to introduce e.g. Elasticsearch for Search? E Commerce Shop Deployment monolith
  6. Eberhard Wolff - @ewolff Order Billing Search Catalog Order Catalog

    Search Billing Micro Services Team can deploy without integration Changes can be deployed independently & quickly Strong & enforced modularization Technology stack per Micro Service One or many Micro Services per Team
  7. Eberhard Wolff - @ewolff Online Shop Elasticsearch Spring Batch Oracle

    Spring MVC MongoDB Order Catalog Search Billing
  8. Eberhard Wolff - @ewolff Component Model •  No restriction on

    language etc •  Individual processes •  + infrastructure (database etc) •  JARs, WARs, EARs: No good fit •  Monitoring •  Logging
  9. Eberhard Wolff - @ewolff Possible Component Models •  Virtual machine

    •  Docker container •  Installable software (RPM, deb) •  + deployment / config scripts
  10. Eberhard Wolff - @ewolff Conway’s Law as an Enabler • 

    Desired architecture = project structure •  Team for each Micro Service •  Team should be responsible for meaningful features •  Ideal: Independent features
  11. Eberhard Wolff - @ewolff HTTP New Stuff Links No legacy

    code Any technology " Small code base
  12. Eberhard Wolff - @ewolff Monoliths •  Architecture rot •  …not

    maintainable any more •  …and can’t be rewritten / replaced
  13. Eberhard Wolff - @ewolff Micro Services •  Distributed system of

    small units •  Architecture violations harder •  Small units •  Easy to replace
  14. Eberhard Wolff - @ewolff Continuous Delivery: Build Pipeline Commit Stage

    Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release ECommerce System
  15. Eberhard Wolff - @ewolff Build Pipeline: Problems •  Complex infrastructure

    •  Huge database •  3rd party integration •  Slow feedback •  Test everything for each commit •  Huge deployment unit •  Deployment slow
  16. Eberhard Wolff - @ewolff Micro Services ECommerce System 3rd party

    systems Database Order Catalog Billing Search
  17. Eberhard Wolff - @ewolff Commit Stage Automated Acceptance Testing Automated

    Capacity Testing Manual Explorative Testing Release Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release Order Billing Customer
  18. Eberhard Wolff - @ewolff Build Pipeline for Micro Services • 

    Independent deployment •  Build pipeline per Micro Service •  Smaller •  Easier to set up •  Less features (3rd party systems) •  Faster Feedback: Less tests
  19. Eberhard Wolff - @ewolff Quick Deployments Time Size & Risk

    Manual Deployment Pipeline Continuous Delivery Pipeline Monolith Micro Services
  20. Eberhard Wolff - @ewolff Why Micro Services? •  Strong modularization

    •  Small deployment units •  Faster & easier deployment •  Sustainable development speed •  Continuous Delivery •  Less risk in deployment •  Best technology for each service
  21. Eberhard Wolff - @ewolff Start BIG •  Won’t have too

    much code at the start anyway •  Refactoring easier •  Can build architecture as you go •  Let the functional architecture grow!
  22. Eberhard Wolff - @ewolff Conclusion: Micro Services •  Micro Services

    are a new way of modularization •  More technological freedom •  Easier, faster and less risky deployment
  23. Eberhard Wolff - @ewolff Use If… •  Time to market

    is important •  Legacy systems must be modernized •  Sustained development speed •  Continuous Delivery should be implemented •  Large enough project
  24. Eberhard Wolff - @ewolff Don’t Use If… •  Infrastructure complexity

    cannot be handled •  Architectural complexity cannot be handled