Slide 1

Slide 1 text

Weaving the Service Mesh . Reducing Microservices Architecture Complexity with Istio and Kubernetes

Slide 2

Slide 2 text

#!/bin/agenda >> whoami && history >> for svc in monolithic; do micro($svc); done >> ./pipe_ci_cd.sh >> kubernetes || service_mesh == istio >> kubectl apply -f istio-magic.yml

Slide 3

Slide 3 text

>> whoami && history

Slide 4

Slide 4 text

>> whoami && history

Slide 5

Slide 5 text

>> whoami && history Oracle DB Oracle Forms J2EE WEB Presencial Web

Slide 6

Slide 6 text

>> whoami && history Oracle DB Oracle Forms Presencial Web J2EE WEB SOA Entidades Externas

Slide 7

Slide 7 text

>> whoami && history Oracle DB Oracle Forms Presencial Web J2EE WEB SOA Entidades Externas

Slide 8

Slide 8 text

>> whoami && history +50% Trafico Web +30% Pagos electrónicos >2 millones de Cedulones CRECIMIENTO INTERANUAL

Slide 9

Slide 9 text

>> whoami && history 2017

Slide 10

Slide 10 text

>> whoami && history

Slide 11

Slide 11 text

>> for svc in monolithic; do micro($svc) done

Slide 12

Slide 12 text

>> for svc in monolithic; do micro($svc); done VERY UGLY MONOLITHIC SOFTWARE A B C D

Slide 13

Slide 13 text

>> for svc in monolithic; do micro($svc); done A B C D

Slide 14

Slide 14 text

>> for svc in monolithic; do micro($svc); done A B C D

Slide 15

Slide 15 text

>> for svc in monolithic; do micro($svc); done A B C D

Slide 16

Slide 16 text

>> for svc in monolithic; do micro($svc); done PAGOS ONLINE TRÁMITE S ONLINE % ERRORE S

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

>> for svc in monolithic; do micro($svc); done ...

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

>> for svc in monolithic; do micro($svc); done So many instances... Version & Environments Conflicts Deployment Resource Isolation & Utilization Resiliency Networking, Port Conflicts

Slide 21

Slide 21 text

>> ./pipe_ci_cd.sh

Slide 22

Slide 22 text

>> ./pipe_ci_cd.sh

Slide 23

Slide 23 text

>> kubernetes || service_mesh == istio

Slide 24

Slide 24 text

>> kubernetes || service_mesh == istio Beyond Deployment ● Load Balancing ● Fault Tolerance ● Observability & Insight ● Monitoring & Tracing ● Circuit Breaking

Slide 25

Slide 25 text

>> kubernetes || service_mesh == istio Popular Open Source Tools ❏ Eureka - Service Registry ❏ Ribbon - Client Side LB ❏ Hystrix - Circuit Breaker ❏ Zipkin - Distributed Tracing ❏ Prometheus - Monitoring ❏ Grafana - Data Visualization

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

>> kubernetes || service_mesh == istio This is easy when... Single stack Framework w/ Spring Boot

Slide 29

Slide 29 text

>> kubernetes || service_mesh == istio This becomes more difficult... Multiple stack Multiple frameworks Polyglot Legacy

Slide 30

Slide 30 text

>> kubernetes || service_mesh == istio VERY IMPORTANT EXTERNAL SERVICES J2EE LEGACY

Slide 31

Slide 31 text

>> kubernetes || service_mesh == istio At the end of the day... Let Microservice A talk to Microservice B!

Slide 32

Slide 32 text

>> kubernetes || service_mesh == istio

Slide 33

Slide 33 text

>> kubernetes || service_mesh == istio What is a Service Mesh? A service mesh is a configurable infrastructure layer for services. Allows service developers to offload the the network communication work and focus more on the business logic.

Slide 34

Slide 34 text

>> kubernetes || service_mesh == istio Services A Proxy MONOLITHIC

Slide 35

Slide 35 text

>> kubernetes || service_mesh == istio Microservices A Proxy MICROSERVICES Microservices C Microservices B

Slide 36

Slide 36 text

>> kubernetes || service_mesh == istio Microservices A SERVICE MESH Microservices C Microservices B Microservices D Microservices F Microservices E Proxy Proxy Proxy Proxy Proxy Proxy

Slide 37

Slide 37 text

>> kubernetes || service_mesh == istio SERVICE MESH

Slide 38

Slide 38 text

>> kubernetes || service_mesh == istio

Slide 39

Slide 39 text

Services >> kubernetes || service_mesh == istio API’s

Slide 40

Slide 40 text

>> kubernetes || service_mesh == istio What is Istio? A Open Source platform to manage service interactions across containers and VM-based workloads. With key contributions from Google, IBM, Lyft and others Multi-environment and multi-platform, but Kubernetes first

Slide 41

Slide 41 text

>> kubernetes || service_mesh == istio The Idea of Istio ★ Visibility ★ Resiliency ★ Traffic Control ★ Security

Slide 42

Slide 42 text

>> kubernetes || service_mesh == istio Istio’s Architecture Istio needs to intercept all the network communication to and from every service. Envoy as Sidecar Proxy Logically split into two planes: The Data Plane and The Control Plane.

Slide 43

Slide 43 text

>> kubernetes || service_mesh == istio envoy Dynamic service discovery Load balancing TLS termination HTTP/2 gRPC proxying Circuit breakers Health checks Traffic split Traffic mirroring Retries Fault injection

Slide 44

Slide 44 text

>> kubernetes || service_mesh == istio The injected proxies represent the Data Plane

Slide 45

Slide 45 text

>> kubernetes || service_mesh == istio The Control Plane: ● Pilot ● Mixer ● Citadel

Slide 46

Slide 46 text

>> kubernetes || service_mesh == istio

Slide 47

Slide 47 text

>> kubectl apply -f istio-magic.yml

Slide 48

Slide 48 text

>> if [ $QUESTIONS -gt 0 ]; then echo “$RSP” fi

Slide 49

Slide 49 text

>> while true; do printf “¡Muchas GRACIAS!\n” done