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.
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.
| Cecha | Elastic Beanstalk | App Runner |
|---|---|---|
| Poziom kontroli | Wysoki (dostęp do EC2, VPC, SG) | Niski (w pełni managed) |
| Konfiguracja | Wiele opcji do dostosowania | Minimalna, prawie zero-config |
| Skalowanie | Auto Scaling (konfigurujesz) | Automatyczne (scale to zero możliwe) |
| Źródło kodu | Upload ZIP, Docker, S3 | GitHub, ECR (container image) |
| Dla kogo | Zespoły potrzebujące kontroli | Developerzy chcący max prostoty |
| Koszt | Płacisz za zasoby (EC2, ALB) | Płacisz za compute + memory (per use) |
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:
- Source: pobierz kod z GitHub/CodeCommit
- Build: zbuduj aplikację (CodeBuild)
- Test: uruchom testy automatyczne
- Deploy: wdróż na staging, potem na produkcję
- 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ą
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?
Która usługa AWS orkiestruje cały proces CI/CD, łącząc etapy source, build, test i deploy?