Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Clean Architecture - A practical approach

Dirk Kroehan
September 06, 2018

Clean Architecture - A practical approach

Dirk Kroehan

September 06, 2018
Tweet

More Decks by Dirk Kroehan

Other Decks in Programming

Transcript

  1. Clean Architecture - A practical approach Dirk Kröhan | cosee

    GmbH [email protected] | @coseeaner file:///home/kroehan/D esktop/download.svg
  2. Cloud Backend Engineer @ cosee Cloud Native Applications Microservices Spring

    Java SQL NoSQL Amazon Webservices Agile Performance Scalability Hibernate DDD Clean Code Software Architektur
  3. Neue Funktionalität, Änderungen, etc. Code wächst Deadlines Abhängigkeiten nehmen zu

    Strukturen + Grenzen verschwimmen Testbarkeit leidet Änderungen werden aufwändiger Transitive Fehler entstehen Komplexität wächst Neue Funktionalität, Änderungen, etc. ...
  4. The rules of software architecture... ... are independent of every

    other variable. ... are the rules of ordering and assembling the building blocks of programs. - Clean Architecture -
  5. • Coden ist so einfach wie nie zuvor • Coding

    for Kids • Etwas PHP / Ruby -> Milliarden-Dollar Unternehmen • "It works" Lösung sind oft schnell zu erreichen • Compiler + JVM brauchen keine Architektur
  6. • 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
  7. The goal of software architecture is to minimize the human

    resources required to build and maintain the required system. - Clean Architecture -
  8. Every software system provides two different values to the stakeholder:

    behavior and structure - Clean Architecture -
  9. Eine gute Architektur soll mir helfen ... ... ohne viel

    Aufwand zu verstehen, was ein Service tut. ... Änderungen einfach umzusetzen. ... mich auf das wesentliche zu fokussieren (Business-Logik). ... ungewollte Zugriffe zu vermeiden (UI -> DB). ... technische Entscheidung nicht voreilig treffen zu müssen.
  10. Ziel: • Independent of frameworks • Independent of UI •

    Independent of Database • Independent of any external agency • Testable
  11. 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 - Source: https://8thlight.com/blog/uncle-bob/2012/05/15/NODB.html
  12. Spring MVC + DTOs / Quartz DTO <-> Domain Objects

    Service-Classes + Domain Objects Domain + Gateway-Interfaces Database-Entities <-> Domain Objects JPA/Hibernate + Entities / REST-Template --------------------------------------------- ---------------------------------------------
  13. Takeaways • Fokus auf Usecases + Domain • Screaming Architecture

    • Änderungen einfacher möglich • Effektive und gezielte Tests • Datenbank und Frameworks bleiben ein Detail • UI -> DB Zugriffe nicht möglich (by design) • Mapping zwischen Ringen/Schichten kann aufwändig sein