Myślałem, że to wypracowałem, ale po przeczytaniu Continuous Delivery (doskonała książka) jestem trochę zdezorientowany. Mówią o posiadaniu serwerów dla:
- rozwój
- różne formy automatycznych testów
- test akceptacji użytkownika (UAT) - tj. siadanie z klientem i pokazywanie mu go oraz pozwalanie mu na badanie eksploracyjne. Testerzy wewnętrzni mogliby również użyć tego zestawu do testowania eksploracyjnego.
- inscenizacja
- produkcja.
Zawsze myślałem o inscenizacji jako o funkcji UAT, ale wydają się mieć inscenizację jako osobny poziom. Więc w tym schemacie jaką funkcję pełnią serwery pomostowe?
deployment
testing
release-management
Hamish Downer
źródło
źródło
Odpowiedzi:
Inscenizacja polegałaby na wdrożeniu pełnych systemów produktów, ale jeszcze ich nie stosowaniu. Gdy wejdą do użytku, będzie to „produkcja”. Powinieneś umieścić wszystko na miejscu, jak będzie używane, przetestować, a następnie przestawić przełącznik.
UAT często używa środowiska „testowego”, które znacznie różni się od sprzętu / oprogramowania / konfiguracji, która będzie używana w produkcji.
Na przykład tam, gdzie pracuję, klienci testują wszystko w środowisku VM działającym na naszych serwerach. Kiedy ich system zostanie uruchomiony, będzie działał na ich sprzęcie, w ich obiektach, prawdopodobnie integrując się z istniejącymi systemami; nie będzie miało to absolutnie nic wspólnego z naszymi serwerami lub środowiskiem testowym (oprócz tego, że kod i niektóre ustawienia zostały skopiowane stamtąd ...)
źródło
Pracuję w zespole zarządzania wydaniami w bardzo dużej firmie internetowej. Stosujemy zasadniczo proces opisany powyżej i celowo wybraliśmy ten proces. W naszej metodologii etapowanie służy jako mechanizm rozgałęziający dla końcowego poziomu testowania w produkcji.
Oczywiście chcesz przeprowadzić wszystkie testy przed rozpoczęciem produkcji, ale w dużym, złożonym środowisku z dużą liczbą użytkowników jest to bardzo trudny cel. W szczególności właściwie załadowanie oprogramowania testowego w ramach kontroli jakości jest praktycznie niemożliwe. Testowanie funkcjonalne jest o wiele łatwiejsze do zautomatyzowania niż testowanie obciążenia. Gdy masz tysiące użytkowników uderzających na twoje serwery, sprawy zawodzą w dziwny i trudny do przewidzenia sposób.
Oto co robimy:
W tym momencie rozgałęziamy się między inscenizacją a produkcją. Do wypuszczania używamy modelu pociągu, a nowy pociąg rozpoczyna się co kilka tygodni. Nawet ponumerowane pociągi jadą na serwery pomostowe (które są w produkcji). Pociągi o nieparzystych numerach nie.
Pomiędzy parzystymi pociągami programiści mają możliwość wypychania indywidualnych zmian na serwery pomostowe ( oczywiście po przetestowaniu tych zmian przez QA). Pozwala im to sprawdzić, czy ich oprogramowanie działa zgodnie z oczekiwaniami w rzeczywistym środowisku produkcyjnym. Jest to na ogół zarezerwowane dla komponentów, które są uważane za wyższe ryzyko, nie popychamy każdego małego elementu do inscenizacji.
Następnie wszyscy rozumieją, że kiedy rozpocznie się następny parzysty pociąg, usunie to, co jest na serwerach pomostowych i ustawi je z powrotem do linii bazowej pociągu. Deweloperzy albo upewniają się, że ich zmiany dotarły do pociągu, albo decydują, że nie są jeszcze gotowi do ogólnego użytku, w którym to przypadku zmiany zostaną po prostu usunięte na serwerach pomostowych.
Podsumowując, krótką odpowiedzią (przynajmniej dla nas) jest to, że niemożliwe jest całkowite przetestowanie złożonych systemów w kontroli jakości. Inscenizacja zapewnia bezpieczny sposób wykonywania ograniczonych testów produkcyjnych.
W powiązanej notatce oto moje slajdy z prezentacji, którą właśnie przedstawiłem na temat tego, jak działa nasz proces wydawania.
źródło
Najprostszym wyjaśnieniem etapowania jest testowanie procesu wdrażania i testowanie przy użyciu prawdziwego źródła danych. Niektóre systemy łączą etapy ze swoimi środowiskami testowymi, ale w przypadku systemów na dużą skalę proces wdrażania może być bardzo złożony lub mogą wymagać dodatkowych kroków testowych po połączeniu ze źródłem danych na żywo / produkcyjnym. W takim przypadku środowisko pomostowe umożliwia przetestowanie procesu wdrażania i sprawdzenie błędów w ostatniej chwili przy użyciu danych na żywo, a następnie po zweryfikowaniu poprawności działania środowiska scenicznego można szybko przełączyć na środowisko produkcyjne.
Przykładem może być Windows Azure, który wymaga 5-25 minut na wdrożenie nowej wersji, ale można wdrożyć w środowisku pomostowym, wykonać testy, a następnie natychmiast zamienić środowiska produkcyjne i pomostowe .
źródło
Właśnie natknąłem się na ten artykuł o środowiskach inscenizacyjnych, który mówi
Artykuł jest wart przeczytania w całości.
źródło