microservices service oriented development
play

Microservices: Service Oriented Development Rafael Schloming How - PowerPoint PPT Presentation

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


  1. Microservices: Service Oriented Development Rafael Schloming

  2. 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

  3. 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

  4. Debugging Velocity (or lack thereof) datawire.io 4

  5. Tooling Architecture Process!!! datawire.io 5

  6. Debugging our Pipeline datawire.io 6

  7. Velocity comes from Process, not Architecture datawire.io 7

  8. Service Oriented Architecture Service Oriented Development datawire.io 8

  9. Stability/Maturity Velocity Prototype Production Mission critical datawire.io 9

  10. Stability/Maturity Velocity Prototype Production Mission critical datawire.io 10

  11. A single process is inefficient (Forces a single Stability vs Velocity Tradeoff) datawire.io 11

  12. Code Test Define Release Prod datawire.io 12

  13. Code Test Define Centralized process Specialized teams ● Fixed policies (e.g., ● release criteria) Release Prod datawire.io 13

  14. A single process doesn’t scale datawire.io 14

  15. How do I break up my monolith? How do I break up my process ? datawire.io 15

  16. Microservices lets you run multiple processes! datawire.io 16

  17. Microservices is a distributed development architecture workflow. datawire.io 17

  18. 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

  19. Microservices is ... ● Multiple workflows ○ Including your existing workflow! ○ Workflows designed for different stability/velocity tradeoffs ● Simultaneous workflows datawire.io 19

  20. Doing things this way shifts how people operate! Requires both organizational and technical changes ● datawire.io 20

  21. Organizational Implementation datawire.io 21

  22. 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

  23. 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

  24. Create self-sufficient, autonomous software teams . datawire.io 24

  25. 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

  26. Eliminate centralized specialist functions Centralized infrastructure / ops* Centralized architecture (You might need a platform team) datawire.io 26

  27. Think Spinoff datawire.io 27

  28. Monolith datawire.io 28

  29. Microservice Team Monolith datawire.io 29

  30. Technical Implementation datawire.io 30

  31. The Workflows Production Users Stage Prototype Mission Critical & Growth Add Features Fast Feedback & Goals from both Stability Don’t Disrupt Tools & Users Users datawire.io 31

  32. One Platform, Parallel Workflows, Seamless Transitions Stage 1: Rapid Stage 3: Internal Stage 1: Rapid Stage development, Stage 2: Users Stage 3: Internal Stage 1: Rapid users, coupling development, Stage 2: Users early users Stage 3: Internal users, coupling development, Stage 2: Users early users Production Users users, coupling Prototype Mission Critical early users & Growth Minimal No cascade Minimal Goals Doesn’t crash... disruption to No cascade Minimal failures... Add Features Doesn’t crash... disruption to No cascade users... Fast Feedback failures... Doesn’t crash... disruption to & users... failures... from both Stability users... Don’t Disrupt Tools & Users Users datawire.io 32

  33. Kubernetes / Docker / Envoy give you the infra you need datawire.io 33

  34. How do I actually use these technologies to build my workflows? datawire.io 34

  35. 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

  36. Strategy: Self Service Provisioning & Development Containers datawire.io 36

  37. Provide fast self-service provisioning Make this fast and easy! Too much friction leads to accidental coupling ● datawire.io 37

  38. 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

  39. How can we do better? datawire.io 39

  40. 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

  41. Fast Deploy == Resilience datawire.io 41

  42. 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

  43. Strategy: Genetic Diversity (Multiversion Deployment) datawire.io 43

  44. Multiple versions for software redundancy Primary version Canary version End user Dev version datawire.io 44

  45. Stage 3: Mission Critical Goal: Stability Org Problem: Avoid regressing Tech Problem: L7 Observability datawire.io 45

  46. Strategy: Service Level Objectives & L7 Observability datawire.io 46

  47. Cascade Failures X A B C D E datawire.io 47

  48. 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

  49. Thank you! rhs@datawire.io ● 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

  50. END

Recommend


More recommend