Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles...

45
Cofinpro AG // // Vom Distributed Monolith zu Self-Contained Systems: ein Erfahrungsbericht https://speakerdeck.com/mscholtz/vom-distributed-monolith-zu-self-contained-systems-ein-erfahrungsbericht

Transcript of Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles...

Page 1: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Vom Distributed Monolith zu Self-Contained Systems: ein Erfahrungsbericht

https://speakerdeck.com/mscholtz/vom-distributed-monolith-zu-self-contained-systems-ein-erfahrungsbericht

Page 2: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Marcos Scholtz

[email protected]

Wer sind wir

01.03.2019 2

Gregor Tudan

[email protected]

Page 3: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Unser Projekt

• Robo-Advisor für die vollständig digitale Geldanlage

• White-Label Plattform der genossenschaftlichen Finanzgruppe

• mehrere hundert Banken angeschlossen

• 5 verschiedene Produkte

01.03.2019 3

Page 4: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Was wollen wir erzählen?

• Vorher – unser Distributed Monolith

• Unser Ziel – Self-Contained-Systems

• Unser Weg – wie sind wir vorgegangen

• Was ist noch zu tun

• Was haben wir gelernt

01.03.2019 4

Page 5: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Wie war es vorher: unser „Distributed Monolith“

Page 6: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Am Anfang war alles schön…

• neue Web-Anwendung

• Microservices in zwei Schichten

-Business-Logik

- Integration

• 1 AngularJS Frontend

• 1 Kunde, ein Produkt

• 1 Scrum-Team

01.03.2019 6

Die Welt war in Ordnung

Page 7: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Der Preis des Erfolgs

• Viele neue Features

• White-Labeling für über 300 Banken

• 5 verschiedene Produkte

• neue Vertriebskanäle

• Mobile-App

• Berater-Portal

• Skalierung auf 5 Scrum-Teams

01.03.2019 7

Komplexität um ein Vielfaches höher

Page 8: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Service-Abhängigkeiten

01.03.2019 8

Page 9: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Die Organisation

Reaktion

• Einführung eines „Integration-Teams“

• hat die Architektur-Verantwortung

• keine festen Zuständigkeiten der Teams

01.03.2019 9

Integration-Team

Teams

Ergebnis

• Integration-Team überlastet

• Jeder muss alles kennen

• Teams demotiviert

Page 10: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Die Herausforderung

• Anwendung groß und komplex

• neue Mitarbeiter brauchen lang für die Einarbeitung

• Anpassungen nur schwer möglich

• Fehler wirken sich auf andere Anwendungsteile aus

• Viel Aufwand für manuelle Tests

• Releases dauern zu lang

01.03.2019 10

Wir haben einen Distributed-Monolith!

Page 11: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Alles ist schlimm! Und jetzt?

Page 12: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Self-Contained Systems

01.03.2019 12

DistributedMonolith

Self-ContainedSystems

Sim

ula

tion

Regis

trie

rung

Antr

agss

treck

e

SCS oder„Vertical“

Frontend

Business-Layer

Integration-Layer

Page 13: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Ein Self-Contained System

• ist eine unabhängige Web-Anwendung

• gehört zu einem Team

• kommuniziert meistens asynchron

• beinhaltet Frontend, Logik, und Daten

• benutzt keinen (kaum) geteilter Code oder Komponenten

• kann allein released/deployed werden

01.03.2019 13

Hyperlinks

Messaging

https://scs-architecture.org

Page 14: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Self-Contained Systems

Was wollen wir erreichen

• weniger komplexe Anwendungen

• unabhängiger arbeiten – weniger Overhead

• mehr Verantwortung in den Teams

01.03.2019 14

Page 15: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Klingt toll! Wie kommen wir dahin?

Page 16: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Anwendungsschnitt

01.03.2019 16

• sonst keine Unabhängigkeit / Entkopplung

• nach „Bounded Context“ (DDD)

