Elastic Beanstalk

3 phút đọcSeries: NoteBook: AWS Certified Solutions Architect Associate SAA-C031 lượt xem

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).
Giám sát ứng dụ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.
      • 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 Dockerfile hay docker-compose.yml như các mode Docker thông thường.

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?