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

Rolling Stones – vom Release überrollt

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.

--------------------------------------------------------------------------------------------------
Homepage : https://elmar-dott.com
AnchorFM : https://anchor.fm/elmar-dott
Twitter - https://twitter.com/ElmarDott
GitHub - https://github.com/ElmarDott
Lbry - https://lbry.tv/@elmar.dott:8
BitChute - https://www.bitchute.com/channel/3IyCzKdX8IpO/
--------------------------------------------------------------------------------------------------

ElmarDott

October 07, 2021
Tweet

More Decks by ElmarDott

Other Decks in Programming

Transcript

  1. Jc
    on 2021
    G
    e
    rmany
    on
    l
    i
    n
    e
    © 2021 ElmarDott
    Rolling Stones –
    vom Release überrollt

    View Slide

  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 +

    View Slide

  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

    View Slide

  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.

    View Slide

  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

    View Slide

  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

    View Slide

  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.

    View Slide

  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

    View Slide

  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: }

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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.

    View Slide

  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/

    View Slide

  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

    View Slide

  18. View Slide