Kontenery i deployment: Elastic Beanstalk, App Runner, CodePipeline

Masz aplikację i chcesz ją uruchomić w AWS. Czy naprawdę musisz ręcznie tworzyć EC2, konfigurować load balancer, ustawiać auto scaling, dbać o patching? Odpowiedź: nie musisz. AWS oferuje usługi, które robią to za Ciebie. Wrzucasz kod, a AWS zajmuje się resztą.

W tej lekcji poznasz usługi PaaS (Platform as a Service) w AWS oraz narzędzia CI/CD do automatyzacji deploymentu.

Czym jest PaaS?

Przypomnij sobie z pierwszych lekcji: w modelu IaaS (np. EC2) dostajesz surowy serwer i sam zarządzasz wszystkim od systemu operacyjnego w górę. W modelu PaaS dostajesz platformę, na którą wrzucasz swój kod, a dostawca zarządza infrastrukturą pod spodem.

PaaS to jak wynajęcie kuchni w restauracji: dostajesz gotowe stanowisko z piecem, lodówką i blatem. Ty tylko gotujesz. Nie musisz budować kuchni od zera.

AWS Elastic Beanstalk

Elastic Beanstalk (w skrócie EB) to najstarsza usługa PaaS w AWS. Wrzucasz swój kod (Java, .NET, PHP, Node.js, Python, Ruby, Go, Docker), a EB automatycznie tworzy i konfiguruje:

  • Instancje EC2
  • Load Balancer (ALB)
  • Auto Scaling Group
  • Security Groups
  • CloudWatch monitoring

Ważne: Elastic Beanstalk to darmowa usługa. Płacisz tylko za zasoby, które tworzy (EC2, ALB itp.). Sam Beanstalk nie kosztuje nic extra.

💡 Kluczowa cecha EB
W Elastic Beanstalk nadal masz pełną kontrolę nad zasobami. Możesz się zalogować do instancji EC2, zmienić konfigurację, dostosować ustawienia. EB tworzy standardowe zasoby AWS, tylko robi to automatycznie. To odróżnia go od bardziej „zamkniętych" PaaS-ów.

Kiedy wybrać Elastic Beanstalk?

  • Chcesz szybko wdrożyć aplikację webową bez ręcznego tworzenia infrastruktury
  • Potrzebujesz kontroli nad zasobami (np. dostęp do EC2)
  • Masz tradycyjną aplikację (web app, API) i chcesz ją wdrożyć w minuty
  • Potrzebujesz wielu environment types: web server, worker, single instance, load balanced

AWS App Runner

App Runner to nowsza, prostsza alternatywa dla Elastic Beanstalk. Jest jeszcze bardziej „managed": podajesz kod źródłowy (z GitHub) lub obraz kontenera (z ECR), a App Runner zajmuje się absolutnie wszystkim: budowaniem, deploymentem, skalowaniem, load balancingiem, TLS.

⚖️ Elastic Beanstalk vs App Runner
CechaElastic BeanstalkApp Runner
Poziom kontroliWysoki (dostęp do EC2, VPC, SG)Niski (w pełni managed)
KonfiguracjaWiele opcji do dostosowaniaMinimalna, prawie zero-config
SkalowanieAuto Scaling (konfigurujesz)Automatyczne (scale to zero możliwe)
Źródło koduUpload ZIP, Docker, S3GitHub, ECR (container image)
Dla kogoZespoły potrzebujące kontroliDeveloperzy chcący max prostoty
KosztPłacisz za zasoby (EC2, ALB)Płacisz za compute + memory (per use)
⚠️ Na egzaminie
Na egzaminie Cloud Practitioner kluczowe jest rozumienie, że zarówno Elastic Beanstalk, jak i App Runner to usługi PaaS, które upraszczają deployment. Elastic Beanstalk daje więcej kontroli, App Runner jest prostszy. Oba pozwalają skupić się na kodzie zamiast na infrastrukturze. Gdy pytanie mówi o „łatwym deploymencie aplikacji bez zarządzania infrastrukturą", obie odpowiedzi mogą być poprawne.

CI/CD w AWS: narzędzia Developer Tools

CI/CD to skrót od Continuous Integration / Continuous Delivery (lub Deployment). To podejście, w którym każda zmiana w kodzie jest automatycznie budowana, testowana i wdrażana. Zero ręcznego kopiowania plików na serwer.

AWS Developer Tools

AWS CodeCommit (wycofany z nowych kont od 2024): zarządzane repozytorium Git. Jak GitHub/GitLab, ale w AWS. Prywatne repozytoria, integracja z IAM. AWS zachęca teraz do używania zewnętrznych repozytoriów (GitHub, GitLab, Bitbucket).

