betterCode(CA), Dezember 2022, Dirk Kröhan, (Software-Architekt bei QAware in Mainz.)
== Dokument bitte herunterladen, falls unscharf! Please download slides if blurred! ==
Wartbarer, testbarer und vor allem nachvollziehbarer Code. Welcher Entwickler wünscht sich das nicht? Themen wie Microservices und DDD helfen uns zwar dabei, unsere Services auf höherer Ebene zu schneiden, jedoch wird die Architektur innerhalb des Service oft vernachlässigt.
Mit Clean Architecture existiert bereits ein Vorgehen, um Services klarer zu strukturieren, weniger Kopplung zu erzeugen und den Code insgesamt testbar zu halten. Der Übergang von der Theorie in die Praxis ist dabei jedoch oft schwieriger als gedacht.
An einem realen Beispiel wird gezeigt, wie sich Clean Architecture in einem Spring-Boot-REST-Service realisieren lässt und wo Clean Architecture by the book nicht mehr unbedingt zielführend ist.
5. QAware | 5
Bekannte Probleme & die Suche nach dem heiligen Gral
■ Architekturentscheidungen werden früh getroffen
■ Datenbank steht im Zentrum
■ Fachlichkeit verstreut
■ Dinge zu finden ist schwierig
■ Fehlende Strukturen
■ Transiente Bugs treten öfter auf
■ Aufwand für Änderungen & neue Features steigt
■ Schwergewichtige / langsame Tests
9. QAware | 9
The rules of software architecture...
... are the rules of ordering
and assembling
the building blocks of programs.
- Clean Architecture -
10. “It works” - Reicht das nicht?
QAware | 10
■ "It works" ist oft schnell zusammengebastelt
■ Ein paar Libraries zusammenstecken -> Fertig
■ Copy&Paste StackOverflow Lösung
■ No-Code- / Low-Code-Editor
■ Compiler braucht keine Architektur
13. Der Mensch als Bottleneck
QAware | 13
■ Software wird von Menschen gebaut
■ Kognitive Fähigkeiten sind limitiert
– Max. Methodenlänge
– Größe einer Klasse
– Komplexität einer Komponente
– Größe eines Systems
14. QAware | 14
If you think good architecture is
expensive,
try bad architecture.
- Brian Foote and Joseph Yoder -
18. The goal of software architecture is
to minimize the human resources
required to build and maintain the
required system.
- Clean Architecture -
QAware | 18
20. Messbarkeit von gutem Softwaredesing
QAware | 20
Aufwand um Anforderungen umzusetzen
■ Aufwand gering und bleibt über die Zeit gering → gute Architektur
■ Aufwand steigt mit jedem weiteren Release → schlechte Architektur
21. Gute Architektur lebt!
QAware | 21
Eine gute Architektur ist mehr als Reise
denn als Ziel zu verstehen, mehr als ein
fortlaufender Prozess denn als ein starres
Artefakt.
22. Eine gute Architektur soll mir helfen ...
QAware | 22
■ ... ohne viel Aufwand zu verstehen, was ein Service tut.
■ ... neue Anforderung in angemessener Zeit umzusetzen.
■ ... mich auf das Wesentliche zu fokussieren.
■ ... technische Entscheidung nicht voreilig treffen zu müssen.
24. Ziele von Clean Architecture
QAware | 24
■ Unabhängigkeit von Frameworks
■ Unabhängigkeit von User-Interfaces
■ Unabhängigkeit von Datenbanken
■ Unabhängigkeit von anderen externen Schnittstellen / Datenquellen
■ Einfache Testbarkeit der Fachlichkeit
25. The center of your application is not the
database.
Nor is it one or more of the frameworks
you may be using.
The center of your application are
the use cases of your application.
- Robert C. Martin -
QAware | 25
38. Zusammenfassung
QAware | 38
■ Fokus auf UseCases und Domain → Screaming Architecture
■ Klare Trennung von Fachlichkeit und technischen Details → Bessere Verständlichkeit
■ Fachlichkeit separiert in UseCases → Single Responsability > Don’t repeat yourself
■ Datenbank und Frameworks bleiben ein Detail → Architekturentscheidungen später treffen
■ Einfache Testbarkeit → Unit-Tests der Fachlichkeit (z.B. mit In-Memory Data Provider)
40. It depends!
QAware | 40
■ Keine One-Fits-All Lösung!
– Für Services mit wenig Fachlichkeit (CRUD Services) eeventuell zu hoher Mapping Aufwand
– Gefühlt viel mehr Code Duplizierung (SRP > DRY)
■ “Build your own naming conventions”
■ Höhere Produktivität!
– Klare Struktur & einfachere Verständlichkeit
– Änderungen einfacher möglich
– Siehe auch “What improves developer productivity at google? code quality” (11/2022)
■ Separation of concern: “The center of your application are the use cases of your application”
41. Green Software Development Community Meetup
The challenge of putting
software sustainability
research into practice
Sandro Kreten
@ QAware in Munich
Jan 19th, 2023 | 18:30