Solucionando Problemas de Microsserviços com Service Mesh: Istio e Envoy Edson Yanaga (@yanaga) bit.ly/istio-tutorial @yanaga - bit.ly/istio-intro � 1
@yanaga Edson Yanaga
Raffle Rules @yanaga - Follow: - With a picture of the session - Mention @yanaga - With hashtag #QConSP Edson Yanaga
bit.ly/mono2microdb @yanaga - bit.ly/istio-intro
bit.ly/istiobook 2nd Edition @yanaga - bit.ly/istio-intro
Agenda • Why Service Mesh • Observability • Istio Architecture & Introduction • Traffic Control • Service Resiliency & Circuit Breaking • Chaos Testing • Egress • Security @yanaga - bit.ly/istio-intro
Your Journey to Awesomeness Automation Self-Service, CI & CD Advanced Microservices Re-Org to On-Demand, Deployment Deployment DevOps Elastic Pipeline Techniques Infrastructure @yanaga - bit.ly/istio-intro @yanaga - bit.ly/istio-intro
Monolith MyApp @yanaga - bit.ly/istio-intro
The Application @yanaga - bit.ly/istio-intro
Modules @yanaga - bit.ly/istio-intro
Microservices @yanaga - bit.ly/istio-intro
Microservices @yanaga - bit.ly/istio-intro
Microservices @yanaga - bit.ly/istio-intro
Microservices @yanaga - bit.ly/istio-intro
Network of Services @yanaga - bit.ly/istio-intro
Microservices own their Data @yanaga - bit.ly/istio-intro
Multiple Points of Entry @yanaga - bit.ly/istio-intro
Multiple Teams, Multiple Pipelines @yanaga - bit.ly/istio-intro
Microservices Principles 1. Deployment Independence - updates to an individual microservice have no negative impact to any other component of the system. Optimized for Replacement 2. Organized around business capabilities 3. Products not Projects 4. API Focused 5. Smart endpoints and dumb pipes 6. Decentralized Governance 7. Decentralized Data Management 8. Infrastructure Automation (infrastructure as code) 2 Pizza Team 9. Design for failure 10. Evolutionary Design @yanaga - bit.ly/istio-intro
Old School New School Love Thy Mono @yanaga - bit.ly/istio-intro
Microservices == Distributed Computing OS OS JVM JVM Service A Service C OS JVM Service B @yanaga - bit.ly/istio-intro
Fallacies of Distributed Computing • The Network is Reliable • Latency is zero • Bandwidth is infinite • Topology does not change • There is one administrator • Transport cost is zero • The network is homogeneous https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing @yanaga - bit.ly/istio-intro
Failure of a Service X @yanaga - bit.ly/istio-intro
Cascading Failure X X X X X X X @yanaga - bit.ly/istio-intro
Microservices'ilities API Tracing Discovery Invocation Monitoring MyService Elasticity Logging Authentication Resilience Pipeline @yanaga - bit.ly/istio-intro
History of Microservices AWS EC2 Java EE6 DropWizard Hystrix Eureka Spring Boot Kubernetes 2006 2009 May 2011 March 2012 July 2012 Sept 2013 June 2014 Continuous DevOps NETFLIX Vert.x Ribbon Microservices Microservices Agile Docker Integration 2009 to AWS June March Assess Defined Manifesto March via XP 2010 2011 2012 Thoughtworks Thoughtworks Feb 2013 1999 Radar Fowler, Lewis 2001 March 2012 March 2014 @yanaga - bit.ly/istio-intro
Microservices embedding Capabilities Container Container JVM JVM Service A Service C Discovery Discovery Load-balancer Load-balancer Resiliency Resiliency Metrics Metrics Tracing Tracing Container JVM Service B Discovery Load-balancer Resiliency Metrics Tracing @yanaga - bit.ly/istio-intro
What's Wrong with Netflix OSS? Java Only Adds a lot of libraries to YOUR code @yanaga - bit.ly/istio-intro
Microservices'ilities API Tracing Discovery Invocation Monitoring MyService Elasticity Logging Authentication Resilience Pipeline @yanaga - bit.ly/istio-intro
@yanaga - bit.ly/istio-intro
Microservices'ilities + Kubernetes API Tracing Discovery Invocation Monitoring MyService Elasticity Logging Authentication Resilience Pipeline @yanaga - bit.ly/istio-intro
Microservices'ilities + OpenShift API Tracing Discovery Invocation Monitoring MyService Elasticity Logging Authentication Resilience Pipeline @yanaga - bit.ly/istio-intro
Istio - Sail (Kubernetes - Helmsman or ship’s pilot) @yanaga - bit.ly/istio-intro
Service Mesh Defined 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 https://buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one/ @yanaga - bit.ly/istio-intro
Microservices'ilities + Istio API Tracing Discovery Invocation Monitoring MyService Elasticity Logging Authentication Resilience Pipeline @yanaga - bit.ly/istio-intro
Observability @yanaga - bit.ly/istio-intro
@yanaga - bit.ly/istio-intro
@yanaga - bit.ly/istio-intro
@yanaga - bit.ly/istio-intro
Microservices embedding Capabilities Container Container JVM JVM Before Istio Service A Service C Discovery Discovery Load-balancer Load-balancer Resiliency Resiliency Metrics Metrics Tracing Tracing Container JVM Service B Discovery Load-balancer Resiliency Metrics Tracing @yanaga - bit.ly/istio-intro
Microservices externalizing Capabilities Pod Pod Container Container JVM JVM After Istio Service A Service C Sidecar Container Sidecar Container Pod Container JVM Service B Sidecar Container @yanaga - bit.ly/istio-intro
Microservices externalizing Capabilities Pod Pod Container Container JVM JVM After Istio Service A Service C The sidecar intercepts all network traffic Sidecar Container Sidecar Container Pod Sidecar Container Container JVM Service B @yanaga - bit.ly/istio-intro
Sidecar https://www.imz-ural.com/blog/waffles-the-sidecar-dog @yanaga - bit.ly/istio-intro
How to add an Istio-Proxy (sidecar)? istioctl kube-inject -f NormalDeployment.yaml OR kubectl label namespace myspace istio- injection=enabled To "see" the sidecar: kubectl describe deployment customer @yanaga - bit.ly/istio-intro
Better Microservices Platform circa 2018 Config Server Istio Jaeger NETFLIX Ribbon @yanaga - bit.ly/istio-intro
Polyglot Microservices Platform circa 2018 Config Server Istio Jaeger NETFLIX Ribbon @yanaga - bit.ly/istio-intro
Envoy is the current sidecar Pod Pod Container Container JVM JVM Service A Service C Sidecar Container Sidecar Container Pod Sidecar Container Container JVM Service B @yanaga - bit.ly/istio-intro
Next Generation Microservices - Service Mesh Code Independent (Polyglot) • Intelligent Routing and Load-Balancing • Smarter Canary Releases • Dark Launch • Chaos: Fault Injection • Resilience: Circuit Breakers • Observability & Telemetry: Metrics and Tracing • Security: Encryption & Authorization • Fleet wide policy enforcement @yanaga - bit.ly/istio-intro
Istio Data Plane vs Control Plane Pod Pod Pod Data Container Container Container Plane JVM JVM JVM Service A Service B Service C HTTP1.1, HTTP2, HTTP1.1, HTTP2, HTTP1.1, HTTP2, gRPC, TCP w/TLS gRPC, TCP w/TLS gRPC, TCP w/TLS Envoy Sidecar Envoy Sidecar Envoy Sidecar Control Mixer Galley Pilot Citadel Plane (telemetry, policy) API, config Quota, Telemetry mTLS, SPIFFE ACL @yanaga - bit.ly/istio-intro
API Gateways Pod Pod Pod Container Container Container Pod JVM JVM JVM Container Nginx or Service A Service B Service C Haproxy or OpenShift Istio Route istio-proxy istio-proxy istio-proxy Gateway API Management @yanaga - bit.ly/istio-intro
Recommend
More recommend