29
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...

Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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...

Page 2: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

[email protected]

@HarmGnoyke

xing.to/HarmG

Page 3: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

Page 4: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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)

Page 5: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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/

Page 6: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

+

Page 7: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

Page 8: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

Page 9: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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.”

Page 10: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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.

Page 11: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

+

Page 12: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

Page 13: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

Page 14: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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?

Page 15: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

Page 16: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

+

Page 17: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

Page 18: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

Page 19: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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/

Page 20: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

Page 21: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

Page 22: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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“

Page 23: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

Page 24: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

14.12.2016

24

47 Wie werde ich ihn los? embarc.de

vs.

48 Wie werde ich ihn los? embarc.de

Hystrix Dashboard

Page 25: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

+

Page 26: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

Page 27: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

Page 28: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

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

Page 29: Wie werde ich ihn los - in 10 Tagen deploy...14.12.2016 9 Wie werde ich ihn los? embarc.de 17 Domain Driven Design n Microservices-Schnitt sollte zuerst fachlich erfolgen n Bounded

14.12.2016

29

Vielen Dank. Ich freue mich auf Eure Fragen!

[email protected]

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/