AWS CodeDeploy
AWS CodeDeploy
Automatyzuj wdrozenia aplikacji na EC2, Lambda i ECS. Strategie blue/green, canary i rolling z automatycznym rollbackiem w razie problemów.
AWS CodeDeploy to w pelni zarzadzany serwis do automatyzacji wdrozen aplikacji na rózne platformy obliczeniowe: instancje EC2, funkcje Lambda, kontenery ECS, a nawet serwery on-premises. Zamiast recznego kopiowania plików i restartowania serwisów, CodeDeploy robi to za Ciebie - bezpiecznie i powtarzalnie.
Kluczowa zaleta CodeDeploy to strategie wdrozen: in-place (aktualizacja w miejscu), blue/green (dwie wersje równolegle), canary (stopniowe przekierowywanie ruchu) i linear (liniowy wzrost ruchu). Kazda strategia pozwala zminimalizowac ryzyko i automatycznie wycofac wdrozenie (rollback) w razie problemów.
CodeDeploy obsluguje nie tylko chmure AWS, ale takze serwery on-premises. Mozesz uzywac tego samego narzedzia i tych samych strategii wdrozen zarowno dla instancji EC2, jak i fizycznych serwerów w Twoim data center. Wystarczy zainstalowac CodeDeploy Agent na serwerze i zarejestrowac go jako on-premises instance.
Zawsze konfiguruj automatyczny rollback z alarmami CloudWatch. Ustaw alarm na metryki takie jak 5xx errors, latency czy CPU, a CodeDeploy automatycznie wycofa wdrozenie, jesli cos pójdzie nie tak. Dla blue/green na EC2 ustaw czas retencji starej floty na minimum 1 godzine - da Ci to czas na weryfikacje przed usunieciem starych instancji.
AWS CodeDeploy automatyzuje wdrozenia aplikacji na EC2, ECS, Lambda i serwery on-premises. Ponizej opisujemy pelny cykl - od konfiguracji aplikacji po strategie deploymentu i automatyczny rollback.
Tworzenie aplikacji CodeDeploy
Application w CodeDeploy to logiczny kontener grupujacy deployment groups i revisions. Wybierasz compute platform: EC2/On-Premises (instancje z CodeDeploy Agent), Amazon ECS (kontenery z task definitions) lub AWS Lambda (funkcje z wersjami). Nazwa aplikacji musi byc unikalna w regionie. Jedna aplikacja moze miec wiele deployment groups - np. staging i production.
Konfiguracja Deployment Group
Deployment Group definiuje: docelowe instancje (po tagach EC2 lub ASG name), service role (IAM), deployment configuration, load balancer settings, alarm configuration i auto rollback rules. Dla EC2 mozesz targetowac po tagach (np. Environment=Production) lub Auto Scaling Groups. Dla ECS wskazujesz ECS Service i ALB/NLB Target Groups. Deployment Group to kluczowy element - oddziela konfiguracje srodowisk.
Plik AppSpec - definicja wdrozenia
AppSpec (appspec.yml lub appspec.json) definiuje co i jak wdrozyc. Dla EC2: sekcja files (jakie pliki skopiowac i gdzie), permissions (uprawnienia plikow), hooks (skrypty do uruchomienia w kazdej fazie). Dla ECS: task definition, container name, container port. Dla Lambda: function name, current version, target version. AppSpec jest dostarczany razem z rewizja (kodem) w S3 lub GitHub.
Deployment Configuration - strategie wdrazania
In-place deployment (EC2): OneAtATime (bezpieczny, wolny), HalfAtATime (kompromis), AllAtOnce (szybki, ryzykowny). Blue/Green deployment (EC2/ECS): tworzy nowe instancje, testuje, przelaczy ruch, terminuje stare. Dla ECS: Canary (10% ruchu, czekaj, 100%), Linear (np. 10% co 10 minut), AllAtOnce. Dla Lambda: Canary10Percent5Minutes, Linear10PercentEvery1Minute lub AllAtOnce. Custom configurations pozwalaja zdefiniowac wlasne progi.
Traffic Shifting i testowanie
W blue/green deployment CodeDeploy kontroluje przelacznanie ruchu przez ALB/NLB. Dla ECS canary: 10% ruchu trafia na nowa wersje przez 5 minut - w tym czasie monitorujesz metryki i logi. Jesli CloudWatch Alarm nie zostanie wyzwolony, CodeDeploy przenosi 100% ruchu. Dla Lambda: wersje sa aliasowane, CodeDeploy zmienia wagi routingu. Caly proces jest w pelni automatyczny - zadna reczna interwencja nie jest potrzebna.
Rollback - automatyczny i reczny
Automatyczny rollback triggeruje sie gdy: deployment fails (np. hook script zwroci non-zero exit code), CloudWatch Alarm przejdzie w stan ALARM (np. error rate > 5%), lub minimum healthy instances spadnie ponizej progu. Rollback wdraza poprzednia revision - to nowy deployment, nie "cofniecie". Reczny rollback mozesz wykonac przez konsole lub CLI (create-deployment z poprzednia revision). Kazdy rollback jest logowany i widoczny w historii deploymentow.
Praktyczne wskazowki dotyczace wdrozen z CodeDeploy - od strategii blue/green po zaawansowane lifecycle hooks i integracje z innymi serwisami AWS.
Blue/Green dla zero-downtime deployments
Blue/Green z CodeDeploy tworzy nowy ASG (green) z nowa wersja aplikacji, testuje go, przelacza ruch z ALB i po wait time terminuje stary ASG (blue). Zalety: natychmiastowy rollback (przelacz ruch z powrotem), brak wplywu na dzialajaca produkcje, mozliwosc testowania green environment przed switch. Wada: podwojne koszty compute podczas deploymentu. Ustaw termination wait time na 15-60 minut - daje czas na wykrycie problemow.
PoczatkujacyAppSpec hooks - lifecycle events
Dla EC2 kolejnosc hookow: ApplicationStop, DownloadBundle, BeforeInstall, Install, AfterInstall, ApplicationStart, ValidateService. Kluczowe hooks: BeforeInstall (backup aktualnej wersji, instalacja dependencies), AfterInstall (konfiguracja plikow, restart serwisow), ValidateService (smoke testy - czy aplikacja odpowiada na /health). Kazdy hook to skrypt (bash/PowerShell) z timeout - ustaw realistyczny timeout (domyslnie 3600s to za duzo, zazwyczaj 300s wystarczy).
ZaawansowanyCodeDeploy Agent na EC2
CodeDeploy Agent musi dzialac na kazdej instancji EC2 docelowej. Instaluj go przez User Data w Launch Template - wtedy kazda nowa instancja w ASG automatycznie ma agenta. Agent komunikuje sie z CodeDeploy przez HTTPS (port 443) - potrzebuje outbound internet access lub VPC Endpoint. Monitoruj /var/log/aws/codedeploy-agent/codedeploy-agent.log do debugowania. Ustaw automatyczne aktualizacje agenta przez SSM State Manager.
PoczatkujacyLambda traffic shifting - canary i linear
Dla Lambda CodeDeploy uzywa aliasow z weighted routing. Canary10Percent5Minutes: 10% ruchu na nowa wersje przez 5 minut, potem 100%. Linear10PercentEvery1Minute: co minute dodaje 10% ruchu. Skonfiguruj pre-traffic hook (Lambda function testujaca nowa wersje przed przekierowaniem ruchu) i post-traffic hook (walidacja po pelnym switch). CloudWatch Alarm na Errors i Duration metrykach triggeruje automatyczny rollback.
ZaawansowanyAutomatyczny rollback z CloudWatch Alarms
Skonfiguruj CloudWatch Alarms monitorujace: HTTP 5xx error rate (prog np. > 1%), latency p99 (prog np. > 2s), custom business metrics (np. conversion rate). Dodaj te alarmy do deployment group - jesli ktorykolwiek przejdzie w ALARM podczas deploymentu, CodeDeploy automatycznie rollbackuje. To daje Ci safety net - nawet jesli deployment przejdzie wszystkie hooks, ale degraduje produkcje, zostanie cofniety.
PoczatkujacyDeployment configurations dla ECS
ECS z CodeDeploy wspiera blue/green z ALB. Definiujesz dwa Target Groups - jeden dla aktualnej wersji (blue), drugi dla nowej (green). Strategie: ECSCanary10Percent5Minutes (bezpieczna, szybka walidacja), ECSLinear10PercentEvery1Minute (stopniowe przelaczanie), ECSAllAtOnce (szybkie, ryzykowne). Skonfiguruj test listener na osobnym porcie ALB - mozesz testowac green environment przed przeniesieniem produkcyjnego ruchu. Rollback przelaczy Target Groups z powrotem.
ZaawansowanyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z AWS CodeDeploy bezposrednio w konsoli AWS.
Do czego sluzy AWS CodeDeploy?
Wdrozenia na flote EC2
Automatyczne wdrazanie nowej wersji aplikacji na dziesiатki lub setki instancji EC2 w kontrolowany sposób.
Blue/Green Deployments
Uruchomienie nowej wersji na nowej flocie, testowanie, a nastepnie przełaczenie ruchu. Zero downtime.
Wdrozenia Lambda
Stopniowe przekierowywanie ruchu na nowa wersje funkcji Lambda - canary (10% przez 10 min) lub linear (10% co 10 min).
Wdrozenia ECS
Blue/green deployment kontenerów ECS z automatycznym rollbackiem opartym na alarmach CloudWatch.
Co musisz wiedziec?
Application
Kontener logiczny grupujacy deployment groups, revisions i konfiguracje. Jedna aplikacja = jeden mikroserwis lub komponent.
Deployment Group
Zbiór docelowych zasobów (instancji EC2, funkcji Lambda, serwisów ECS) z konfiguracja strategii wdrozenia i rollbacku.
AppSpec File (appspec.yml)
Plik definiujacy co wdrozyc i jak. Okresla pliki do skopiowania, uprawnienia, lifecycle hooks (skrypty do uruchomienia na kazdym etapie).
Deployment Strategy
Sposób wdrozenia: In-Place (aktualizacja na miejscu), Blue/Green (nowa flota), Canary (maly % ruchu), Linear (stopniowy wzrost ruchu).
Lifecycle Hooks
Skrypty uruchamiane na róznych etapach wdrozenia: BeforeInstall, AfterInstall, ApplicationStart, ValidateService - pozwalaja na customowa logike.
Rollback
Automatyczne lub reczne wycofanie wdrozenia do poprzedniej wersji. Moze byc wyzwalane przez alarmy CloudWatch lub niepowodzenie deployment.
Architektura: Deployment Pipeline z CodeDeploy
Typowa architektura wdrozenia z CodeDeploy jako centralnym orkiestratorem. Rewizja z S3/GitHub jest wdrazana na EC2 Fleet, ECS lub Lambda z automatycznym rollbackiem opartym na CloudWatch Alarms.
Ile kosztuje AWS CodeDeploy?
EC2/On-Premises
Wdrozenia na instancje EC2 i serwery on-premises sa darmowe - bez limitu.
$0.00 - nieograniczone wdrozenia na EC2
Lambda/ECS
Placisz za kazde wdrozenie na Lambda lub ECS. Bardzo niska cena za deployment.
$0.02 za wdrozenie na Lambda/ECS
Free Tier
Wdrozenia na EC2 sa zawsze darmowe. Nie ma dodatkowego Free Tier dla Lambda/ECS.
EC2 deployments: zawsze $0.00
Przyklady AWS CLI
Utwórz aplikacje CodeDeploy
Tworzy nowa aplikacje dla platformy EC2/On-Premises
aws deploy create-application \
--application-name moja-aplikacja \
--compute-platform Server
Utwórz deployment group
Tworzy grupe wdrozeniowa z tagami EC2 i Auto Scaling
aws deploy create-deployment-group \
--application-name moja-aplikacja \
--deployment-group-name produkcja \
--service-role-arn arn:aws:iam::123456789012:role/CodeDeployRole \
--ec2-tag-filters Key=Environment,Value=Production,Type=KEY_AND_VALUE \
--deployment-style deploymentType=BLUE_GREEN,deploymentOption=WITH_TRAFFIC_CONTROL
Uruchom wdrozenie
Startuje deployment z rewizja z S3
aws deploy create-deployment \
--application-name moja-aplikacja \
--deployment-group-name produkcja \
--s3-location bucket=moj-bucket,key=app.zip,bundleType=zip
Sprawdz status wdrozenia
Pobiera szczególy i status biezacego deploymentu
aws deploy get-deployment \
--deployment-id d-ABC123DEF \
--query 'deploymentInfo.{Status:status,Strategy:deploymentStyle.deploymentType,Created:createTime}' \
--output table
Quiz: AWS CodeDeploy
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.
1. Który plik definiuje proces wdrozenia w CodeDeploy?
2. Ile kosztuja wdrozenia CodeDeploy na instancje EC2?
3. Która strategia wdrozenia uruchamia nowa wersje na zupelnie nowej flocie?
4. Który lifecycle hook uruchamia sie PRZED instalacja nowej wersji?
Czesto uzywane razem z AWS CodeDeploy
Chcesz poznac AWS CodeDeploy w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac AWS CodeDeploy krok po kroku. Teoria + praktyka od zera.