P
Cloud Blog ProAWS Blog · Cộng đồng VN
Blue/Green Deployments with Elastic Beanstalk

Blue/Green Deployments with Elastic Beanstalk

trungtin trantrungtin tran··5 phút đọc·40 lượt xem

Introduction

AWS Elastic Beanstalk

  1. AWS Elastic Beanstalk is a Platform as a Service (PaaS) cung cấp bởi AWS cho phép bạn triển khai và mở rộng ứng dụng 1 cách nhanh chóng
  2. Developer không cần có nhiều kinh nghiệm về infrastructure, Configuring all the databases, load balancers, etc. Hay không cần xem xét nhiều về Scaling, Deploy code.
  3. Tất cả nhưng gì mà Developer muốn là code app có thể ngay lập tức được triển khai lên môi trường AWS
  4. AWS Elastic Beanstalk sử dụng các Component như EC2, ASG, ELB, RDS .v.v để chạy ứng dụng
  5. Elastic Beanstalk – Supported nhiều Platforms
  6. Beanstalk cũng có nhiều Deployment Options cho việc update code

Blue/Green deployments with Elastic Beanstalk

  1. Nếu AWS Elastic Beanstalk thực hiện deploy trên chính môi trường hiện tại (production), có thể application sẽ không khả dụng cho đến khi quá trình cập nhật hoàn tất.
  2. Có thể tránh được thời gian downtime này bằng cách thực hiện triển khai blue/green deployment.
  3. Blue/Green deployments cho phép update application từ version này sang version khác mà không có bất kỳ downtime nào.
  4. Môi trường Blue là môi trường production hiện tại đang tiếp nhận trafic từ người dùng.
  5. Môi trường Green là môi trường giống hệt với production để thực hiện test version mới của ứng dụng.
  6. Sử dụng Deploying of Blue/Green cho phép chúng triển khai version mới của application lên môi trường hoàn toàn tách biệt với production - không ảnh hướng đến production trong quá trình test ứng dụng.
  7. Sau khi triển khai xong, test version mới không vấn đề gì, chỉ cần định tuyến lưu lượng truy cập từ Blue sang Green bằng cách hoán đổi CNAMEs hoặc Route53 để chuyển dần dần phần trăm lưu lượng truy cập (Lab này không thực hiện với Route53)
  8. Sau khi quá trình triển khai hoàn tất, nếu bạn gặp phải bất kỳ sự cố nào ở môi trường Green, Elastic BeanStalk cũng cung cấp tùy chọn để rool back về môi trường Blue một cách dễ dàng.

Lab Details

  1. Region : sử dụng us-east-1 to create all the resources.
  2. Duration30 minutes

Architecture Diagram

Task Details

  1. Create Instance Profile (IAM role) cho EC2
  2. Creating an Elastic Beanstalk Application
  3. Creating Elastic Beanstalk Blue Environment
  4. Creating Elastic Beanstalk Green Environment (Clone and Deploy new app version)
  5. Swapping the Domains from Blue to Green

1. Create Service role cho Elastic Beanstalk

Tại Console IAM, thực hiện tạo Role như sau

  • Trusted entity type: AWS service
  • Use case:
    • Service or use case: Elastic Beanstalk
    • Use case: Elastic Beanstalk - Environment
  • Permissions policies
    • AWSElasticBeanstalkEnhancedHealth (AWS managed)
    • AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy (AWS managed)
  • Role name: aws-elasticbeanstalk-service-role

2. Create Instance Profile (IAM role) cho EC2

Tại Console IAM, thực hiện tạo Role như sau

  • Trusted entity type: AWS service
  • Use case:
    • Service or use case: Elastic Beanstalk
    • Use case: Elastic Beanstalk - Compute
  • Permissions policies
    • AWSElasticBeanstalkWebTier (AWS managed)
    • AWSElasticBeanstalkWorkerTier (AWS managed)
    • AWSElasticBeanstalkMulticontainerDocker (AWS managed)
  • Role name: DVAElasticBeanstalkEc2Role

3. Creating an Elastic Beanstalk Application

Tại giao diện Elastic Beanstalk, Tại menu Application ->Create application

  • Application name: d-eb-dva-nodejs-app
  • Description: NodeJS app
  • Tags:
    • Key: Name
    • Value: d-eb-dva-nodejs-app

4. Creating Elastic Beanstalk Blue Environment

Create environments

Environment details

  • Basic details
    • Application name: d-eb-dva-nodejs-app
    • Environment name: d-eb-dva-nodejs-app-env-prod
  • Platform details
    • Platform: Node.js
    • Platform branch: Node.js 24 running on 64bit Amazon Linux 2023
    • Platform version: 6.11.x(Recommended)(Nên chọn version được Recommended)
  • Application code
    • Local file:
      • Version label: v1
      • Choose file: Upload file eb-dva-node-app-v1.zip (Tải về Tại đây)
  • Các setting khác để default

  • Create

Verify kết quả

  • Click vào Domain URL để kiểm tra

Vậy là chúng ta đã hoàn thành deploy v1 app, môi trường production

5. Creating Elastic Beanstalk Green Environment (Clone and Deploy new app version)

Tiếp theo chúng ta sẽ tạo một môi trường mới (dev). Thay vì tạo từ đầu, chúng ta có thể sử dụng tính năng Clone

Clone Environments

Vào Elastic Beanstalk -> Environments -> chọn Env đã tạo -> Actions -> Clone Environment

  • Environment Name: d-eb-dva-nodejs-app-env-dev
  • Các setting khác để default

  • Clone

  • Click vào Domain URL để kiểm tra

Vậy là chúng ta đã Clone thành công môi trường dev từ production

Deploy version mới cho môi trường dev vừa clone

  • Click Upload and deploy

  • Upload file: eb-dva-node-app-v2.zip (Tải file Tại đây)
  • Version label: v2

  • Verify kết quả: Quá trình Deploy sẽ diễn ra trong chốc lát
  • Click vào domain URL để kiểm tra

Đến đây chúng ta đã hoàn thành deploy 2 version khau nhau của application lên 2 môi trường

  • Môi trường prod: v1 (blue)
  • Môi trường dev: v2 (green)

6. Swapping the Domains

Giả sử chúng ta đã test xong v2 ở môi trường dev rồi và muốn nó (green) trở thành môi trường prod. 1 cách đơn giản đó là sử dụng Swap environment domain

  • Environments d-eb-dva-nodejs-app-env-dev -> Actions -> Swap environment domain

  • Chọn Environment: d-eb-dva-nodejs-app-env-prod, rồi nhấn swap

Verify kết quả

  • Đợi Swap xong chúng ta sẽ thấy domain đã được hoán đổi giữa 2 môi trường:
    • Môi trường prod: v2 (green)
    • Môi trường dev: v1 (blue)
  • Click vào domain prod và dev

  • Môi trường prod: v2 (green)

  • Môi trường dev: v1 (blue)

Clean Up

  • Delete Application

Quay lại trang chủ

Bình luận