Slide 1

Slide 1 text

qaware.de Sustainability. Das Qualitätsmerkmal grüner Systeme, nachhaltiger Software-Architekturen und deren Entwicklung. Mario-Leander Reimer [email protected] @LeanderReimer

Slide 2

Slide 2 text

2 Mario-Leander Reimer Managing Director | CTO @LeanderReimer #cloudnativenerd #qaware #gernperDude

Slide 3

Slide 3 text

3 Mario-Leander Reimer Managing Director | CTO @LeanderReimer #cloudnativenerd #qaware #gernperDude

Slide 4

Slide 4 text

QAware | 4

Slide 5

Slide 5 text

CO2-Emissionen weltweit QAware | 5 Luftfahrt: 2% Gebäude: 18% Viehzucht: 6% Beton: 2% IT: 4%

Slide 6

Slide 6 text

6 IT Nachhaltiger Einfluss auf andere Branchen durch effiziente IT Lösungen Verantwortung zeigen für unseren eigenen Verbrauch von Ressourcen

Slide 7

Slide 7 text

7 QAware

Slide 8

Slide 8 text

8 QAware Notebook Kühlschrank Nutzung Herstellung Energieverbrauch 75% 25% 96%

Slide 9

Slide 9 text

9 QAware Nachhaltige Software Konzeption, Implementierung und Betrieb von IT Lösungen mit effizientem Energieverbrauch und minimaler Belastung der Umwelt https://www.greenmanifesto.de/ https://www.meetup.com/de-DE/green-software-development-manifesto/

Slide 10

Slide 10 text

Clean is Green!

Slide 11

Slide 11 text

Nachhaltigkeit kann und muss auf allen Ebenen unserer Software- Architektur berücksichtigt werden. QAware | 11

Slide 12

Slide 12 text

Was sind Gründe für die Erosion von Architekturen und Systemen? ⓘ Start presenting to display the poll results on this slide.

Slide 13

Slide 13 text

13 QAware Features Features Release Features Release Features Release Features Release Release Code wächst Abhängigkeiten nehmen zu Strukturen & Boundaries erodieren Testbarkeit leidet Änderungen werden aufwändiger Transitive Fehler entstehen Deadlines Komplexität steigt

Slide 14

Slide 14 text

14 QAware

Slide 15

Slide 15 text

QAware | 15 Architecture in Agile Projects

Slide 16

Slide 16 text

16 QAware https://arc42.org/download High-Level Structure of the arc42 Documentation Template

Slide 17

Slide 17 text

17 QAware Architecture Diagrams

Slide 18

Slide 18 text

4 Maps of your Code: Context. Container. Component. Code. 18 QAware

Slide 19

Slide 19 text

QAware | 19 Architectural Decisions

Slide 20

Slide 20 text

QAware | 20 https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions

Slide 21

Slide 21 text

Architecture Decision Records (ADR) QAware | 21 https://www.thoughtworks.com/radar/techniques/lightweight-architecture-decision-records

Slide 22

Slide 22 text

The Anatomy of an Architecture Decision Records (ADR) QAware | 22 # Title ## Context ## Decision ## Status ## Consequences ■ Short text file; 1-2 pages long, one file per decision ■ Simple format like Markdown, Asciidoc, TXT, etc. Short noun phrase and number, e.g. ADR 5: AWS as preferred cloud provider Proposed, Accepted, Deprecated, Superseded Describes the forces at play: technology, political, project local. Value neutral, simple facts. Response to the forces with justification. Stated in full sentences, with active voice. "We will …" Describe context, after applying the decision. All consequences should be listed here, not just the "positive" ones.

Slide 23

Slide 23 text

Menschen machen Fehler. Von der Clean Architecture zum Big Ball of Mud geht’s schneller als man glaubt! QAware | 23

Slide 24

Slide 24 text

ArchUnit ermöglicht die einfache automatisierte Prüfung einer Software-Architektur in Form von Unit Tests. ■ https://www.archunit.org/ ■ Freie (Apache v2), einfache und erweiterbare Bibliothek zur Prüfung der Architektur von Java Code. Gibt es auch für .NET/C#. ■ Alle gängigen Build Tools und Unit Test Frameworks werden unterstützt ■ Das ArchUnit Library API bietet eine Sammlung an vordefinierten Regeln für wiederkehrende Architektur-Prüfungen – Architectures: Regeln zur Überprüfung von Layered und Onion Architectures – Slices: Erkennung von “Cycles” auf unterschiedlichen Ebenen – General: Sammlung von Regeln für Good Coding Practices (z.B: Logging, Exceptions, …) – PlantUML: Regeln zum Abgleich der Codebase mit einem PlantUML Modell – Freezing Arch Rules: Erlaubt die Definition einer Baseline für Violations, besonders nützlich um Technische Schulden in Altprojekten zu managen QAware | 24

