Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ISTIO, LINKERD UND CO. IM VERGLEICH: WELCHES SERVICE MESH PASST ZU MIR?

ISTIO, LINKERD UND CO. IM VERGLEICH: WELCHES SERVICE MESH PASST ZU MIR?

Service Meshes sind der nächste Schritt der Microservices-Infrastruktur: Sie lösen lästige Probleme wie Observability, Routing, Resilience und Security. Lange Zeit stand Istio fast synonym für Service Meshes. Mittlerweile gibt es eine Vielzahl anderer Optionen, die häufig unter dem Radar bleiben. Wie findet man das richtige Mesh für das Projekt? Und was sind überhaupt wichtige Eigenschaften eines Service Mesh?Für einen Vergleich muss seitenweise Dokumentation gelesen und die Lösungen praktisch ausprobiert werden. Dieser Talk soll helfen, diesen Prozess zu verkürzen. Es werden nicht nur die relevantesten Features im Detail verglichen, sondern auch Eigenschaften wie Kompatibilität, Stabilität, Usability und Performance bewertet. Kurz gesagt: Alle, die sich fragen, ob oder welches Service Mesh sie brauchen, sind genau richtig in dieser Session.

JAX 2020

Joerg Mueller

September 07, 2020
Tweet

More Decks by Joerg Mueller

Other Decks in Programming

