Junior
Czym jest ciągłe wdrażanie (continuous deployment)?
sobes.tech AI
Odpowiedź od AI
To jest podejście w rozwoju oprogramowania, w którym każda zmiana, przechodząca przez zautomatyzowany pipeline testów i zatwierdzenia, jest automatycznie wdrażana na środowisko produkcyjne. Główna różnica od Continuous Delivery polega na braku ręcznego kroku zatwierdzenia przed wdrożeniem na produkcję.
Główne etapy:
- Commit: Programista dokonuje commitu zmian w systemie kontroli wersji (np. Git).
- Build: Automatyczne zbudowanie artefaktu (obrazu, pakietu itp.).
- Test: Uruchomienie automatycznych testów (testy jednostkowe, integracyjne, funkcjonalne, obciążeniowe itp.).
- Deploy: Jeśli wszystkie testy przejdą pomyślnie, artefakt jest automatycznie wdrażany na środowisko robocze.
Kluczowe składniki:
- Wysoki poziom automatyzacji.
- Niezawodna infrastruktura.
- Wykorzystanie praktyk Continuous Integration (CI) i Continuous Delivery (CD).
- Monitoring i logowanie w celu szybkiego wykrywania problemów.
- Możliwość szybkiego wycofania.
# Przykład części pipeline w GitLab CI/CD
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "Budowanie aplikacji..."
- # Komendy build tutaj
test_job:
stage: test
script:
- echo "Uruchamianie testów..."
- # Komendy testowe tutaj
only:
- main # Wywołuj tylko dla głównej gałęzi
deploy_job:
stage: deploy
script:
- echo "Wdrażanie na produkcję..."
- # Komendy wdrożeniowe tutaj
when: on_success # Wdrażaj tylko jeśli poprzednie etapy się powiodły
only:
- main
| Zalety | Wady |
|---|---|
| Szybkie wydanie nowych funkcji/napraw | Wysokie wymagania dotyczące jakości testów |
| Skrócenie TTM (Time To Market) | Potencjalne ryzyko wdrożenia niepożądanych zmian |
| Zmniejszenie ryzyka przy każdym wdrożeniu | Złożoność wdrożenia bez dojrzałych procesów CI/CD |
| Szybka informacja zwrotna od użytkowników | Konieczność niezawodnego monitorowania i możliwości wycofania |