AWS CodeBuild: w pełni zarządzana usługa budowania (build). Kompiluje kod, uruchamia testy, tworzy artefakty (np. JAR, Docker image). Serverless, płacisz za minuty build time.

AWS CodeDeploy: automatyzuje deployment na EC2, Lambda, ECS. Obsługuje strategie deploymentu: all-at-once, rolling, blue/green. Działa też z serwerami on-premises!

AWS CodePipeline: orkiestruje cały pipeline CI/CD. Łączy Source (CodeCommit/GitHub) → Build (CodeBuild) → Test → Deploy (CodeDeploy/EB/ECS). Automatycznie uruchamia pipeline po każdym pushu do repozytorium.

Jak działa CodePipeline?

CodePipeline to „dyrygent" całego procesu. Definiujesz etapy (stages), a CodePipeline wykonuje je po kolei:

  1. Source: pobierz kod z GitHub/CodeCommit
  2. Build: zbuduj aplikację (CodeBuild)
  3. Test: uruchom testy automatyczne
  4. Deploy: wdróż na staging, potem na produkcję
🏢 Scenariusz: Startup wdrażający aplikację
Mały zespół deweloperski buduje aplikację webową. Zamiast ręcznie logować się na serwer i kopiować pliki, konfigurują CodePipeline: developer pushuje kod do GitHub → CodeBuild automatycznie buduje aplikację i uruchamia testy → jeśli testy przejdą, CodeDeploy wdraża nową wersję na Elastic Beanstalk z blue/green deployment. Cały proces od pusha do działającej aplikacji zajmuje 5 minut. Żadnego ręcznego kroku.
💡 Zapamiętaj prostą regułę
CodeCommit = przechowuj kod (Source). CodeBuild = buduj i testuj (Build). CodeDeploy = wdrażaj (Deploy). CodePipeline = orkiestruj całość (Pipeline). Nazwy mówią same za siebie!
✅ Do zapamiętania z tej lekcji
PaaS = wrzucasz kod, AWS zarządza infrastrukturą pod spodem
Elastic Beanstalk: PaaS z pełną kontrolą nad zasobami, darmowy (płacisz za zasoby)
App Runner: prostszy PaaS, zero-config, automatyczne skalowanie
CodePipeline orkiestruje CI/CD: Source → Build → Test → Deploy
CodeBuild = budowanie i testy, CodeDeploy = deployment, CodeCommit = repozytorium Git
CI/CD eliminuje ręczne wdrożenia i przyspiesza dostarczanie oprogramowania
🧠 Podsumowanie
  • Elastic Beanstalk to PaaS, który automatycznie tworzy EC2, ALB, Auto Scaling i więcej. Wrzucasz kod, dostajesz działającą aplikację. Masz pełną kontrolę nad zasobami
  • App Runner to jeszcze prostszy PaaS: podajesz kod lub kontener, App Runner robi wszystko. Idealny gdy nie potrzebujesz kontroli nad infrastrukturą
  • CI/CD (Continuous Integration / Continuous Delivery) automatyzuje budowanie, testowanie i wdrażanie aplikacji
  • CodePipeline orkiestruje cały proces: pobiera kod (Source), buduje (CodeBuild), testuje i wdraża (CodeDeploy)
  • Wszystkie te usługi pozwalają deweloperom skupić się na pisaniu kodu zamiast na zarządzaniu infrastrukturą
🧪 Sprawdź się

Developer chce wdrożyć aplikację webową w AWS bez ręcznego konfigurowania EC2, load balancerów i auto scaling. Która usługa mu to umożliwi?

A Amazon EC2 Auto Scaling
B AWS Elastic Beanstalk
C AWS CodeBuild
Elastic Beanstalk to PaaS, który automatycznie tworzy i konfiguruje EC2, load balancery, Auto Scaling i inne zasoby. Developer wrzuca kod, a EB tworzy całą infrastrukturę. EC2 Auto Scaling wymaga ręcznej konfiguracji, CodeBuild to usługa do budowania kodu, nie do hostowania aplikacji.

Która usługa AWS orkiestruje cały proces CI/CD, łącząc etapy source, build, test i deploy?

A AWS CodeBuild
B AWS CodeDeploy
C AWS CodePipeline
CodePipeline to orkiestrator CI/CD, który łączy wszystkie etapy w jeden automatyczny proces. CodeBuild zajmuje się tylko budowaniem i testami, CodeDeploy tylko wdrożeniami. CodePipeline łączy je wszystkie w spójny pipeline.