Transcript

  1. Istio, Linkerd und Co. im Vergleich Welches Service Mesh passt

    zu mir? Jörg Müller @joergm 7.9.2020 Mainz / JAX 2020
  2. Jörg Müller Principal Consultant innoQ Deutschland GmbH [email protected] @joergm -

    architecture, development, DevOps - focus on platform & infrastructure
  3. Der Trend zu Microservices Monolith Micro- service Micro- service Micro-

    service Micro- service Micro- service 4 @joergm @INNOQ
  4. Microservices sind verteilte Systeme Microservice Timeout Retry Routing und Discovery

    Verschlüsselung Microservice Authentifizierung / Autorisierung Circuit Breaker Metriken Logs 5 @joergm @INNOQ
  5. Infrastruktur-Services Service Mesh Architektur Microservice 1 Microservice 2 Proxy Proxy

    Control Plane App Kubernetes API Anwendung Data Plane Control Plane Infrastruktur @joergm @INNOQ 9
  6. Routing Instance A Instance B Load Balancing Instance A Instance

    B Pfad-basiertes Routing /a /b Instance A Instance B Blue/Green Deployment Instance A Instance B A/B-Testing 50% 50% Instance A Instance B Canary Releasing Berlin Welt 13 @joergm @INNOQ
  7. Routing mit Service Mesh Microservice 1 Microservice 2 Proxy Proxy

    Control Plane App Anwendung Data Plane Control Plane Routing- Regeln 14 @joergm @INNOQ
  8. Resilience mit Service Mesh Fault Injection Delay Injection Service 1

    Service 2 Proxy Proxy Timeout Retry Service 1 Service 2 Proxy Proxy 4s 16 Circuit Breaker @joergm @INNOQ
  9. Security mit Service Mesh Service 1 Service 2 Proxy Proxy

    "Service 1" Authentifizierung mit mTLS Autorisierung Service 1 Service 2 Proxy Proxy GET /api GET / Autorisierungs-Regel TLS-Zertifikat 18 @joergm @INNOQ
  10. Security mit Service Mesh Microservice 1 Microservice 2 Proxy Proxy

    Anwendung Data Plane Control Plane Control Plane App Autorisierungs- Regeln TLS-Zertifikat 19 @joergm @INNOQ
  11. Monitoring mit Service Mesh Metriken zum Netzwerkverkehr generieren -> Latenz

    / Antwortzeit -> HTTP Status Codes -> Anfragen pro Sekunde Metriken an ein Monitoring- System senden Metriken mit Dashboards aufbereiten 21 @joergm @INNOQ
  12. Tracing •Beantwortet... •Welcher Aufruf erzeugt welchen Folgeaufruf? •Welchen Anteil hat

    jeder Teilaufruf an der Latenz? •Wo ist ein Fehler entstanden? •Umsetzung: Tracing- Backend B C A 3s Latenz #42 #42 #42 Trace von Aufruf #42 A B C 23 @joergm @INNOQ
  13. Tracing mit Service Mesh Tracing-Header an ausgehende Anfragen kopieren Tracing-Daten

    an ein Tracing-Backend senden Tracing-Daten in Dashboard aufbereiten 24 @joergm @INNOQ
  14. Service Mesh oder nicht? Wie viele Services? wenige viele(>~10) nur

    wenn bestimmte Features anders schwer zu realisieren sind (siehe weiter unten) 27 @joergm @INNOQ
  15. Service Mesh oder nicht? Vielfalt der Technologien? niedrig Hoch Libraries

    können ein gute Alternative sein 28 @joergm @INNOQ
  16. Service Mesh oder nicht? Überwiegend synchrone Kommunikation? Nein Ja Wahrscheinlich

    bringt ein Service Mesh wenig Mehrwert 29 @joergm @INNOQ
  17. Service Mesh oder nicht? Ist Kubernetes im Einsatz? Nein Ja

    Die Auswahl der Lösungen wird erheblich eingeschränkt 30 @joergm @INNOQ
  18. Service Mesh oder nicht? Wie dynamisch ändern sich Services? (Versionen

    & Skalierung) selten häufig Statische Konfiguration kann ausreichend sein & Service Meshes sollten vermutlich nicht der Fokus sein 31 @joergm @INNOQ
  19. Service Mesh oder nicht? Werden bestimmte Features benötigt? Ja •

    mTLS • Tracing • Routing • spezielle Rollouts 32 @joergm @INNOQ
  20. Vorhandene Umgebung • Welche Infrastruktur habe ich im Einsatz? •

    Gibt es präferierte Cloudanbieter? • Welches Wissen ist vorhanden? • Wie flexibel wollen wir sein? 37 @joergm @INNOQ
  21. Cloud Anbieter • Der Einfluss ist gering, so lange Kubernetes

    zum Einsatz kommt • Viele AWS Services (insbesondere Fargate/ECS) können ein Indikator für AWS App Mesh sein • Google Cloud hat sehr guten Istio Support • Microsoft Azure wird sich vermutlich in Richtung OSM bewegen 40 @joergm @INNOQ
  22. Welche Features benötigt? • Welche Probleme sollen durch das Service

    Mesh gelöst werden? • Gibt es Must-Haves? • Welcher Aufwand soll betrieben werden? 42 @joergm @INNOQ
  23. Routing Service oder Pfad-basiert Service A Service B Service A

    HEADER xyz POST /order GET /invoice/42 Service B Istio Open Service Mesh 45 @joergm @INNOQ Service C Service D
  24. Resilience Unterschiede • Circuit Breaking funktioniert nur bei Istio, Consul

    und Maesh • Retrys und Timeouts funktionieren nur teilweise Pfad- Basiert (bei manchen auch garnicht) 47 @joergm @INNOQ Timeout Retry Service 1 Service 2 Proxy Proxy 4s Circuit Breaker
  25. Fault/Delay Injection • Unterstützung für Fault und Delay-Injection sind eher

    selten 48 @joergm @INNOQ Fault Injection Delay Injection Service 1 Service 2 Proxy Proxy
  26. Security Unterschiede • Abgesehen von Maesh ist mTLS generell unterstützt

    • gleiches gilt für Zertifikatsmanagement 50 @joergm @INNOQ Service 1 Service 2 Proxy Proxy "Service 1" Authentifizierung mit mTLS
  27. Security Unterschiede • Autorisierung wird nur von Istio, Consul, Kuma

    und OSM unterstützt 51 @joergm @INNOQ Autorisierung Service 1 Service 2 Proxy Proxy GET /api GET /
  28. Observability Unterschiede • Prometheus / Grafana vorkonfiguriert? (alle außer Consul

    und AWS App Mesh) • Access Logs • Tap bei Linkerd • Logs spezifisch nach Routen/HTTP Endpoints 53 @joergm @INNOQ
  29. Tracing Backends 54 @joergm @INNOQ Istio Open Service Mesh Jaeger

    Zipkin Solarwinds All supporting OpenCensus All supporting OpenTracing AWS X-Ray Datadog Jaeger Zipkin Honeycomb OpenTracing Jaeger Zipkin
  30. Usability • Achtung: Ab hier viel Subjektivität! • Wie komplex

    ist die Installation? • Fügt sich die Bedienung in vorhandene Systeme ein? • Kommen alle Beteiligten gut damit zurecht? 56 @joergm @INNOQ
  31. Installation • Eigenes Binary (Istio, Linkerd, OSM, Kuma) • Helm

    Chart (Maesh, Consul) • Operator (AWS App Mesh, Istio alternativ) 57 @joergm @INNOQ brew install linkerd linkerd check —pre linkerd install | kubectl apply -f linkerd check
  32. Traffic Split Istio apiVersion: networking.istio.io/ v1alpha3 kind: DestinationRule metadata: name:

    newsservice-istio spec: host: newsservice subsets: - name: vA labels: version: "A" - name: vB labels: version: "B" apiVersion: networking.istio.io/ v1alpha3 kind: VirtualService metadata: name: newsservice-istio spec: hosts: - newsservice http: - route: - destination: host: newsservice subset: vA weight: 90 - destination: host: newsservice subset: vB weight: 10 59 @joergm @INNOQ
  33. Traffic Split SMI apiVersion: split.smi-spec.io/v1alpha1 kind: TrafficSplit metadata: name: newsservice-smi

    spec: service: newsservice backends: - service: newsservice-a weight: 90 - service: newsservice-b weight: 10 60 @joergm @INNOQ
  34. Schritte zum Service Mesh • Ist ein Service Mesh der

    sinnvolle nächste Schritt? • Welche Rahmenbedingungen existieren? • Gibt es notwendige Features, die Kandidaten ausschließen? • Passt das Service Mesh subjektiv? 63 @joergm @INNOQ
  35. Mehr Mesh • Artikel Service Meshes im Vergleich: Features und

    Usability • Artikel Brauchen asynchrone Microservices und Self-Contained-Systems ein Service Mesh? • Artikel Alle 11 Minuten verliebt sich ein Microservice in Linkerd • Service Mesh Vergleich auf servicemesh.es • Podcast zu Service Meshes • Tutorial von Linkerd • Tutorial von Istio 64 @joergm @INNOQ
  36. innoQ Deutschland GmbH innoQ Schweiz GmbH www.innoq.com Danke! Fragen? Jörg

    Müller [email protected] @joergm Icons made by srip, Smashicons, Nikita Golubev, Freepik, surang and Darius Dan from www.flaticon.com and licensed by CC 3.0 BY Kostenloser Service Mesh Primer Auf leanpub.com/service-mesh-primer Krischerstr. 100 40789 Monheim am Rhein Germany +49 2173 3366-0 Ohlauer Str. 43 10999 Berlin Germany +49 2173 3366-0 Ludwigstr. 180E 63067 Offenbach Germany +49 2173 3366-0 Kreuzstr. 16 80331 München Germany +49 2173 3366-0 Hermannstrasse 13 20095 Hamburg Germany +49 2173 3366-0 Gewerbestr. 11 CH-6330 Cham Switzerland +41 41 743 0116