
Deployment to proces wdrażania oprogramowania, aplikacji, usług lub zmian konfiguracyjnych do środowiska, w którym mają być uruchomione i dostępne dla użytkowników albo innych systemów. W języku polskim termin ten tłumaczy się najczęściej jako wdrożenie, publikacja lub instalacja wersji aplikacji. Deployment jest jednym z etapów cyklu wytwarzania oprogramowania i łączy przygotowany kod z działającym środowiskiem docelowym.
Etapy procesu deploymentu, środowiska i automatyzacja CI/CD
Proces deploymentu może obejmować skopiowanie plików, instalację pakietów, uruchomienie kontenerów, aktualizację bazy danych, ustawienie zmiennych środowiskowych oraz konfigurację serwera. W prostym przypadku sprowadza się do umieszczenia gotowej aplikacji na serwerze, lecz przy większych systemach składa się z wielu czynności. Celem jest uruchomienie określonej wersji oprogramowania w sposób powtarzalny i zgodny z wymaganiami środowiska.
Oprogramowanie zwykle przechodzi przez kilka środowisk przed udostępnieniem użytkownikom. Development służy do tworzenia i testowania kodu, staging odwzorowuje warunki zbliżone do docelowych, a production oznacza środowisko produkcyjne, z którego korzystają odbiorcy usługi. Deployment może dotyczyć każdego z tych etapów. Wdrożenie na produkcję jest często ostatnim krokiem przed udostępnieniem nowej wersji aplikacji.
Współczesny deployment często jest automatyzowany za pomocą potoków CI/CD, czyli Continuous Integration oraz Continuous Delivery lub Continuous Deployment. Po zatwierdzeniu zmian system może zbudować aplikację, uruchomić testy, przygotować pakiet wdrożeniowy i przekazać go do wybranego środowiska. Automatyzacja ogranicza liczbę ręcznych czynności i pozwala wykonywać kolejne wdrożenia według tego samego scenariusza. Do tego celu wykorzystuje się narzędzia współpracujące z serwerami, chmurą i kontenerami.
Deployment a release oraz najpopularniejsze strategie wdrażania
Deployment nie jest dokładnie tym samym co release. Deployment oznacza techniczne umieszczenie i uruchomienie danej wersji w środowisku, natomiast release odnosi się do udostępnienia funkcji użytkownikom. Oba zdarzenia mogą nastąpić jednocześnie, ale nie muszą. Nowa wersja może zostać wdrożona wcześniej, a jej funkcje aktywowane później za pomocą mechanizmu feature flag.
Istnieje kilka strategii wdrażania aplikacji. Rolling deployment stopniowo zastępuje stare instancje nowymi, blue-green deployment wykorzystuje dwa równoległe środowiska, a canary deployment udostępnia nową wersję najpierw niewielkiej części użytkowników. Wybór metody zależy od architektury systemu, wymagań dotyczących dostępności i sposobu wprowadzania aktualizacji. Ważnym elementem procesu może być rollback, czyli powrót do wcześniejszej wersji po wykryciu problemu.
Pojęcie deployment występuje także przy aplikacjach mobilnych, stronach internetowych, modelach AI, usługach chmurowych i infrastrukturze IT. W zależności od kontekstu wdrażany może być kod, kontener, obraz systemu, konfiguracja albo cały zestaw zasobów. Określenia software deployment, application deployment, wdrożenie aplikacji i wdrożenie oprogramowania odnoszą się do tego samego ogólnego procesu przeniesienia przygotowanego rozwiązania do środowiska, w którym ma działać.