Save 37% off PRO during our Black Friday Sale! »

Rolling Stones – vom Release überrollt

C59c6666e76977dde33948515fdb3a90?s=47 ElmarDott
October 07, 2021

Rolling Stones – vom Release überrollt

Jeder macht es, manche sogar mehrmals täglich. Aber nur wenige kennen die komplexen ineinander greifenden Mechanismen, die ein vollständiges Software Release ausmachen. Deshalb kommt es hin und wieder vor, das sich ein Paket in der automatisierten Verarbeitungskette querstellt. Mit ein wenig Theorie und einem typischen Beispiele aus dem Java Universum zeige ich, wie man ein wenig Druck aus dem Softwareentwicklungsprozess nehmen kann, um zu schlanken leicht automatisierten Prozessen gelangt.

C59c6666e76977dde33948515fdb3a90?s=128

ElmarDott

October 07, 2021
Tweet

Transcript

  1. Jc on 2021 G e rmany on l i n

    e © 2021 ElmarDott Rolling Stones – vom Release überrollt
  2. © 2021 Jc on 2021 : Ro l l i

    ng St on e s Con s u l t an t El ma r Do t t (M. Schulz) studierte an der HS Merseburg Diplominformatik und twittert regelmäßig über alle möglichen technischen Themen. Seine Schwerpunkte sind hauptsächlich Build und Konfiguration Management, Software Architekturen und Release Management. Seit über fünfzehn Jahren realisiert er in internationalen Projekten für namhafte Unternehmen umfangreiche Webapplikationen. Er ist freier Consultant / Trainer. Sein Wissen teilt er mit anderen Technikbegeisterten auf Konferenzen, wenn er nicht gerade wieder einmal an einem neuen Fachbeitrag schreibt. https://elmar-dott.com + Consultant + Writer + Speaker + Trainer +
  3. © 2021 Jc on 2021 : Ro l i ng

    St on e s Ag e nd a Begriffe & Bedeutungen DevOps und Release Management Semantic Versioning Sprints & Agilität DevOps Release & Deploy Strategien
  4. © 2021 Jc on 2021 : Ro l i ng

    St on e s Be g r i f f l i c h k e i t e n Release: (dt. : loslassen) bezeichnet also einen definierten Zustand eines Artefaktes, dessen Entwicklungszyklus abgeschlossen wurde, so dass es zur Verwendung freigegeben ist. Deliver: (dt. : Auslieferung) bezeichnet die Bereitstellung der Artefakte zur weiteren Verwendung, z. B. durch die Installation auf einem Repository Server. Deploy: (dt. : Einsatz) meint die Installation einer Software in die Zielumgebung, vornehmlich nach PRODUKTION.
  5. © 2021 Jc on 2021 : Ro l i ng

    St on e s Pr o z e s s k e t t e Release : package Deploy : install Deliver : storage
  6. © 2021 Jc on 2021 : Ro l i ng

    St on e s Au t oma t i s i e r u ng s s t u f e n
  7. © 2021 Jc on 2021 : Ro l i ng

    St on e s Se man t i c V e r s i on i ng Erhöhen der Versionsnummer [MAJOR . MINOR . PATCH]: 1. MAJOR – inkompatible API Aänderungen 2. MINOR – Hinzufügen neuer Funktionalität, die rückwärts kompatible ist. 3. PATCH – Fehlerkorrekturen, die rückwärts kompatibel sind Optional existieren Auszeichner (Labels), um Pre-Releases zu markieren.
  8. © 2021 Jc on 2021 : Ro l i ng

    St on e s My t h e n & M i s s v e r s tänd n i s s e • Versionierung ganzer Anwendungen kann individuell sein (vergl. Firefox) • SemVer zwingend für Module, Bibliotheken & Microservices (Integration) • Versionsnummern gehören immer unveränderlich in das Artefakt! • API Änderungen zusammen fassen und langfristig planen • Build Nummern haben in Versionsnummern nix verlohren
  9. © 2021 Jc on 2021 : Ro l i ng

    St on e s S i ng e l Po i n t o f Fa i l u r e Source: https://github.com/ElmarDott/TP-CORE src/main/resources/org/europa/together/configuration/version.properties 01: version=${project.version} src/main/java/org/europa/together/utils/Constraints.java 029: public static final String MODULE_VERSION = getVersion(); 099: private static String getVersion() { 100: String filePath 101: = "org/europa/together/configuration/version.properties"; 102: PropertyReader propertyReader = new PropertyFileReader(); 103: propertyReader.appendPropertiesFromClasspath(filePath); 104: return propertyReader.getPropertyAsString("version"); 105: }
  10. © 2021 Jc on 2021 : Ro l i ng

    St on e s Fa l s e Fr i e nd s Reproduzierbarkeit & Nachvollziehbarkeit Reproduzieren bedeutet ein bereits erzieltes Ergebnis unter gleichen Bedingungen belibig oft erneut und ohne Abweichungen zu erhalten. → Wiederholung Nachvollziehen heist den Weg wie ein Ergebnis erziehlt wurde vollständig zu erfassen, um diesen bei Bedarf anpassen zu können. → Verständnis
  11. © 2021 Jc on 2021 : Ro l i ng

    St on e s Fe h l e rk l a s s e n Fehlerklassen die eine Verwendung des Releases verhindern können: ➔ Einfache Fehler (GUI/ Layout/ Beschriftung) ➔ Mittlere Fehler (‚einfache‘ Logikfehler) ➔ Schwere Fehler (Abnahme verhindernd) Release Candidate → Production Candidate
  12. © 2021 Jc on 2021 : Ro l l i

    ng St on e s Sp r i n t v s. R e l e a s e 1 Iteration = 1 Sprint = n Weeks = Release SDL Planning / Conception Implementation Operation(s) Test 1 2 3 4
  13. © 2021 Jc on 2021 : Ro l i ng

    St on e s Pr o j e k t p l an D T D T D T K/T D T D T 01 02 03 04 05 06 07 08 09 Weeks Sprint 1 Sprint 2 Sprint 3 Sprint 4 Sprint 5 Sprint 6 1.1.0 1.2.0 1.3.0 1.4.0 Prod.Cand. 1.5.0 1.6.0 Version D = Develop / T= Test / K = Korrections
  14. © 2021 Jc on 2021 : Ro l i ng

    St on e s Te s t s t a g e s DEVELOP INTEGRATION ACCEPTANCE PRODUCTION Hourly Builds (Commit Stage) Permanent compile and Unit Tests. Line A: 1.1.0 Line A: 1.1.0 Line A: 1.1.0 Line A: 1.1.0 Nightly Build (Integration & Deploy Tests) The application is running. Preparing for Release External Quality Check (Retest) Released – BugFixes Live System Released – only critical BugFixes
  15. © 2021 Jc on 2021 : Ro l i ng

    St on e s Re l e a s e Ty p e s& D e p l o y St ra t e g i e n Blue/ Green Deployment: Redundantes Deployment mit Rollback Option. Canary Releases: stufenweises Roll-out A/B Tests: Beurteilung der Conversion (Nutzerakzeptanz) nach festgelegten Kriterien Feature Toggels: Ein & Ausschalten von Funktionalität.
  16. © 2021 Jc on 2021 : Ro l i ng

    St on e s Re f e r e n z e n [1] Marco Schulz, 2021, Continuous Integration mit Jenkins, Rheinwerk, ISBN: ISBN 978-3-8362-7834-8 https://www.rheinwerk-verlag.de/continuous-integration-mit- jenkins/ [2] https://www.youtube.com/watch?v=RVCLIP7vOzo [3] Sematic Versioning: https://semver.org [3] https://dzone.com/articles/version-number-anti-pattern [4] https://elmar-dott.com/articles/modern-times/ [5] https://elmar-dott.com/articles/automatisierungs moglichkeiten-im-software-konfigurations-management/
  17. © 2021 Jc on 2021 : Ro l l i

    ng St on e s Cr e d e n t i a l s --------------------------------------------------------- Homepage : https://elmar-dott.com GitHub : https://github.com/ElmarDott AnchorFM : https://anchor.fm/elmar-dott Twitter : https://twitter.com/ElmarDott Speaker Deck : https://speakerdeck.com/elmardott Lbry : https://lbry.tv/@elmar.dott:8 BitChute : https://www.bitchute.com/channel/3IyCzKdX8IpO/ --------------------------------------------------------- Danke / tank you / Gracias
  18. None