Slide 1

Slide 1 text

Making a right Mesh of your Service architecture @robdcrowley | robdcrowley

Slide 2

Slide 2 text

Goals for the session -Explore the motivation behind the Service Mesh Pattern and the category of problems it helps to solve. -Contrast Service Meshes with API Gateways and our old favourite the Enterprise Service Bus. -Investigate some of the advanced capabilities Service Meshes provide to enable low friction releases at scale. -Starting a conversation in the Perth technical community about the potential value of Service Meshes @robdcrowley

Slide 3

Slide 3 text

Service A Service B A ♥ story of when service A met service B…. Host A @robdcrowley

Slide 4

Slide 4 text

Service A Service B As part of a Digital Transformation Service B is rehosted Host A Host B @robdcrowley

Slide 5

Slide 5 text

Distributed computing is easy, right? @robdcrowley

Slide 6

Slide 6 text

Service A Service B Long distance relationships are complicated Host A Host B @robdcrowley

Slide 7

Slide 7 text

The 8 Fallacies of Distributed Computing highlight common false assumptions we programmers make when starting out with distributed systems @robdcrowley

Slide 8

Slide 8 text

Service A Service B Long distance relationships are complicated Host A Host B Flow Control Flow Control Networking Networking @robdcrowley

Slide 9

Slide 9 text

Hmmm, maybe this distributed computing thing is a little harder than we thought @robdcrowley

Slide 10

Slide 10 text

Traffic Management Observability Reliability Wait, there’s more… @robdcrowley

Slide 11

Slide 11 text

Traffic Management ▪ Load balancing (bonus points for being latency based) ▪ Service discovery (DNS alone is often insufficient) ▪ Access control ▪ Per request routing ▪ Shadowing ▪ Fault injection @robdcrowley

Slide 12

Slide 12 text

Observability ▪ Success rates ▪ Latency logs ▪ Request volumes ▪ Distributed tracing (ala Open Tracing) @robdcrowley

Slide 13

Slide 13 text

Reliability (or anti-fragility is you must! ) ▪ Health checks ▪ Circuit breakers ▪ Retries policies ( your services are idempotent right? ) ▪ Timeouts @robdcrowley

Slide 14

Slide 14 text

Service A Service B Making long distance relationships work Host A Host B Networking Networking Flow Control Flow Control @robdcrowley

Slide 15

Slide 15 text

Hmmm, maybe this distributed computing thing is a lot harder than we thought @robdcrowley

Slide 16

Slide 16 text

TCP/IP as applied to OSI 7. Application 6. Presentation 5. Session 4. Transport 3. Network 2. Data Link 1. Physical Network Access Internet (IP) Transport (TCP) Application (HTTP) OSI TCP/IP @robdcrowley

Slide 17

Slide 17 text

As application requirements became more sophisticated, we again looked to abstract these capabilities @robdcrowley

Slide 18

Slide 18 text

Centralised management of your services Enterprise Service Bus Service E Service H Service F Service G Service A Service D Service B Service C @robdcrowley

Slide 19

Slide 19 text

centralised architecture == single point of failure @robdcrowley

Slide 20

Slide 20 text

Over time these centralised architectures tend to become complex and atrophy change @robdcrowley

Slide 21

Slide 21 text

Continuous Delivery Microservices Cloud Native DevOps Containers @robdcrowley

Slide 22

Slide 22 text

Life in a microservices world… @robdcrowley

Slide 23

Slide 23 text

Smart endpoints, dumb pipes @robdcrowley

Slide 24

Slide 24 text

Service A Service B Very long distance relationships are even worse Host A Host B Networking Networking Service Discovery Flow Control Flow Control Circuit Breakers Service Discovery Circuit Breakers @robdcrowley

Slide 25

Slide 25 text

Wait, I thought one of the benefits of microservices is the ability to match the language to the specific problem domain? @robdcrowley

Slide 26

Slide 26 text

Sidecar Proxy Service A Making very long distance relationships work Host A Networking Flow Control Service B Host B Networking Flow Control Sidecar Proxy Service Discovery Circuit Breakers Service Discovery Circuit Breakers @robdcrowley

Slide 27

Slide 27 text

Life in a better microservices world… @robdcrowley

Slide 28

Slide 28 text

“A service mesh is a dedicated infrastructure layer for handling service-to-service communication. It’s responsible for the reliable delivery of requests through the complex topology of services that comprise a modern, cloud native application. In practice, the service mesh is typically implemented as an array of lightweight network proxies that are deployed alongside application code, without the application needing to be aware.” - William Morgan @robdcrowley

Slide 29

Slide 29 text

The goal of service meshes is not to introduce new functionality, but rather to enable a shift in where functionality is located. @robdcrowley

Slide 30

Slide 30 text

Service meshes comprise both a data plane and a control plane @robdcrowley

Slide 31

Slide 31 text

Decentralised management of your services Service Mesh Control Plane @robdcrowley

Slide 32

Slide 32 text

Decentralised management of your services Service Mesh Control Plane @robdcrowley

Slide 33

Slide 33 text

The control plane provides the same authoritative source of policies and routing decisions as with an ESB, without being on the critical path of every request @robdcrowley

Slide 34

Slide 34 text

So would the deployment model look like in Kubernetes? @robdcrowley

Slide 35

Slide 35 text

Linkerd as daemon set on Kubernetes Linkerd Service A Service B Service C Service E Service D Service F Linkerd Service G Service H Service I Service K Service J Service L Host A Host B Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod Pod

Slide 36

Slide 36 text

Service meshes simplify some advanced use cases Service Service B V1 Service B V2 Envoy Envoy Envoy @robdcrowley

Slide 37

Slide 37 text

Service meshes are typically supported by a platform team within an enterprise @robdcrowley

Slide 38

Slide 38 text

Pop Quiz: So do application service developers even need to be aware of the service mesh? @robdcrowley

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

So, how you approach introducing a service mesh into your architecture? @robdcrowley

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

Start with a single capability, say instrumentation, and support that via the service mesh @robdcrowley

Slide 43

Slide 43 text

Takeaways @robdcrowley

Slide 44

Slide 44 text

A service mesh is a dedicated infrastructure layer for making service-to-service communication safe @robdcrowley

Slide 45

Slide 45 text

If the operability of your services is posing a significant challenge, then a Service Mesh will help @robdcrowley

Slide 46

Slide 46 text

Service Meshes afford gradual adoption. Take advantage of this and start with single use case. @robdcrowley

Slide 47

Slide 47 text

Thank You! @robdcrowley | robdcrowley

Slide 48

Slide 48 text

Resources - 8 Fallacies of Distributed Computing: - Overview: https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing - Book: https://www.amazon.com/Dr-Harvey-Fallacies-Distributed-Computing/dp/1367251796 - Service Mesh: - Overview: https://buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one/ - InfoQ Panel: https://www.infoq.com/articles/vp-microservices-communication-governance-using- service-mesh - Linkerd: - Overview: https://linkerd.io/getting-started/ - InfoQ Podcast: https://www.infoq.com/podcasts/Oliver-Gould-microservices-linkerd-service-mesh @robdcrowley