14.12.2016
1
Wie werde ich ihn los – in 10 Tagen? Vom Monolithen zu Microservices
HARM GNOYKE, EMBARC
IT-Tage 2016, Frankfurt
14.12.2016
0
2 Wie werde ich ihn los? embarc.de
Wie werde ich ihn los – in 10 Tagen? Vom Monolithen zu Microservices
Viele Projektteams sind eine langjährige Beziehung mit einem Monolithen eingegangen - auch wenn Sie diese Entscheidung gar nicht selbst getroffen haben - und sind mit dieser Situation unglücklich. Mittlerweile gibt es viele große Microservice-Systeme, die ungleich attraktiver erscheinen: Entwickeln in unabhängigen Teams, evtl. sogar mit verschiedenen Technologien, einfaches Austauschen einzelner Services, beliebige Skalierbarkeit sind die bekanntesten Vorteile. Doch wie verabschieden Sie sich möglichst elegant von Ihrem Monolithen und wechseln zu einem Microservice-System? In diesem Vortrag diskutiere ich zunächst die Beweggründe für einen Wechsel. Ist die Entscheidung gefallen, steht der Umzug an: Was lassen Sie zurück und was nehmen Sie mit ins neue Microservice-System? Ich zeige eine schrittweise Ablösestrategie und weise auf typische Stolperfallen hin. Als Abschluss zeige ich wie sich der Umzug auf die Test-Strategien auswirkt. Insbesondere dort tickt der Neue nämlich anders...
14.12.2016
2
3 Wie werde ich ihn los? embarc.de
4 Wie werde ich ihn los? embarc.de
Harm Gnoyke
n Softwareentwickler + -architekt bei embarc in Hamburg n Vorher Hamburg Süd, sd&m (heute Capgemini)
Schwerpunkte: n Softwaredesign n Softwarearchitektur (Bewertung, Methodik) n Java-Technologien
@HarmGnoyke
xing.to/HarmG
14.12.2016
3
5 Wie werde ich ihn los? embarc.de
Agenda
1 Warum Microservices?
2 Schrittweise Ablösung
3 Geänderte Arbeitsweise
4 Neue Teststrategien
5 Fazit & Weitere Informationen
6 Wie werde ich ihn los? embarc.de
© 2003 – Paramount Pictures
MONOLITH
14.12.2016
4
7 Wie werde ich ihn los? embarc.de
Agenda
1 Warum Microservices?
2 Schrittweise Ablösung
3 Geänderte Arbeitsweise
4 Neue Teststrategien
5 Fazit & Weitere Informationen
1
8 Wie werde ich ihn los? embarc.de
Wie über Monolithen geredet wird
“Er wird immer mehr zur Couch Potato.”
“Ich verstehe häufig nicht, was er eigentlich will.”
“Auf spontanen Parties mit vielen Leuten ist er überfordert.”
“Ich würde gerne öfter mal was Neues ausprobieren. Das geht mit ihm nicht...”
“Er klammert mir zu sehr.”
(Wartbarkeit)
(Erweiterbarkeit)
(Skalierbarkeit)
(Neue Technologien)
(Unabhängigkeit)
14.12.2016
5
9 Wie werde ich ihn los? embarc.de
Der Hauptdarsteller...
Stark vereinfachte Darstellung!
10 Wie werde ich ihn los? embarc.de
http://bodyheightweight.com/matthew-mcconaughey-weight-loss/
14.12.2016
6
11 Wie werde ich ihn los? embarc.de
Agenda
1 Warum Microservices?
2 Schrittweise Ablösung
3 Geänderte Arbeitsweise
4 Neue Teststrategien
5 Fazit & Weitere Informationen
2
12 Wie werde ich ihn los? embarc.de
Sachen packen
+
14.12.2016
7
13 Wie werde ich ihn los? embarc.de
Hammertime!
https://media.giphy.com/media/kmOoBqGnQwls4/giphy.gif
14 Wie werde ich ihn los? embarc.de
Anhaltspunkte für die Zerlegung (1/2)
n Gemeinsam genutzte Daten
n Analyse der Aufrufabhängigkeiten
14.12.2016
8
15 Wie werde ich ihn los? embarc.de
Beispiel: Abhängigkeiten analysiert
16 Wie werde ich ihn los? embarc.de
Anhaltspunkte für die Zerlegung (2/2)
n Gemeinsam genutztes Fremdsystem
n Fachliche Prozessgrenzen
14.12.2016
9
17 Wie werde ich ihn los? embarc.de
Domain Driven Design
n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded Context als Prototyp für einen Microservice
n Besonderes Augenmerk auf die Core Domain legen:
„Boil the model down. Define a core domain and provide a means of easily distinguishing it from the mass of supporting model and code. Bring the most valuable and specialized concepts into sharp relief. Make the core small .“ (Eric Evans, DDD Reference)
n Shared Kernel für gemeinsam genutzte Funktionalitäten möglichst klein halten (nicht als gemeinsame Ressource)
18 Wie werde ich ihn los? embarc.de
Die Zerlegung als fachliche Chance
n Behinderung von fachlichen Änderungen durch den Monolithen n Zu teuer, langwierig, komplex
n Zerlegung erfordert auch fachlich eine neue Denkweise n Aufbrechen von Prozessen à Mehr Fehlerquellen n Konsistente Datenstände schwieriger herzustellen
“Er wird immer mehr zur Couch Potato.”
“Ich würde gerne öfter mal was Neues ausprobieren.”
14.12.2016
10
19 Wie werde ich ihn los? embarc.de
Defensives Software Design
https://en.wikipedia.org/wiki/Poka-yoke
20 Wie werde ich ihn los? embarc.de
Fehlertoleranz: Hystrix
➔ https://github.com/Netflix/Hystrix
Hystrix is a latency and fault tolerance library
designed to isolate points of access to remote
systems, services and 3rd party libraries, stop
cascading failure and enable resilience in
complex distributed systems where failure is
inevitable.
14.12.2016
11
21 Wie werde ich ihn los? embarc.de
Wann ist ein Service zu Micro?
n Viele Aufrufe zwischen den einzelnen Services à Performance Overhead
n Fachliche Transaktionsgrenzen zu häufig verletzt à Inkonsistente Daten à Komplexe Kompensationsoperationen
22 Wie werde ich ihn los? embarc.de
Das erste Date mit dem Neuen
+
14.12.2016
12
23 Wie werde ich ihn los? embarc.de
Den ersten MS-Kandidaten finden
n Neue funktionale Anforderungen
n Neues Feature Team
n Besondere Qualitätsanforderungen (z.B. Performance oder Skalierbarkeit)
n Wunsch nach anderer Technologie
n Getrennte Datenhaltung schon vorhanden
24 Wie werde ich ihn los? embarc.de
Der Hauptdarsteller nach Akt 1
14.12.2016
13
25 Wie werde ich ihn los? embarc.de
Alte Gewohnheiten aufgeben
+
26 Wie werde ich ihn los? embarc.de
Ein Beispiel...
Bestellung Lager Abrechnung
14.12.2016
14
27 Wie werde ich ihn los? embarc.de
... zerlegt
Bestellung Lager Abrechnung
2
1
3
4
28 Wie werde ich ihn los? embarc.de
Push oder Pull zur Synchronisation?
n Microservice Teams müssen definieren n Frequenz von Updates
n Granularität
n Bulk-Updates oder einzelne Datensätze
n Versionierung
n Standardisierung dieser Themen unterstützt unabhängiges Arbeiten ... nach dem Festlegen der Standards
n Möchte man den Zugriff auf Daten fremder Microservices erleichtern oder erschweren?
14.12.2016
15
29 Wie werde ich ihn los? embarc.de
Der Hauptdarsteller nach Akt 2
30 Wie werde ich ihn los? embarc.de
Datenbank-Migration
https://github.com/wmr513/microservices-antipatterns-workbook
“You rarely get service granularity right the first time!” Mark Richards
ok
14.12.2016
16
31 Wie werde ich ihn los? embarc.de
Der Hauptdarsteller etwas später
...
...
32 Wie werde ich ihn los? embarc.de
Die gute Trennung
+
14.12.2016
17
33 Wie werde ich ihn los? embarc.de
Schrittweise Ablösung
Kandidaten identifizieren Bestehende Abhängigkeiten, besondere Anforderungen, etc.
1
Datenbank aufteilen Sync: Push oder Pull?
2
Weitere Kandidaten identifizieren Siehe Schritt 1
3
Reicht das aus? 4
34 Wie werde ich ihn los? embarc.de
14.12.2016
18
35 Wie werde ich ihn los? embarc.de
Antipattern Distributed Monolith
à
36 Wie werde ich ihn los? embarc.de
Agenda
1 Warum Microservices?
2 Schrittweise Ablösung
3 Geänderte Arbeitsweise
4 Neue Teststrategien
5 Fazit & Weitere Informationen
3
14.12.2016
19
37 Wie werde ich ihn los? embarc.de
Neue Gewohnheiten annehmen
+
38 Wie werde ich ihn los? embarc.de
DevOps – mehr als eine Affäre! „Microservices are the first post DevOps revolution
architecture” (Neal Ford)
http://www.continuousautomation.com/from-devops-to-sysops-and-back/
14.12.2016
20
39 Wie werde ich ihn los? embarc.de
Querschnittliche Aspekte
n Unabhängige Teams etablieren n Fähigkeiten aus verschiedenen Disziplinen nötig
n Verantwortung bis in Produktion verankern
n Klärung von Contracts und SLAs zwischen Microservices
n Umgang mit Versionen klären
n Breaking API Changes vermeiden
n Koexistenz von Versionen ermöglichen
n Semantic Versioning erleichtert Kommunikation
40 Wie werde ich ihn los? embarc.de
Agenda
1 Warum Microservices?
2 Schrittweise Ablösung
3 Geänderte Arbeitsweise
4 Neue Teststrategien
5 Fazit & Weitere Informationen
4
14.12.2016
21
41 Wie werde ich ihn los? embarc.de
Automisierte Unit Tests
Automatisierte Integrationstests
Automatisierte GUI-Tests
Manuelle Tests
Ideale Testpyramide
60%-80% Testabdeckung
Voll integriert Limitierte Testfälle Integration
Für technisch/funktional
wichtige Themen
Nicht automatisiert
Komplexe/Neue Testfälle
42 Wie werde ich ihn los? embarc.de
Automisierte Unit Tests
Automatisierte Integrationstests
Automatisierte GUI-Tests
Manuelle Tests
Auch hier zerlegen
14.12.2016
22
43 Wie werde ich ihn los? embarc.de
Automisierte Unit Tests
Automatisierte Integrationstests
Automatisierte GUI-Tests
Manuelle Tests
Auch hier zerlegen
44 Wie werde ich ihn los? embarc.de
Keine Geschwindigkeit verlieren
n Problem: Ich möchte nicht auf die Integration mit anderen Services warten
n Lösung: Verschieben der Integration mit anderen Services in meine Teststufe n Verhalten von Aufrufern simulieren
n Dazu enge Abstimmung mit Aufrufern notwendig
n Oder gute Kenntnis meiner Schnittstellen
n Sollte ich doch sowieso gut kennen, oder?
„Consumer Driven Contract Testing“
14.12.2016
23
45 Wie werde ich ihn los? embarc.de
...
...
46 Wie werde ich ihn los? embarc.de
Simian Army Zufälliges Deaktivieren... Chaos Monkey – von Instanzen Chaos Gorilla – von Amazon Availability Zone Chaos Kong – von ganzen Regionen
Latenzen künstlich anheben Latency Monkey
Weitere Monkeys: Janitor, Security, Doctor, 10-18 Monkey
14.12.2016
24
47 Wie werde ich ihn los? embarc.de
vs.
48 Wie werde ich ihn los? embarc.de
Hystrix Dashboard
14.12.2016
25
49 Wie werde ich ihn los? embarc.de
50 Wie werde ich ihn los? embarc.de
Den Kontakt zum Ex-Partner halten
+
14.12.2016
26
51 Wie werde ich ihn los? embarc.de
Beispiel Soundcloud: Sind wir schon da?
“Our investment in making services easier to build has created the conditions for behaviors which make it harder to decommission our monolith.”
https://developers.soundcloud.com/blog/microservices-and-the-monolith.html
52 Wie werde ich ihn los? embarc.de
Beispiel Soundcloud: Sind wir schon da?
“As of today, SoundCloud still has the monolith code live, but its importance decreases every day. It is still in the critical path for many features, but due to a system of stranglers it’s not even Internet-facing anymore. I am not sure it will ever go away, some features it provides are so small and stable it may be cheaper to keep them there forever, but I give it one year until the monolith isn’t on any critical path anymore”
http://philcalcado.com/2015/09/08/how_we_ended_up_with_microservices.html
14.12.2016
27
53 Wie werde ich ihn los? embarc.de
http://www.independent.co.uk/arts-entertainment/tv/watch-trailer-for-true-detective-starring-matthew-mcconaughey-and-woody-harrelson-9144267.html
54 Wie werde ich ihn los? embarc.de
Agenda
1 Warum Microservices?
2 Schrittweise Ablösung
3 Geänderte Arbeitsweise
4 Neue Teststrategien
5 Fazit & Weitere Informationen 5
14.12.2016
28
55 Wie werde ich ihn los? embarc.de
Spicken erlaubt!
è http://architektur-spicker.de
Unsere Architektur-Spicker beleuchten die konzeptionelle Seite der Softwareentwicklung.
Spicker #3: „Microservices“ In dieser Ausgabe: • Was ist bei Microservices
entscheidend? • Wie nutzen Sie die Ansätze? • Welche Kompromisse gehen
Sie dabei ein?
PDF, 4 Seiten Kostenloser Download.
ç
56 Wie werde ich ihn los? embarc.de
Tests erst in Produktion? è https://www.informatik-aktuell.de/entwicklung/methoden/tests-erst-in-produktion-was-wir-von-tests-bei-microservices-lernen-koennen.html
14.12.2016
29
Vielen Dank. Ich freue mich auf Eure Fragen!
xing.to/HarmG
@HarmGnoyke
DOWNLOAD FOLIEN: http://www.embarc.de/blog/ Bei uns arbeiten?
58 Wie werde ich ihn los? embarc.de
Wir teilen unser Wissen gerne mit Ihnen... und auch bei Ihnen!
Sie haben eine Community of Practice und suchen inhaltliche Anregungen oder Abgleich? Sie planen ein Team-Event und wollen es neben der sozialen Komponente auch fachlich ausrichten?
LASSEN SIE UNS NEUE THEMEN AUFZEIGEN UND IMPULSE SETZEN!
è http://www.embarc.de/leistungen/impulsvortraege/