Slide 25

Slide 25 text

Nur wenige Zeilen Code validieren unsere Clean Architecture kontinuierlich und wiederholbar bei jedem Build. QAware | 25 @AnalyzeClasses(packages = {"de.qaware.archunit.example.onion"}) public class OnionArchitectureFitnessTest { @ArchTest static final ArchRule onion_architecture_is_respected = onionArchitecture() .domainModels("..domain.model..") .domainServices("..domain.service..") .applicationServices("..application..") .adapter("cli", "..adapter.cli..") .adapter("persistence", "..adapter.persistence..") .adapter("rest", "..adapter.rest.."); }

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

Greenframe ■ Docker-basierte Messung von CPU, Netzwerk-E/A, Speicher, Festplattennutzung und Bildschirmen ■ Berechnung des Energie- verbrauchs anhand einer konstanten Formel ■ kann per CLI in die CI Pipeline integriert werden für kontinuierliche Messungen 27 QAware https://greenframe.io/

Slide 28

Slide 28 text

Greenframe ■ Docker-basierte Messung von CPU, Netzwerk-E/A, Speicher, Festplattennutzung und Bildschirmen ■ Berechnung des Energie- verbrauchs anhand einer konstanten Formel ■ kann per CLI in die CI Pipeline integriert werden für kontinuierliche Messungen 28 QAware https://greenframe.io/

Slide 29

Slide 29 text

Green Metrics Tool ■ Messung von CPU- und Memory-Verbrauch auf genau bekannter Hardware ■ Berechnung des Energieverbrauchs aufgrund der bekannten Hardware-Eigenschaften 29 QAware https://www.green-coding.io/de/projects/green-metrics-tool/

Slide 30

Slide 30 text

Green Metrics Tool ■ Messung von CPU- und Memory-Verbrauch auf genau bekannter Hardware ■ Berechnung des Energieverbrauchs aufgrund der bekannten Hardware-Eigenschaften 30 QAware https://www.green-coding.io/de/projects/green-metrics-tool/

Slide 31

Slide 31 text

Kepler ■ Messung von CPU- Verbrauch mittels eBPF ■ Messung weiterer Größen über Linux-Kernel- Schnittstellen ■ Berechnung des Energie- verbrauchs anhand einer konstanten Formel oder mittels Machine-Learning 31 QAware https://sustainable-computing.io/design/architecture/

Slide 32

Slide 32 text

Kepler ■ Messung von CPU- Verbrauch mittels eBPF ■ Messung weiterer Größen über Linux-Kernel- Schnittstellen ■ Berechnung des Energie- verbrauchs anhand einer konstanten Formel oder mittels Machine-Learning 32 QAware https://sustainable-computing.io/design/architecture/

Slide 33

Slide 33 text

Sustainability Engineering zur Optimierung des CO2 Footprint der Infrastruktur und Workloads 33 QAware Monitoring Wie hoch ist der CO2 Footprint der Ressourcen? Messen, messen, messen. Elasticity Überdimensionierte oder niedrige Auslastung der Ressourcen? Infrastruktur und Workloads sollten proportional zum Bedarf sein. Architecture Wo läuft das System? Auf welcher Hardware? Sustainability beim Aufbau der Infrastruktur berücksichtigen. Waste Abschalten oder Abbau der Ressourcen. Nicht benötigte oder vergessene Umgebungen oder Workloads?

Slide 34

Slide 34 text

Team Topologies (und Platform Engineering) als Enabler für Nachhaltige Softwareentwicklung QAware | 34 https://martinfowler.com/bliki/TeamTopologies.html [email protected]

Slide 35

Slide 35 text

Beyond Clean Architecture. Persönliche Leseliste für eine nachhaltig saubere Architektur. 35 QAware

Slide 36

Slide 36 text

qaware.de QAware GmbH Aschauer Straße 32 81549 München Tel. +49 89 232315-0 [email protected] twitter.com/qaware linkedin.com/company/qaware-gmbh xing.com/companies/qawaregmbh slideshare.net/qaware github.com/qaware Meine Kontaktdaten ...