Schnitt sollte fachlich sein

• geeignet für Produkte / Bereiche mit wenig Gemeinsamkeiten

Nach Produkt / Bereich / Kundentyp

• geeignet für Prozess-Schritte mit wenig Gemeinsamkeiten

Nach fachlichen Prozess-Schritten

Zerteilung in 10 Verticals nach fachlichen Prozess-Schritten

Page 17: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Aufteilung der Verticals

01.03.2019 17

Fra

ge

stre

cke Ermitteln von

Anlage-vorschlägen

Simulation der Zielerreichung

Re

gis

trie

run

g Anlegen von Benutzerkonten

Authentifizierung

De

po

terö

ffn

un

g Erfassen der persönlichen Daten

Legitimation

Page 18: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Verticals auf Teams verteilen

• Verticals auf Teams verteilt

-Teams haben mitentschieden

- vorhandenes Know-How als wichtigster Faktor

• manche Verticals größer als andere: Balance finden

• Cross-Cutting Concerns: beim Integration-Team geblieben

Erfahrung

• Immer wieder Feinjustierung nötig

• aber weniger als gedacht

01.03.2019 18

Page 19: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Bestandsaufnahme mit den Teams

Ein Workshop pro Team

• ganzes Team + Integration-Team

• Analyse und Abgrenzung des Verticals

• Ermittlung der Abhängigkeiten

Die Erfahrung

• sehr oberflächliches Know-How in den Teams

• viele Abhängigkeiten

• fachliche Abgrenzung schwierig: Teilnahme eines POs?

01.03.2019 19

Page 20: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Makro- und Micro-Architektur

Das Ziel:

• Verantwortung verteilen

• spezialisierte Teams

• Autonomie der Teams

• Teams durch Eigen-verantwortung motivieren

01.03.2019 20

Makro-Architektur

Integration-TeamTeamTeam

Micro-Architektur

Cross-Cutting-Concerns

Vert

ical1

Vert

ical2

Vert

ical3

Page 21: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Verteilung der Verantwortung

01.03.2019 21

Makro-Architektur Micro-Architektur

Int-Team Teams

Int.-Team entscheidet Team entscheidet selbstInt.-Team wird informiertund empfiehlt

Ziel: weniger orange, mehr blau

Page 22: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Technische Refactorings

01.03.2019 22

Technisches Backlog

Nexus Refinement Backlog

Sprint-Backlog

Page 23: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Herausforderung: Konzeption

Umdenken bei der Konzeption von Stories:

• 1 User-Story ► 1 Vertical

• PO(s) mit „Produkt“-Ausrichtung

• vom Int.-Team „abhängig“

• Braucht Zeit…

• Inzwischen spezialisierte PO(s) nach Prozess-Schritt

01.03.2019 23

Sim

ula

tion

Regis

trie

rung

Antr

agss

treck

e

Tolle

s

Featu

re

Page 24: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Herausforderung: Planung

Ungleichmäßige Team-Auslastung:

1. NICHT machen(balanciert planen)

2. Entwickler wechseln temporär das Team

3. Stories zwischen Teams schieben(Merge-Requests an das „Owner“-Team)

01.03.2019 24

Page 25: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Zähmen des Service-Schwarms:technische Änderungen

Page 26: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Verticals entkoppeln

Abhängigkeiten

• viel Kommunikation zwischen Verticals

• manche Services mit Fachlichkeit aus zwei Verticals

• viel geteilter Code (insbesondere im Frontend)

• große Frontends – erstrecken sich über mehrere Verticals

01.03.2019 26

Page 27: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Ansätze zur Entkopplung

Abhängigkeiten entfernen

• Abspaltung von Services

• Code-Duplizierung

• Daten-Replizierung

• Zusammenfügen von Services

Abhängigkeiten pflegen

• Messaging

• spezialisierte APIs

• APIs rückwärtskompatibel

