<img height="1" width="1" style="display: none;" src="https://www.facebook.com/tr?id=990894967609194&ev=PageView&noscript=1" alt="" />
devBites
~0h:57m

Feature Flags - potężna technika Continuous Delivery

junior / midcontinuous deliveryfeature togglesfeature switchesrelease

Kto by się bał releasu w piąteczek, jeśli mógłby wyłączyć bez konsekwencji nową funkcjonalność w ułamku sekundy? Kto by się bał pracować tylko z "masterkiem", jakby commitował do niego martwy kod? No właśnie, NIKT! I to czyni z Feature Flags tak potężną technikę w ramach Continuous Delivery.

Rozłączamy wdrożenia aplikacji od wydania funkcjonalności użytkownikom, a ponadto w pełni kontrolujemy sam proces wydawania. Przy takim podejściu wygrywają zarówno developerzy jak i biznes.

Developerzy przede wszystkim zyskują poczucie bezpieczeństwa, bo jak na produkcji coś dzieje się źle z nową funkcjonalnością, to można ją po prostu wyłączyć i naprawić! Albo wrócić do problemu w poniedziałek ze świeżym umysłem. Ponadto praca nad Feature Flagami, może uczyć pewnej higieny pracy, która prowadzi, do powstawania kodu otwartego na rozszerzanie, a zamkniętego na modyfikacje (skąd my to znamy? 😉).

Biznes z kolei, dodatkowo otrzymuje narzędzie, dzięki któremu może eksperymentować, przez na przykład włączanie funkcjonalności tylko części użytkowników. Albo powrócić do wersji poprzedniej, jeśli lepiej konwertowała.

Oczywiście są też pułapki, w które można wpaść przy implementacji tej techniki, jak ta, że IFy zaczną bezkarnie błąkać się po kodzie i zaczną wprowadzać niepotrzebną złożoność. Dlatego też trzeba wiedzieć, jak przygotować się do wprowadzenie Feature Flagi i jakich technik użyć, żeby tego nieszczęsnego IFa wsadzić dokładnie tam, gdzie jego miejsce.

  • Tomasz Stolarczyk

Czego nauczysz się w tym kursie

  • Co zyskujesz rozdzielając wdrażanie aplikacji od wydawania funkcjonalności
  • Jak przygotować sobie miejsce pod wprowadzanie nowej funkcjonalności
  • "Branchowania" na poziomie kodu, a nie repozytorium
  • Abstrakcji/wzorców, które pozwolą zapobiec eksplozji IFów w kodzie
  • Sposobów na stopniowe, bezpieczne wprowadzanie nowej funkcjonalności
  • Gdzie trzymać konfigurację feature flag
  • Z jakimi rodzajami feature flag możesz się spotkać
  • Na jakie problemy możesz się natknąć w pracy z feature flags oraz jak starać się ich uniknąć

Wymagania

  • Dobra znajomość dowolnego obiektowego języka programowania (Java/Ruby/C#/PHP lub inny)
  • Podstawowa wiedza z zakresu Continuous Delivery i Continuous Integration
  • Przykłady w kursie są w języku Java, ale znajomość dowolnego innego języka wystarczy

Agenda

  • 1Wdrożenie, a wydanie

  • 2Flaga jaka jest każdy widzi

  • 3Czynności przed wprowadzenia feature flagi

  • 4Branch by abstraction

  • 5Abstrakcja na decyzje

  • 6Wzorce projektowe w służbie feature flag

  • 7Ciasteczka i nagłówki HTTP

  • 8Trik z payloadem

  • 9Endpointy i kolejki

  • 10Równoległe wykonanie ze sprawdzeniem

  • 11Feature flagi, a zmiany w schemacie bazy danych

  • 12Testowanie

  • 13Garść wskazówek

  • 14Konfiguracja w 4 smakach

  • 15Kategorie feature flag i ich żywotność

  • 16Wyzwania