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

Feature Flags und CI/CD mit GitLab

Feature Flags und CI/CD mit GitLab

GitLab unterstützt Entwickler nicht nur bei der Versionierung ihrer Projekte, sondern u.a. auch beim Projekt-Management sowie beim Deployment der einzelnen Anwendungen. Dieser Vortrag zeigt auf, wie CI/CD mit GitLab durchgeführt werden kann. Insbesondere wird veranschaulicht, wie über GitLab einzelne Features ein- und ausgeschaltet werden können, um verschiedene Implementierungen der Anwendung im produktiven Umfeld einführen und testen zu können.

Sujeevan Vijayakumaran

August 22, 2020
Tweet

More Decks by Sujeevan Vijayakumaran

Other Decks in Technology

Transcript

  1. 5 Commit Code, GitLab erzeugt die Pipeline CREATE MONITOR VERIFY

    PACKAGE RELEASE CONFIGURE Merge Build Code Quality Test SECURE Container Registry Review App Deploy SAST Dependency Container License DAST Infra Config Scale Response System Custom Perf Testing + + GitLab Auto DevOps Demo Video
  2. 6 Auto DevOps... • Erkennt Programmiersprache • Baut, Testet und

    misst automatisch die Code Qualität • Scans für Security & Licensing • Paketierung • Monitoring • Deployment der Anwendung https://docs.gitlab.com/ee/topics/autodevops/
  3. 9 Beispiel: Online Shop Vorbedingung • Online Shop • Marketing-Team

    startet große Kampagne um 15 Uhr die bis 24 Uhr geht! • Startseite mit großer Werbung muss angepasst werden Herausforderungen • Anpassungen müssen pünktlich fertig sein • Pünktliches Go-Live um 15 Uhr enorm wichtig
  4. 10 Beispiel: Online Shop Vor dem Go-Live • 12 Uhr:

    Anpassungen fertig Probleme • 1. Fehler: Deployment schlägt fehl! • 2. Fehler: Falsche Verlinkung auf Angebotsseite Resultat • Direkte finanzielle Einbußen • Hoher Puls
  5. 11 Beispiel: Online Shop Zeit für Korrekturen! 1. Erneute –

    zügige! – Änderung im Source Code nötig 2. Artefakt bauen 3. Artefakt deployen
  6. 12 Beispiel: Online Shop Viele Nachteile! • Stressfaktor → häufig

    mehr Fehler • Geringere Qualität • Jede Minute zählt Nachbedingungen • 24 Uhr: Neues Deployment!
  7. 15 Canary Deployments Graduelles Deployment • 10% der Nutzer ◦

    Monitoring! • 25% der Nutzerinnen ◦ Monitoring! • 50% der Nutzer ◦ Monitoring! • 100% der Nutzerinnen ◦ Monitoring!
  8. 17 Feature Flags Implementierungen können … … nach Bedarf an-

    und ausgeschaltet werden … für einen Bruchteil der Nutzerinnen an- und ausgeschaltet werden … das Testen neuer Funktionen im Produktivbetrieb vereinfachen
  9. 18 Feature Flags an- und ausschalten Möglichkeiten: • Statisch: Boole’sche

    Variable direkt im Quellcode • Dynamisch: Toggle Router ◦ Aus Konfigurationsdatei ◦ Aus Datenbank ◦ Aus Admin-UI ◦ Aus Feature Toggle Service
  10. 19 Arten von Feature Flags Typen von Flags: • Release

    Flag • Experiment Flag • Ops Flag • Permission Flag Kategorien von Flags: • statische und dynamische • langlebig und flüchtig
  11. 20 Release Flag Beispiel: Integration einer nicht-fertigen externen API •

    Mittelfristige Integration • Häufige Integration kleiner Änderungen • Änderungen gehen nur per Deployment live • Kurz- bis mittelfristige Implementierung
  12. 21 Experiment Flag Beispiel: Durchführung von A/B Tests • Welcher

    der zwei Buttons spricht die Personen besser an? • Metric-Driven-Development • Mittelfristige Implementierung
  13. 22 Ops Flag Beispiel: Abschalten von Funktionen mit hoher Last

    • Deaktivierung nicht systemkritischer Funktionen • Testen neuer Funktionen mit hoher Last • Langfristige Implementierung
  14. 23 Permissions Flag Beispiel: Features für einzelne Person freischalten •

    Funktioniert der Bugfix für die einzelne Person? • Features nur für bestimmte Personengruppen freischalten?
  15. 24 Vorteile Feature Flags! • Vertrauen in die eigene Software!

    • Schnellere Iterationen • Potenziell weniger Fehler
  16. 26 Beispiel: Online Shop Vorbedingung • Online Shop • Marketing-Team

    startet große Kampagne um 15 Uhr für bis 24 Uhr! • Startseite mit großer Werbung muss angepasst werden Herausforderungen • Anpassungen müssen pünktlich fertig sein • Pünktliches Go-Live um 15 Uhr enorm wichtig
  17. 27 Beispiel: Online Shop Vor dem Go-Live • 12 Uhr:

    Anpassungen fertig Feature Flag konfigurieren • Feature Flag anlegen in GitLab • Feature Flag für ausgewählte Nutzer aktivieren
  18. 28 Beispiel: Online Shop Probleme • Fehler beim Deployment •

    Fehlgeschlagene Tests • Fehler in der Software Resultat • Zeit für Iterationen
  19. 32 Feature Flags mit GitLab Konfiguration von Feature Flags: •

    Environment • Status (an/aus) • Rollout Strategy ◦ Alle Nutzer ◦ Prozentualer Rollout (für eingeloggte Nutzer) ◦ Für ausgewählte Nutzer
  20. 33 Feature Flags mit GitLab GitLab nutzt Unleash Client-Libraries: ◦

    Java ◦ Node.js ◦ Go ◦ Ruby ◦ … und weitere
  21. 34 Einbindung in die Anwendung - Teil 1 Einbindung der

    Client-Library in der pom.xml: <dependency> <groupId>no.finn.unleash</ groupId> <artifactId>unleash-client-java</ artifactId> <version>Latest version here</ version> </dependency>
  22. 35 Einbindung in die Anwendung - Teil 2 Konfiguration im

    Quellcode: UnleashConfig config = UnleashConfig .builder() .appName( "java-test-app" ) .instanceId( "QisXsbE7CezjWSBzsVy8" ) .unleashAPI( "https://gitlab.com/api/v4/feature_flags/unleash/12345678" ) .build(); Unleash unleash = new DefaultUnleash(config);
  23. 37 Vorteil GitLab? Warum GitLab für die Implementierung von Feature

    Flags verwenden? • Alles in einem Tool • Keine Notwendigkeit eigenes Feature Flag System zu bauen/hosten • Geringerer Overhead beim Hosting
  24. 39 Mehr Informationen • Feature Flags Dokumentation: https://docs.gitlab.com/ee/user/project/operations/feature_flags.html • Wie

    GitLab selbst Feature Flags nutzt: https://docs.gitlab.com/ee/development/feature_flags/ • Learn more about Feature Flags: The next step in Progressive Delivery https://about.gitlab.com/blog/2019/08/06/feature-flags-continuous-delivery/ • Martin Fowler: Feature Toggles https://www.martinfowler.com/articles/feature-toggles.html