Các phương thức deploy ... ngoài cách bật tắt docker mà trang web của mình đang sử dụng =))

Đăng bởi Lưu Đại vào ngày 25-01-2023
Nhân dịp hôm này tìm hiểu về Beanstalk mình viết bài này lưu lại những kiến thức mình đã học được
Bài này chỉ có lý thuyết chứ bản thân mình chưa thực hành các cách nêu sau đây bao giờ

1. Hồi tưởng. 

Khoảng tầm 2 năm trước (tháng 2/2021) khi mình mới chân ướt, chân ráo lên đơn vị sau 2 tháng (bản thân mình thấy là dài) thực tập. 
Bên cạnh nỗi buồn do chuyện gia đình thì là niềm vui khi lần đầu khi được pass phỏng vấn và được làm một dự án đúng nghĩa.  
Khi lên đơn vị là lúc lần đầu tiên mình được nghe về Blue Green deployment, mặc dù lúc đấy chẳng hiểu blue green là gì cả 🤔. Bẵng đi một hai tháng mình được đá sang dự án khác do dự án đầu khách hàng thấy không đóng góp được gì ngoài fix mấy cái bug giao diện 😁 cho tới hôm nay khi mình tìm hiểu beanstalk của AWS thì mới biết hóa ra còn nhiều cách deploy một ứng dụng. 
Thôi hồi tưởng đủ rồi, tới phần chính thôi 😤

2. Các phương thức deployment. 

  • Rolling Deployment
    Cách này là deploy lần lượt mỗi instance trên AWS. Ví dụ bạn có 3 instances A, B, C khi instance A được deploy code mới thì instance B, C vẫn có thể xử lý request người dùng. Sau khi instance A được deploy thì nó sẽ deploy tiếp B lúc này A và C sẽ xử lý request. Tuy nhiên do version của A và C lúc này khác nhau nên có thể dữ liệu sẽ bị không nhất quán 🤔. Sau khi B được deploy xong thì sẽ là C. Nếu có nhiều instance hơn thì cũng lần lượt như này. 
  • Immutable Deployment
    Cách này sẽ dùng tới ElasticBeanstalk (EB). EB sẽ tạo ra 1 instance mới và deploy code mới lên instance này trong trường hợp instance này pass healthcheck EB sẽ chạy thêm X instances (bằng với số lượng instance trước khi deploy). Khi tất cả các instance mới được thêm pass healthcheck thì EB sẽ add các instance mới vào để nhận request đồng thời xóa hết instances cũ đi.
  • Blue/Green Deployment
    Nếu Immutable Deployment tạm thời gấp đôi số lượng instance thì blue/green tạo ra 2 môi trường riêng biệt nhau một cái là Blue chạy version hiện tại và một cái là Green dùng để chạy version mới. Sau khi Green deploy thành công thì Beanstalk sẽ trỏ domain name vào môi trường mới và từ đó môi trường mới sẽ thực hiện request. 
Cả 3 phương thức deploy trên đều không có downtime (zero downtime)