things i wish i d known before i started with
play

Things I wish I'd known before I started with Microservices GOTO - PowerPoint PPT Presentation

Things I wish I'd known before I started with Microservices GOTO Amsterdam - June 18, 2015 1 Who are we? Steve Judd - Lead Consultant Tareq Abedrabbo - CTO OpenCredo - an Open Source software consultancy 2 Agenda Things I wish I'd known


  1. Things I wish I'd known before I started with Microservices GOTO Amsterdam - June 18, 2015 1

  2. Who are we? Steve Judd - Lead Consultant Tareq Abedrabbo - CTO OpenCredo - an Open Source software consultancy 2

  3. Agenda Things I wish I'd known before I started with Microservices What? Why? How? 3

  4. What’s the story morning glory? “Gotta have a definition, right?” 4

  5. WHAT • It is an architecture • Independently deployable software components (services) • Stateless, loosely coupled, resilient • Communicate via explicit, published APIs • Each service fulfils a single business capability • Automated testing and deployment is essential • It’s a choice • It’s not the only one • Commitment is key 5

  6. So, what’s the big deal? Go on, convince me…. 6

  7. WHY • Encourages: ★ loose-coupling ★ separation of concerns ★ single responsibility principle ★ domain-driven design • Good fit with Agile development practices • Well-suited to a containerised infrastructure 7

  8. Monoliths: friend or foe? And are Microservices really the new black? 8

  9. WHY Microservices Monoliths • Flexible scaling options • Familiar & well- • Enables independence in understood development and • Easy to develop, build & deployment deploy • Reduces technology lock-in • Consequences of • Better fault tolerance changing domain design • Build/deploy/execution are localised infrastructure is complex • Limited scaling choices (automation a must) • Long-term commitment to • Getting the domain (service) boundaries right can be tech stack (technology difficult lock-in) 9

  10. WHY Microservices Monoliths • Flexible scaling options • Familiar & well- • Enables independence in understood development and • Easy to develop, build & deployment deploy • Reduces technology lock-in • Consequences of • Better fault tolerance changing domain design • Build/deploy/execution are localised infrastructure is complex • Limited scaling choices (automation a must) • Long-term commitment to • Getting the domain (service) boundaries right can be tech stack (technology difficult lock-in) 10

  11. WHY Microservices Monoliths • Flexible scaling options • Familiar & well- • Enables independence in understood development and • Easy to develop, build & deployment deploy • Reduces technology lock-in • Consequences of • Better fault tolerance changing domain design • Build/deploy/execution are localised infrastructure is complex • Limited scaling choices (automation a must) • Long-term commitment to • Getting the domain (service) boundaries right can be tech stack (technology difficult lock-in) 11

  12. The importance of contracts “Until the contract is agreed, nothing is real” 12

  13. HOW • Design your API contracts first • Communicate them well • Use tools to document them, e.g • apidocjs (http://apidocjs.com/) • swagger (http://swagger.io) • spring-restdocs (https://github.com/spring-projects/spring-restdocs) • Be mindful of the impact of changing an API 13

  14. HOW • If you don’t specify your contract, you end up with an implicit one anyway • Use the power of resources (HTTP and REST) ✤ Links and locations ✤ Uniform interface and status codes ✤ Representations 14

  15. Does size matter? Provide as many APIs and Services as you need but no more 15

  16. HOW • Size - what really matters is quality not quantity • Services should be decoupled conceptually so that they can evolve independently • Services should be decoupled technically so that they can be managed independently • What do I do, practically ? • Co-locate services, but avoid implicit dependancies though shared common objects • Separate services but avoid sharing (domain) libraries 16

  17. HOW • Don’t stress about how many APIs or Services • Do stress about designing an appropriate domain models for your services • Don’t separate your services based on technical boundaries • Do separate your services based on self-contained functions 17

  18. Separating the men from the boys What does a good microservice look like? 18

  19. HOW • Logging & monitoring ✤ Centralised collection ✤ Many more moving parts • How the services are managed • External configuration • Handling failure • Inter-process communication ✤ Message serialisation/deserialisation ✤ Network overhead 19

  20. And finally…. 20

  21. Final takeaways 1. Specify your contracts first AND communicate them 2. Design for scale : infrastructure, processes, services 3. You’ll need to pay the Distributed Service Tax 4. Everything is a Service (aka eat your own dogfood) 5. Invest in tooling and automation 21

  22. Thank you, any questions? http://www.opencredo.com/blog @OpenCredo @cyberbliss @tareq_abedrabbo

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend