Elastic Beanstalk

Tổng quan về AWS Elastic Beanstalk
- Elastic Beanstalk là công cụ triển khai ứng dụng hướng lập trình viên trên AWS.
- Nó sử dụng tất cả các thành phần quen thuộc như:
- EC2, ASG (Auto Scaling Group), ELB, RDS, v.v...
- Nhưng tất cả được hiển thị trong giao diện hợp nhất, giúp dễ hiểu và dễ quản lý hơn!
- Người dùng vẫn có toàn quyền kiểm soát cấu hình nếu cần.
- Beanstalk = Platform as a Service (PaaS)
- Beanstalk miễn phí, nhưng bạn phải trả tiền cho các tài nguyên nó sử dụng (VD: EC2, RDS…)
- Managed service (Dịch vụ được quản lý):
- Beanstalk lo toàn bộ phần hạ tầng:
- Cấu hình instance / OS được quản lý bởi Beanstalk.
- Chiến lược triển khai (deployment strategy) có thể cấu hình, nhưng việc triển khai thực tế do Beanstalk thực hiện.
- Tự động cấp phát tài nguyên (capacity provisioning).
- Load balancing & auto-scaling có sẵn.
- Giám sát ứng dụng và phản hồi (health-check & responsiveness).
- Beanstalk lo toàn bộ phần hạ tầng:

- Developer chỉ cần chịu trách nhiệm với application code
- Hỗ trợ đa nền tảng (Multi-platform Support) của Elastic Beanstalk:
- Ngôn ngữ lập trình & nền tảng được hỗ trợ sẵn:
- Go
- Java SE (chạy ứng dụng Java thuần)
- Java with Tomcat (Beanstalk sẽ tích hợp Tomcat runtime sẵn)
- .NET trên Windows Server với IIS (dành cho ứng dụng ASP.NET)
- Node.js
- PHP
- Python
- Ruby
- Packer Builder (dùng để tạo AMI – ít phổ biến trong Beanstalk, nhưng hỗ trợ)
- Docker Support:
- Single Container Docker:
- Triển khai ứng dụng với 1 container duy nhất.
- Ví dụ:
Dockerfileđơn, phù hợp với ứng dụng monolith.
- Multi-Container Docker:
- Triển khai nhiều container dùng Docker Compose (
docker-compose.yml) - Phù hợp với kiến trúc microservice nhẹ, cần nhiều container phối hợp.
- Triển khai nhiều container dùng Docker Compose (
- Preconfigured Docker
- Đây là loại platform có Docker runtime được AWS cấu hình sẵn, bạn chỉ cần cung cấp ứng dụng và cấu hình nhỏ (ví dụ
Dockerrun.aws.json). - Không cần viết
Dockerfilehaydocker-compose.ymlnhư các mode Docker thông thường.
- Đây là loại platform có Docker runtime được AWS cấu hình sẵn, bạn chỉ cần cung cấp ứng dụng và cấu hình nhỏ (ví dụ
- Single Container Docker:
- Ngôn ngữ lập trình & nền tảng được hỗ trợ sẵn:
3 mô hình kiến trúc của Elastic Beanstalk:
Single Instance Deployment
- Mô tả: Chỉ có 1 EC2 instance chạy ứng dụng.
- Mục tiêu: Phù hợp cho môi trường development, staging nhỏ, hoặc POC (proof of concept).
- Ưu điểm:
- Đơn giản, triển khai nhanh.
- Chi phí thấp.
- Hạn chế:
- Không có HA (High Availability), không auto-scaling, không load balancing.
- Không phù hợp production vì single point of failure.
Load Balancer + Auto Scaling Group (LB + ASG)
- Mô tả:
- Sử dụng Load Balancer (ELB) để phân phối request.
- Auto Scaling Group để scale số lượng instance theo nhu cầu.
- Mục tiêu: Thích hợp cho môi trường production hoặc pre-production với ứng dụng web.
- Ưu điểm:
- Có khả năng mở rộng (scalable).
- Đảm bảo tính sẵn sàng cao (HA).
- Có thể tích hợp HTTPS, sticky session, health check tốt hơn.
- Hạn chế:
- Tốn chi phí hơn so với Single Instance.
ASG Only (Không có Load Balancer)
- Mô tả:
- Chạy các instance theo cơ chế Auto Scaling, nhưng không sử dụng Load Balancer.
- Mục tiêu: Thích hợp cho ứng dụng không phải web, ví dụ như worker service, batch processing, background jobs.
- Ưu điểm:
- Vẫn scale theo nhu cầu.
- Tối ưu chi phí hơn (vì không tốn phí ELB).
- Hạn chế:
- Không thể sử dụng cho web app vì không có load balancing/người dùng không thể truy cập trực tiếp.
Bạn thấy bài này thế nào?