Jakie są sposoby oddzielenia wdrożenia od wydania?

13

Jedną z metod ciągłego wdrażania jest oddzielenie wdrożenia od wydania, tj. Wdrożenie aktualizacji bez natychmiastowej aktywacji zmian.

Wiem, że można do tego używać , ale zastanawiam się, czy istnieją inne techniki dla „braku funkcji”.

Na przykład, czy zbudowałbyś przełącznik funkcji dla poprawki błędu? Prawdopodobnie nie i można argumentować, że poprawki powinny zostać wdrożone jak najszybciej, ponieważ może być tylko lepiej. A po wydaniu poprawki na pewno nie chcę już jej wyłączać. Ale czy tak jest w tym przypadku? Może to być ryzykowna zmiana, którą chcesz uwolnić w kontrolowany sposób. A jeśli nie niespodziewane skutki uboczne, to dobrze, aby móc rozwinąć go z powrotem. Więc flagi funkcji dla każdej zmiany?

A co ze zmianami wizualnymi? Na przykład, czy możesz zaimplementować coś w stylu flagi funkcji w CSS? Czy to w ogóle ma sens?

Fabian Schmengler
źródło
Pete Hodgson napisał obszernie o różnych kategoriach przełączników funkcji, w tym o poprawkach błędów i innych sytuacjach, w których są one odpowiednie. martinfowler.com/articles/feature-toggles.html
Evgeny

Odpowiedzi:

7

W przypadku oprogramowania w kategorii aplikacji internetowych, w zależności od dostawcy infra / hosta, takie oddzielenie może być możliwe do przełączania ruchu przychodzącego (lub dzielenia go) na różne wdrożone wersje SW, praktycznie obejmując dowolne ze wspomnianych zmian: poprawki błędów, efekty wizualne itp.

Takie wsparcie zazwyczaj nie wymaga przełączania funkcji. I może mieć zastosowanie niezależnie od tego, czy aplikacja jest monolityczna lub podzielona na mikrousługi.

Na przykład oferta Google App Engine Paas obsługuje podział ruchu i migrację.

Od podziału ruchu :

Można użyć podziału ruchu, aby określić procentowy rozkład ruchu w dwóch lub więcej wersjach usługi. Podział ruchu pozwala przeprowadzać testy A / B między wersjami i zapewnia kontrolę nad tempem podczas wdrażania funkcji.

Z migracji ruchu :

Migracja ruchu przełącza routing żądań między wersjami w ramach usługi aplikacji, przenosząc ruch z jednej lub więcej wersji do jednej nowej wersji.

Dan Cornilescu
źródło
5

Podczas gdy w przypadku monolitów możesz być ograniczony do przełączników, w architekturach mikrousług można podzielić każdą pulę wdrożeniową węzłów zapewniających usługę (np. Pods). Następnie aktywujesz wdrażanie nowo zmienionego produktu w podzbiorze puli i dokładnie go monitorujesz; możesz nawet wybrać, jaka ilość puli ma zostać wdrożona, aby np. aktywować zmianę dla 15% ruchu. W literaturze można znaleźć funkcję o nazwie „aktualizacja ciągła”.

ᴳᵁᴵᴰᴼ
źródło