Man gewinnt den Eindruck, Microservices seien die Universallösung für all unsere (Architektur-)Probleme. Dabei sind Microservices lediglich Mittel zum Zweck. Was also, wenn meine Probleme nicht zur Lösung „Microservices“ passen? Ist es nach wir vor legitim, einen Monolithen zu bauen? Oder gibt es andere Architekturansätze, mit denen sich Monolithen aufbrechen lassen? In der Session werfen wir einen kritischen Blick auf Microservices und beleuchten – immer ausgehend von bestehenden Problemfeldern – eine Reihe alternativer Architekturen.
3. #WISSENTEILEN
ÜBER MICH
Wer bin ich - und wenn ja, wie viele?
• CIO New Technologies
• Enterprise & Mobile
• Autor, Speaker, Coach & Mentor
• Snowboard & MTB Enthusiast (a.k.a. “stets bemüht“)
Lars Röwekamp (a.k.a. @mobileLarson)
16. #WISSENTEILEN
MI CR O
SER CES
ARCHI TEC TURE
SORRY!
The service is
temporary
not available
Ok, es gibt
Challenges …
• Communication
• Resilience
17. #WISSENTEILEN
MI CR O
SER VI CES
ARCHI TEC TURE
Ok, es gibt
Challenges …
• Communication
• Resilience
• Monitoring
18. #WISSENTEILEN
MI CR O
SER VI CES
ARCHI TEC TURE
Ok, es gibt
Challenges …
• Communication
• Resilience
• Monitoring
?
19. #WISSENTEILEN
MI CR O
SER VI CES
ARCHI TEC TURE
Ok, es gibt
Challenges …
• Communication
• Resilience
• Monitoring
?
?
?
?
?
20. #WISSENTEILEN
MI CR O
SER VI CES
ARCHI TEC TURE
Ok, es gibt
Challenges …
• Communication
• Resilience
• Monitoring
• Security
21. #WISSENTEILEN
MI CR O
SER VI CES
ARCHI TEC TURE
Ok, es gibt
Challenges …
• Communication
• Resilience
• Monitoring
• Security
22. #WISSENTEILEN
MI CR O
SER VI CES
ARCHI TEC TURE
Ok, es gibt
Challenges …
• Communication
• Resilience
• Monitoring
• Security
• Data & TX
23. #WISSENTEILEN
MI CR O
SER VI CES
ARCHI TEC TURE
Ok, es gibt
Challenges …
• Communication
• Resilience
• Monitoring
• Security
• Data & TX
• Configuration
24. #WISSENTEILEN
MI CR
SER VI CES
TEC TURE
O
ARCHI
Ok, es gibt
Challenges …
• Communication
• Resilience
• Monitoring
• Security
• Data & TX
• Configuration
• Versioning
25. #WISSENTEILEN
MI CR
SER VI CES
TEC TURE
O
ARCHI
Ok, es gibt
Challenges …
• Communication
• Resilience
• Monitoring
• Security
• Data & TX
• Configuration
• Versioning
26. #WISSENTEILEN
MI CR
SER VI CES
TEC TURE
VI v2
O
ARCHI
v2
Ok, es gibt
Challenges …
• Communication
• Resilience
• Monitoring
• Security
• Data & TX
• Configuration
• Versioning
27. #WISSENTEILEN
MI CR
SER VI CES
TEC TURE
VI
O
ARCHI
v3
v2
Ok, es gibt
Challenges …
• Communication
• Resilience
• Monitoring
• Security
• Data & TX
• Configuration
• Versioning
VI v3
28. #WISSENTEILEN
MI CR
SER VI CES
TEC TURE
VI
VI v3
O
ARCHI
v3
v2
Ok, es gibt
Challenges …
• Communication
• Resilience
• Monitoring
• Security
• Data & TX
• Configuration
• Versioning
?
29. #WISSENTEILEN
MI
SER VI CES
TEC TURE
VI
VI v3
ARCHI
v3
v2
Ok, es gibt
Challenges …
• Communication
• Resilience
• Monitoring
• Security
• Data & TX
• Configuration
• Versioning
deprecated
O
CR
33. #WISSENTEILEN
Was waren noch mal die Problem?
• Umsetzungstaus
• Release Qualität
• Robustheit
• Kosten
• Zukunftsfähigkeit
• Skalierbarkeit*
*Entwicklungs- vs. Laufzeit
34. #WISSENTEILEN
Was waren noch mal die Problem?
• Umsetzungstaus
• Release Qualität
• Robustheit
• Kosten
• Zukunftsfähigkeit
• Skalierbarkeit
#1 stark verwässerte
Fachlichkeit
#2 fehlende Trennung
von Zuständigkeiten
#3 Abhängigkeiten
innerhalb der Architektur
35. #WISSENTEILEN
Was waren noch mal die Problem?
• Umsetzungstaus
• Release Qualität
• Robustheit
• Kosten
• Zukunftsfähigkeit
• Skalierbarkeit
viel zu viele
Abhängigkeiten
in der Entwicklung,
im Testing und
zur Laufzeit
42. #WISSENTEILEN
Problemkind Schichtenmodell
• UI Controller via CDI Managed Beans
• Service Facade und Services via EJB/CDI
• Persistenz via EntityManager und Entities
• Alles nur Infrastruktur!
• Wo steckt eigentlich die fachliche Domain?
46. #WISSENTEILEN
Fachlichkeit im Fokus
UC-001: „create Customer“
• Kunde neu erfassen und speichern
• Begrüßungs-Mail an Neukunden versenden
• Call Center Agent als Audit-Info speichern
62. #WISSENTEILEN
Step #4: fachliche Methoden
a.k.a. „no more doAll(…)-Methods“
• Primärer Use Case: create Customer
• Sekundärer Use Case: send Welcome Mail
• Sekundärer Use Case: trace Trainee Audit Info
• Sekundärer Use Case: if tenant X …
63. #WISSENTEILEN
Step #4: fachliche Methoden
Idee der Domänen-Events
• Primärer Use Case löst Event aus
• Sekundäre Use Cases reagieren auf Event
77. #WISSENTEILEN
• high cohesion
• low coupling
• business capabilities
• bounded context / aggregates
• encapsulated data
• substitutable
• composable
• deployable
• upgradeable
• replaceable
• scalable
alle Vorteile von „Modular“
plus unabhängig …
Services
Modular
78. #WISSENTEILEN
Unabhängigkeit in der Entwicklung und im Testing
• high cohesion
• low coupling
• business capabilities
• bounded context / aggregates
• encapsulated data
• substitutable
• composable
Modular
„Mehr verlange
ich doch gar nicht
vom Leben!“
87. #WISSENTEILEN
Big Ball of Mud
„A big ball of mud is a
casually, even haphazardly,
structured system.
Its organization, if one
can call it that, is dictated
more by expedience
than by design.“
by Brian Foote & Joseph Yoder
88. #WISSENTEILEN
Aber wir haben doch REGELN!
Architecture Principles geben Regeln vor.
Dev Reviews & Tools finden Verstöße, oder?
• Inspection von Code UND anderen Artifakten
• jqAssistant, SonarGraph/Cloud, jDepend
• ArchUnit (Arch Regeln als UnitTests)
• Spring Moduliths Framework
89. #WISSENTEILEN
Modularisierung* und ihre Probleme
Package pro …
• Layer: rein technische Sicht
• Features: übergreifende Fachlichkeit
• Ports & Adapters: Wrapper über Warpper
• ????
*the code structure should reflect the architectural intent
90. #WISSENTEILEN
CustomersController
<< interface >>
CustomersComponent
<< interface >>
CustomersRepositoty
Package by Component*
de.openknowledge.app.web
de.openknowledge.app.customers
<<uses>>
DbCustomersRepository
CustomersComponentImpl
<<uses>>
*grouping of related functionality behind a nice clean interface
109. #WISSENTEILEN
#001 thx to Andrea Picaquadio (pexels.com)
#006 thx to Mike van Schoonderwalt (pexels.com)
#008 thx to Andrea Picaquadio (pexels.com)
#030 thx to Andrea Picaquadio (pexels.com)
#102 thx to Andrea Picaquadio (pexels.com)
Alle weiteren Bilder der Präsentation sind entweder von pexels.com,
pixabay.com oder von mir selbst erstellt.
Bildernachweis