Microservices: Service Oriented Development

Microservices: Service Oriented Development

Microservices: Service Oriented Development Rafael Schloming How do I break up my monolith? How do I architect my app with microservices? What infrastructure do I need in place before I can benefit from microservices? datawire.io 2 Microservices at Datawire ... ● Building a cloud application using microservices in 2013 ● Distributed systems engineers ● Multiple services ● Prototyping was really fast ● … then we launched and things slowed down… datawire.io 3 Debugging Velocity (or lack thereof) datawire.io 4 Tooling Architecture Process!!! datawire.io 5 Debugging our Pipeline datawire.io 6 Velocity comes from Process, not Architecture datawire.io 7 Service Oriented Architecture Service Oriented Development datawire.io 8 Stability/Maturity Velocity Prototype Production Mission critical datawire.io 9 Stability/Maturity Velocity Prototype Production Mission critical datawire.io 10 A single process is inefficient (Forces a single Stability vs Velocity Tradeoff) datawire.io 11 Code Test Define Release Prod datawire.io 12 Code Test Define Centralized process ● Specialized teams ● Fixed policies (e.g., release criteria) Release Prod datawire.io 13 A single process doesn’t scale datawire.io 14 How do I break up my monolith? How do I break up my process? datawire.io 15 Microservices lets you run multiple processes! datawire.io 16 Microservices is a distributed development architecture workflow. datawire.io 17 ● How do I get to Continuous Deployment incrementally? ● How do I limit the scope of PCI (audit process)? ● How do I ship feature X as fast as possible? Stability/Maturity Velocity Prototype Production Mission critical datawire.io 18 Microservices is ... ● Multiple workflows ○ Including your existing workflow! ○ Workflows designed for different stability/velocity tradeoffs ● Simultaneous workflows datawire.io 19 Doing things this way shifts how people operate! ● Requires both organizational and technical changes datawire.io 20 Organizational Implementation datawire.io 21 You gotta give in order to get Education ● Everyone exposed to full dev cycle Communication ● Nobody speaks the same language Delegation ● Small teams own big important parts datawire.io 22 But you get a lot Education ● Specialists become generalists -> Better holistic systems ● Learning, personal growth -> Job satisfaction Communication ● Conflict -> Collaboration Delegation ● Massive organizational scale datawire.io 23 Create self-sufficient, autonomous software teams. datawire.io 24 Why self-sufficiency and autonomy? ● Self-sufficient ○ Team does not need to rely on other teams to achieve its goals ● Autonomy ○ Team is able to independently make (process) decisions on how to achieve its goals datawire.io 25 Eliminate centralized specialist functions Centralized infrastructure / ops* Centralized architecture (You might need a platform team) datawire.io 26 Think Spinoff datawire.io 27 Monolith datawire.io 28 Microservice Monolith Team datawire.io 29 Technical Implementation datawire.io 30 The Workflows Production Users Prototype Mission Critical Stage & Growth Add Features Fast Feedback & from both Stability Goals Don’t Disrupt Tools & Users Users datawire.io 31 One Platform, Parallel Workflows, Seamless Transitions Stage 1: Rapid Stage 1: Rapid Stage 3: Internal Stage development, Stage 2: Users Stage 3: Internal development,Stage 1: Rapid Stage 2: Users users, coupling early users users,Stage coupling 3: Internal earlydevelopment, users StageProduction 2: Users Users Prototype users,Mission coupling Critical early users & Growth Minimal Minimal No cascade Goals Doesn’t crash... disruption to No cascade Doesn’t crash... disruptionMinimalAdd Featuresto failures... Fast Feedback users... failures...No cascade Doesn’t crash... users...disruption& to from both failures...Stability users...Don’t Disrupt Tools & Users Users datawire.io 32 Kubernetes / Docker / Envoy give you the infra you need datawire.io 33 How do I actually use these technologies to build my workflows? datawire.io 34 Stage 1: Prototyping Goal: Fast Feedback from both Tools and Users Org Problem: You need buy-in for prototyping in production Tech Problem: You can’t run microservices locally datawire.io 35 Strategy: Self Service Provisioning & Development Containers datawire.io 36 Provide fast self-service provisioning Make this fast and easy! ● Too much friction leads to accidental coupling datawire.io 37 Problem: Coding on remote infra is slow... VM based pipeline: ● Deploy time: maybe 45 minutes? Docker based pipeline: ● Deploy time: maybe a few minutes? Hacking react on my laptop with live reload: ● Maybe 1-2 seconds? Hacking flask on my laptop with live reload: ● Instantaneous datawire.io 38 How can we do better? datawire.io 39 Develop inside a container Helps with onboarding and jumping between services: ● Single source of truth for build & dependencies ● Consistent and portable dev environment You can make a faster feedback loop: 1. Sync local files -> remote build 2. Sync local files -> local build; snapshot image; deploy in seconds 3. Sync local files -> local build; proxy into remote cluster Shameless self promotion: ● See https://forge.sh for (2) and https://telepresence.io for (3) datawire.io 40 Fast Deploy == Resilience datawire.io 41 Stage 2: Production Users & Growth Goal: Add Features & Don’t Disrupt Users Org Problems: Recognize the Tradeoff & How to measure user impact Tech Problem: Software Bugs datawire.io 42 Strategy: Genetic Diversity (Multiversion Deployment) datawire.io 43 Multiple versions for software redundancy Primary version End user Canary version Dev version datawire.io 44 Stage 3: Mission Critical Goal: Stability Org Problem: Avoid regressing Tech Problem: L7 Observability datawire.io 45 Strategy: Service Level Objectives & L7 Observability datawire.io 46 Cascade Failures A B C X D E datawire.io 47 Summary 1. Start with: “How do I break up my monolithic process?” 2. Spinoff self sufficient & autonomous teams 3. Build awesome tooling for Service Oriented Development datawire.io 48 Thank you! ● [email protected] ● If you want to learn more about these ideas, check out our hands-on tutorial here: ○ https://datawire.io/faster ● If you’re interested in any of our open source tools, check them out: ○ https://forge.sh for deployment ○ https://www.telepresence.io for real-time live coding ○ https://www.getambassador.io self-service API Gateway built on Envoy datawire.io 49 END.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    50 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us