Hermes Germany ist der zweitgrößte
Paket-Logistiker Deutschlands.
Gegründet 1972.
Wir stellen derzeit etwa 400 Millionen Pakete pro Jahr zu.
Neben Privatkunden sind unsere Hauptkunden Otto, Amazon, H&M, Zalando.
Slide 6
Slide 6 text
Wir lieben Weihnachten!
Slide 7
Slide 7 text
Inhalt
8
Evolution unserer Services
Slide 8
Slide 8 text
Monolithen
Ein Service kann alles.
Es war einmal bei Hermes
Slide 9
Slide 9 text
Der Anfang der Cloud-Philosophie
Nichts für Monolithen
Kleinere Services
→ REST Services
→ Besser testbar
→ Unabhängig erweiterbar
→ Unabhängig deploybar
→ Weniger Abstimmungen
→ Mehr Freiheit für die Teams
Slide 10
Slide 10 text
Der Anfang der Cloud-Philosophie
Ab nun kleinere Anwendungen!
Ok…
Slide 11
Slide 11 text
http://www.peeweepiglets.com/wp-content/uploads/2015/07/mini-piglets.jpg
… aus einem Monolithen machen wir
5 kleinere Services
Slide 12
Slide 12 text
Monitoring mit Grafana/Prometheus
Logging mit Kibana
Monitoring von einzelnen Services
Slide 13
Slide 13 text
Unser erster Grafana Graph
Slide 14
Slide 14 text
Weitere Grafana-Dashboards
Slide 15
Slide 15 text
Grafana-Boards für alle!
Slide 16
Slide 16 text
Kibana für alle!
Slide 17
Slide 17 text
… mehr über die Microservices
Die Frameworks werden interessanter:
mehr Services
mehr Interaktionen untereinander
Wir lernen…
• Asynchrone Verarbeitung
• Parallele Verarbeitung
• Reactor
…
• geplant: Kafka
Slide 18
Slide 18 text
Shibuya - by Joshua Mellin, CNN
Slide 19
Slide 19 text
Sind unsere einzelnen tollen Services alle
zusammen langsamer als der Monolith mal
war?
Und dann?
Cory Schadt, https://unsplash.com/photos/Hhcn6yy3Uo8
Slide 20
Slide 20 text
Wie monitort man den verteilten Datenfluss?
Und den Ablauf zwischen Microservices?
Kann man sich das Verhalten von Services bei den Aufrufen
anschauen?
Können wir Performance optimieren?
Wie sind die Latenzzeiten?
Wie sind die Zeiten bei den Lasttests?
Haben wir Probleme mit der Infrastruktur/Knoten?
Wie sind die Abläufe in den einzelnen Requests?
Und noch?
Slide 21
Slide 21 text
Inhalt
22
Ein guter Zeitpunkt für Tracing
Slide 22
Slide 22 text
23
Tracing
Slide 23
Slide 23 text
Vendor-neutral APIs and instrumentation for
distributed tracing
OpenTracing Project
Slide 24
Slide 24 text
Open Source (CNCF incubating project)
End-to-end distributed tracing
OpenTracing kompatibles Datenmodell und
Bibliotheken
Sehr kleiner Overhead
(< 1% Leistungseinbuße)
Unterschiedliche DBs als Storage
Wird gepflegt und weiterentwickelt
Jaeger Tracing
Slide 25
Slide 25 text
Einfach zu integrieren
Spring Boot
Spring Cloud Sleuth
Spring RestTemplate
Reactor
RxJava
Slide 26
Slide 26 text
Filtern nach Services, Tags usw.
Vergleich von Requests
Dependencies Graph
Features
Jaeger ist schnell einsatzfähig
Jaeger (z.B. in der Cloud, lokal)
Docker-Image: z.B. jaegertracing/all-in-one
Sleuth + Jaeger/ Zipkin Dependency im Projekt
Properties im Projekt:
spring.zipkin.baseUrl: http://jaeger-url:9411/
spring.sleuth.sampler.percentage: 1.0
Slide 29
Slide 29 text
No content
Slide 30
Slide 30 text
Filtern
Slide 31
Slide 31 text
No content
Slide 32
Slide 32 text
Nützliche Tags
Slide 33
Slide 33 text
Jaeger & Kibana
Slide 34
Slide 34 text
SpanId und TraceId werden automatisch mit
in den ELK übertragen
Jaeger und Kibana lassen sich so gemeinsam
verwenden
Slide 35
Slide 35 text
Jaeger & Kibana
Slide 36
Slide 36 text
Zeiten bei Last-Tests
Slide 37
Slide 37 text
Latenz-Zeiten
Slide 38
Slide 38 text
Patterns
Slide 39
Slide 39 text
Patterns
Slide 40
Slide 40 text
Zu wenige Informationen: Verdächtig:
Latenz, Delay:
Sequentiell: Parallel:
Locks:
time time time
time time time
Slide 41
Slide 41 text
Persistente DB für Jaeger
Event driven Architektur mit Kafka
Es macht erst dann richtig Spaß, wenn alle
Microservices Jaeger ansprechen
Ausblick für Hermes