AWS Elastic Beanstalk
AWS Elastic Beanstalk
Wrzuć kod, a AWS zajmie się resztą. Automatyczne provisioning, load balancing, skalowanie i monitoring.
AWS Elastic Beanstalk to serwis PaaS (Platform as a Service), który pozwala wdrożyć aplikację webową w AWS bez ręcznego konfigurowania infrastruktury. Wrzucasz kod (ZIP lub Docker image), wybierasz platformę (Node.js, Python, Java, .NET, PHP, Ruby, Go, Docker) i Beanstalk automatycznie tworzy: instancje EC2, load balancer, auto scaling group, security groups, CloudWatch monitoring.
Beanstalk to idealne rozwiązanie dla zespołów, które chcą szybko wdrażać aplikacje bez bycia ekspertem od infrastruktury. Zachowujesz pełną kontrolę nad zasobami (to Twoje EC2, Twój ALB, Twoja RDS) i możesz je dostosować, ale nie musisz konfigurować od zera.
Beanstalk sam w sobie jest darmowy - płacisz tylko za zasoby AWS, które tworzy (EC2, RDS, ALB itp.).
Elastic Beanstalk istnieje od 2011 roku i wciąż jest aktywnie rozwijany. Pod spodem tworzy standardowe zasoby AWS (EC2, ALB, ASG) - widoczne w konsoli i w pełni konfigurowalne. To NIE jest zamknięty black-box.
Używaj pliku .ebextensions/ w katalogu projektu do customizacji środowiska: instalacja pakietów, konfiguracja plików, zmienne środowiskowe, commands. Dla Docker-based aplikacji rozważ Beanstalk Multi-container lub od razu ECS Fargate.
AWS Elastic Beanstalk automatyzuje provisionowanie infrastruktury - Ty dostarczasz kod, a Beanstalk tworzy i zarzadza EC2, ALB, Auto Scaling, bazami danych i monitoringiem. Ponizej przedstawiamy caly proces od aplikacji po aktualizacje.
Utworzenie aplikacji (Application)
Aplikacja w Beanstalk to logiczny kontener na wiele srodowisk (environments). Tworzysz ja przez konsole, CLI (eb init) lub CloudFormation. Aplikacja przechowuje wersje kodu (application versions) jako archiwa ZIP/WAR w S3. Mozesz miec wiele aplikacji - np. "web-frontend", "api-backend", "worker-processor".
Utworzenie srodowiska (Environment)
Srodowisko to dzialajaca instancja aplikacji z cala infrastruktura. Dwa typy: Web Server (obsluguje HTTP traffic z ALB) i Worker (przetwarza wiadomosci z SQS). Kazde srodowisko ma unikalne URL (np. myapp-prod.elasticbeanstalk.com). Tworzysz osobne srodowiska: dev, staging, production - kazde z wlasna konfiguracja.
Wybor platformy
Beanstalk wspiera platformy: Node.js, Python, Java SE, Java Tomcat, PHP, Ruby, .NET, Go i Docker (single/multi-container). Kazda platforma ma wersje (np. "Node.js 18 running on Amazon Linux 2023"). Platformy sa regularnie aktualizowane przez AWS - dostajesz patche bezpieczenstwa bez wysilku. Docker pozwala uruchomic dowolny stack - nawet niewspierany natywnie.
Upload kodu (Application Version)
Deployujesz kod jako archiwum ZIP (lub WAR dla Javy). CLI (eb deploy) automatycznie pakuje i uploaduje. Mozesz tez deployowac z S3 lub CodeCommit. Kazdy deploy tworzy nowa "application version" - mozesz wrocic do poprzedniej wersji jednym kliknieciem (rollback). Beanstalk przechowuje do 1000 wersji aplikacji.
Konfiguracja skalowania
Beanstalk konfiguruje Auto Scaling Group automatycznie. Ustawiasz: min/max instancji, metryki skalowania (CPU, Network, Latency, Request Count), cool-down period. Mozesz tez wybrac typ instancji, Spot instances (oszczednosc do 90%), czy single instance (bez ALB - tansze dla dev). Konfiguracja przez konsole, .ebextensions lub saved configurations.
Wdrazanie aktualizacji (Deployments)
Strategie deploymentu: All at once (najszybszy, downtime), Rolling (po grupach, brak downtime), Rolling with additional batch (utrzymuje full capacity), Immutable (nowe instancje, safest), Traffic splitting (canary deployment). Dla produkcji zalecamy Immutable lub Traffic splitting - w razie problemu automatyczny rollback do starych instancji.
Praktyczne wskazowki z produkcyjnego uzycia Elastic Beanstalk - od zaawansowanej konfiguracji po optymalizacje kosztow.
.ebextensions - zaawansowana kustomizacja
Katalog .ebextensions/ w kodzie aplikacji zawiera pliki YAML konfigurujace srodowisko. Mozesz: instalowac pakiety systemowe (packages), tworzyc pliki konfiguracyjne (files), uruchamiac komendy (commands/container_commands), konfigurowac serwisy systemowe (services). Przyklad: instalacja nginx custom config, dodanie cron joba, konfiguracja CloudWatch agent.
ZaawansowanyImmutable deployments dla bezpieczenstwa
Immutable deployment tworzy nowy Auto Scaling Group z nowymi instancjami, uruchamia health checki i dopiero po sukcesie przelacza ruch. Stare instancje sa usuwane po potwierdzeniu zdrowia nowych. To najbezbpieczniejsza strategia - w razie bledu stare instancje dalej dzialaja. Wada: zajmuje wiecej czasu (3-5 minut) i chwilowo podwaja koszty instancji.
PoczatkujacyDocker multi-container
Beanstalk z Docker wspiera wielokontenerowe srodowiska przez docker-compose.yml (Amazon Linux 2023) lub Dockerrun.aws.json v2 (ECS-based). Mozesz uruchomic np. aplikacje Node.js + Redis + Nginx jako reverse proxy na jednym homodze. Dla bardziej zlozonych deploymentow rozwaaz migracje do ECS/Fargate - wiecej kontroli i lepsza skalowalnosc.
ZaawansowanySaved configurations - reuzywalne szablony
Saved configurations pozwalaja zapisac pelna konfiguracje srodowiska (typ instancji, scaling, zmienne srodowiskowe, VPC) i odtworzyc ja pozniej. Uzyj do: klonowania srodowisk (dev -> staging), disaster recovery, standaryzacji konfiguracji miedzy zespolami. Konfiguracje sa zapisane w S3 i mozna je wersjonowac w Git.
PoczatkujacyKlonowanie srodowisk
Environment cloning tworzy dokladna kopie srodowiska - ta sama konfiguracja, wersja kodu i ustawienia. Idealne do: tworzenia staging z produkcji, testowania zmian konfiguracji, blue-green deploymentow. Klonowanie kopiuje wszystko oprocz danych w RDS - dla bazy musisz zrobic snapshot i przywrocic osobno.
PoczatkujacyKoszty = koszty zasobow bazowych
Beanstalk sam w sobie jest darmowy - placisz tylko za zasoby, ktore tworzy (EC2, ALB, RDS, S3). Dla srodowisk dev uzyj single instance (bez ALB - oszczedzasz ~$20/miesiac) i t3.micro/t4g.micro. Dla produkcji uzyj mix On-Demand + Spot Instances. Pamietaj o lifecycle policy dla starych application versions - domyslnie 1000 wersji w S3 generuje koszty storage.
PoczatkujacyScreenshoty z AWS Console
Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z AWS Elastic Beanstalk bezposrednio w konsoli AWS.
Do czego sluzy AWS Elastic Beanstalk?
Szybki deploy aplikacji webowej
Masz aplikację w Django, Rails, Express.js, Spring Boot lub Laravel? eb create + eb deploy i masz ją na AWS z load balancerem i HTTPS w kilka minut.
Środowiska dev/staging/production
Twórz osobne środowiska Beanstalk. Klonuj environment, testuj zmiany na staging, potem swap URL z produkcją - zero downtime.
Aplikacje Docker
Wrzuć Dockerfile lub docker-compose.yml. Beanstalk zbuduje obraz, uruchomi kontener i skonfiguruje load balancer.
Nauka AWS bez DevOps expertise
Beanstalk pokazuje jak działają EC2, ALB, ASG, CloudWatch w praktyce. Widzisz zasoby, ale nie musisz ich konfigurować ręcznie.
Co musisz wiedziec?
Application
Logiczny kontener grupujący environments, versions i konfiguracje. Np. "moja-app" to Application, "moja-app-prod" i "moja-app-dev" to Environments.
Environment
Uruchomiona instancja aplikacji. Dwa typy: Web Server (z ALB, obsługuje HTTP) i Worker (przetwarza zadania z SQS, bez load balancera).
Platform
Kombinacja OS + runtime + web server. Np. "Python 3.11 running on 64bit Amazon Linux 2023". AWS aktualizuje platformy automatycznie.
Deployment Policy
Strategia wdrażania: All at once (downtime), Rolling (po jednej instancji), Immutable (nowe instancje, swap), Blue/Green (nowy environment, swap URL).
.ebextensions
Katalog z plikami YAML (.config) do customizacji: packages, commands, files, services. Pełna kontrola nad konfiguracją serwera.
Architektura: Zarzadzana aplikacja webowa na Elastic Beanstalk
Typowa architektura aplikacji webowej na Elastic Beanstalk. Beanstalk automatycznie provisionuje i zarzadza wszystkimi komponentami - developer skupia sie na kodzie, a infrastruktura jest zarzadzana przez platforme.
Porównanie metod wdrażania aplikacji
| Cecha | Elastic Beanstalk | ECS Fargate | Lambda |
|---|---|---|---|
| Typ | PaaS (kod/Docker) | Kontenery (Docker) | Funkcje (kod) |
| Zarządzanie infra | Automatyczne | Minimalne (serverless) | Zero (serverless) |
| Skalowanie | EC2 Auto Scaling | Task auto scaling | Automatyczne 0-1000s |
| Długo-działające procesy | Tak (serwer 24/7) | Tak (kontener 24/7) | Max 15 minut |
| Idealny dla | Tradycyjne app webowe | Mikrousługi, Docker | Event-driven, API |
| Koszt minimum | ~$10/mies. | ~$15/mies. | Grosze / Free Tier |
Ile kosztuje AWS Elastic Beanstalk?
Elastic Beanstalk
Sam serwis jest DARMOWY. Płacisz tylko za zasoby AWS, które tworzy: EC2, RDS, ALB, EBS, S3.
$0.00 za Beanstalk
Typowe zasoby (small app)
Mała aplikacja: 1x t3.small EC2 + ALB + 20GB EBS + RDS db.t3.micro.
~$30-50/miesiąc (z Free Tier mniej)
Auto Scaling
Beanstalk konfiguruje ASG automatycznie. Gdy ruch spada, ASG usuwa zbędne instancje.
Min 1 instancja, max konfigurowalny
Free Tier
Beanstalk jest darmowy. Zasoby: t3.micro EC2 + db.t3.micro RDS - w ramach Free Tier przez 12 miesięcy.
Mała aplikacja za $0 przez rok
Przyklady AWS CLI
Inicjalizuj projekt Beanstalk
Konfiguruje projekt w bieżącym katalogu (EB CLI)
eb init moja-aplikacja \
--platform "Python 3.11" \
--region eu-central-1
Utwórz środowisko i wdróż
Tworzy nowe environment z load balancerem i wdraża kod
eb create moja-aplikacja-prod \
--instance_type t3.small \
--elb-type application
Wdróż nową wersję
Deploy aktualnego kodu na istniejące environment
eb deploy moja-aplikacja-prod
Quiz: AWS Elastic Beanstalk
Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.
1. Ile kosztuje sam serwis Elastic Beanstalk?
2. Która strategia deploymentu zapewnia zero downtime?
3. Jakie zasoby tworzy Beanstalk pod spodem?
Czesto uzywane razem z AWS Elastic Beanstalk
Czytaj więcej o AWS Elastic Beanstalk
Chcesz poznac AWS Elastic Beanstalk w praktyce?
Darmowy kurs "AWS od podstaw" pokazuje jak uzywac AWS Elastic Beanstalk krok po kroku. Teoria + praktyka od zera.