• Schnittstellen-Tests (CDCT)

01.03.2019 27

Page 28: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Abhängigkeiten entfernen

01.03.2019 28

Abspaltung von Services

Page 29: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Abhängigkeiten entfernen

01.03.2019 29

Code-Duplizierung

Page 30: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Abhängigkeiten entfernen

01.03.2019 30

Daten-Replizierung

Page 31: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Abhängigkeiten entfernen

01.03.2019 31

Zusammenfügen von Services

Page 32: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Abhängigkeiten pflegen

01.03.2019 32

Messaging

• Request-Response-Pattern• einfaches Fehlerhandling• Gegenseite muss verfügbar sein

• Publish-Subscribe Pattern• eventually consistent• Broker muss verfügbar sein

Page 33: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Abhängigkeiten pflegen

01.03.2019 33

Spezialisierte APIs

Page 34: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Abhängigkeiten pflegen

APIs rückwärtskompatibel

• keine breaking changes

• alte Felder behalten (deprecated)

• API versionieren (vermeiden)

01.03.2019 34

Schnittstellen-Tests

• Sicherstellen der API-Kompatibilität zwischen Versionen

• Consumer Driven Contract Tests (z.B. PACT)

Page 35: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Frontend-Modularisierung

01.03.2019 35

Page 36: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Frontend-Modularisierung

01.03.2019 36

Page 37: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Frontend-Modularisierung

01.03.2019 37

Page 38: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Beispiel: ein Prozess komplett überdenken

01.03.2019 38

Page 39: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Was ist noch zu tun

Page 40: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Betriebs- und Delivery-Prozesse

• Problem: stark regulierte Branche

• Regulatorik und DevOps passen nicht immer zusammen

• Mehr automatisiertes Testen notwendig

• Testen der Schnittstellen (Contract Driven)

• Delivery-Pipeline-Verantwortung in den Teams

01.03.2019 40

Entwicklung(minütlich)

Test(täglich)

Prod(wöchentlich)

Page 41: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Was ist noch zu tun?

• Klare Schnittstellen zwischen Verticals

-Abhängigkeiten: wir haben noch zu viele

-Alle problematischen schaffen wir vermutlich nie

• Verticals sind Cluster von Microservices

• Unabhängig Release-Zyklen

• Continuous Delivery

-Nicht kompatibel mit den Release- und Freigabeprozessen

Page 42: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Was haben wir gelernt?

Page 43: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Was haben wir gelernt?

Was läuft besser?

• weniger Bugs

• klarere Prozesse

• schnellere Umsetzung

• motivierte Entwickler

• technische Probleme werden wieder angegangen

Was ist der Preis?

• weniger Konsistenz (Daten, Problemlösung)

• lokale Optimierungen:mein Vertical vs. die Plattform

• weniger Übersicht der Entwickler über die Gesamtplattform

• langsamer bei Anwendungs-übergreifenden Features

Page 44: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Cofinpro AG // //

Vielen Dank!

Fragen?

https://speakerdeck.com/mscholtz/vom-distributed-monolith-zu-self-contained-systems-ein-erfahrungsbericht

Page 45: Vom Distributed Monolith zu Self-ContainedSystems: ein … · 2019-06-11 · Am Anfang war alles schön ... Umdenken bei der Konzeption von Stories: • 1 User-Story 1 Vertical •

Bitte geben Sie uns jetzt Ihr Feedback!

Vom Distributed Monolith zu Self-

Contained Systems: ein Erfahrungsbericht

Marcos Scholtz, Gregor Tudan

Nächste Vorträge in diesem Raum

11:45 Cloak-and-Dagger-Stories: Absichern

von Anwendungen mit OAuth und Keycloak,

Gregor Tudan

13:30 Testautomatisierung ohne Assertions,

Dr. Jeremias Rößler

14:30 TDD demystified, Tilmann Glaser,

Peter Fichtner