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

Sustainability. Das Qualitätsmerkmal grüner Systeme, nachhaltiger Software-Architekturen und deren Entwicklung

Sustainability. Das Qualitätsmerkmal grüner Systeme, nachhaltiger Software-Architekturen und deren Entwicklung

In den vergangenen Jahren galt in der IT die Devise: viel hilft viel! Immer leistungsfähigere Hardware, Systeme mit stetig wachsendem Ressourcen-Bedarf, opulenter Neubau statt schlichter Modernisierung. Das Resultat ist ein CO2-Fußabdruck der dem von Luftfahrtindustrie und Beton zusammen entspricht. Mit steigender Digitalisierung wird sich diese Entwicklung fortsetzen.

Aber nur, wenn wir nichts dagegen tun. Also packen wir es an! In diesem Vortrag geben wir einfache Denkanstöße und zeigen Ansätze und Technologien, die dabei helfen können, digitale Produkte nachhaltig zu entwickeln. Dabei gehen wir auf den kompletten Software Delivery Lifecycle (SDL) ein: vom sparsamen Design, über die leichtgewichtige Implementierung bis hin zum effizientem Betrieb.

M.-Leander Reimer

March 19, 2024
Tweet

More Decks by M.-Leander Reimer

Other Decks in Programming

Transcript

  1. 6 IT Nachhaltiger Einfluss auf andere Branchen durch effiziente IT

    Lösungen Verantwortung zeigen für unseren eigenen Verbrauch von Ressourcen
  2. 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/
  3. Was sind Gründe für die Erosion von Architekturen und Systemen?

    ⓘ Start presenting to display the poll results on this slide.
  4. 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
  5. 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.
  6. Menschen machen Fehler. Von der Clean Architecture zum Big Ball

    of Mud geht’s schneller als man glaubt! QAware | 23
  7. 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
  8. 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.."); }
  9. 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/
  10. 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/
  11. 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/
  12. 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/
  13. 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/
  14. 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/
  15. 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?
  16. 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 ...