Deploy
Deploy (także deployment, po polsku: wdrożenie) to proces przeniesienia nowej wersji aplikacji, strony internetowej lub usługi ze środowiska deweloperskiego na serwer docelowy — najczęściej produkcyjny — gdzie zaczyna ona obsługiwać prawdziwych użytkowników. Deploy obejmuje nie tylko skopiowanie plików, ale zwykle także instalację zależności, migracje bazy danych, przebudowę cache i restart usług.
Jak przebiega deploy?
Nowoczesny deployment jest zautomatyzowany w ramach pipeline'u CI/CD. Typowe etapy to:
- Build — pobranie kodu z repozytorium, instalacja zależności, kompilacja frontendu, zbudowanie artefaktu (np. obrazu Dockera).
- Testy — automatyczne testy jednostkowe i integracyjne blokują wdrożenie wadliwej wersji.
- Wdrożenie — przeniesienie artefaktu na serwer: przez rsync, kontener, paczkę lub symlink do nowego katalogu release.
- Czynności powdrożeniowe — migracje bazy, czyszczenie cache, przeładowanie procesów (np. PHP-FPM), health-check.
Strategie wdrażania
- Rolling deploy — stopniowa podmiana instancji, bez przerwy w działaniu.
- Blue-green — dwa identyczne środowiska; ruch przełącza się na nowe dopiero po weryfikacji, a powrót do starego trwa sekundy.
- Canary — nowa wersja trafia najpierw do małego odsetka użytkowników.
- Releases + symlink — każde wdrożenie ląduje w osobnym katalogu, a symlink wskazuje aktywną wersję; rollback to zmiana dowiązania.
Zastosowanie w praktyce
Sposób wdrażania zależy od infrastruktury: na hostingu współdzielonym deploy bywa prostym wgraniem plików przez SFTP lub Git, natomiast na serwerze VPS czy w klastrze kontenerów stosuje się pełną automatyzację z rollbackiem i monitoringiem. Dobrą praktyką jest wdrażanie małych zmian często — mniejsza paczka zmian to łatwiejsza diagnoza, gdy coś pójdzie nie tak — oraz utrzymywanie środowiska staging, które wiernie odwzorowuje produkcję. Kluczowa zasada: każdy deploy musi być powtarzalny i odwracalny, a wersje oznaczone w systemie kontroli wersji.
Powiązane pojęcia
Najczęstsze pytania
Czym różni się deploy od release?
Deploy to techniczne umieszczenie nowej wersji kodu na serwerze. Release to udostępnienie funkcji użytkownikom — dzięki feature flagom kod może być wdrożony na produkcję, ale wyłączony. Rozdzielenie tych pojęć pozwala wdrażać częściej i bezpieczniej.
