Mỗi khi có tính năng mới, đệ tử lại hì hục nén file ZIP. Khuya khoắt 2h sáng lén lút SSH vào Server, tắt app, chép đè file, rồi nơm nớp cầu nguyện hệ thống không sập. Đó là tà đạo ClickOps thủ công hại tóc tổn thọ!
Dù tông môn sở hữu linh thú EC2 hùng hậu đến đâu, nếu quy trình giao sản phẩm vẫn làm bằng tay, Tông môn sẽ mãi lạc hậu. Để giải quyết, Tông chủ quyết định thiết lập Dây Chuyền CI/CD (Continuous Integration / Continuous Deployment) — Lò Luyện Đan tự động hóa 100%. Đệ tử chỉ việc bỏ thảo dược (Code) vào một đầu, đầu kia tự khắc nhả ra linh đan (App) cho bá tánh dùng.
Thảo dược thô (Source Code) lấy từ Tàng Thư Các (GitHub / CodeCommit) không thể đưa ngay cho bá tánh ăn. Nó phải đi qua lò đúc AWS CodeBuild:
- Đun Sôi & Ép Khuôn (Compile/Build): CodeBuild triệu hồi một căn phòng container ngắn hạn, đun sôi, biên dịch, và đóng gói thành một viên linh đan hoàn chỉnh (ZIP file / Docker Image).
- Vượt Qua Lôi Kiếp (Unit Testing): Trước khi xuất xưởng, viên đan phải chịu hàng ngàn lôi kiếp thử nghiệm. Nếu nó không chịu được độc dược mô phỏng, lò đúc lập tức nổ tung.
- Cảnh báo nổ lò: Nếu thất bại, lò bát quái lập tức bắn chim bồ câu mắng vốn vào mặt đệ tử viết code: "Dòng 45 lỗi nặng, đan dược có độc, mau sửa!"
Linh đan đã đúc xong, nhưng làm sao thay thế phiên bản cũ đang chạy trên EC2 mà không làm bá tánh gián đoạn? CodeDeploy sở hữu 3 bí thuật hoán đổi:
- 1. Thuật Đập Đi Xây Lại (In-place): Tắt linh thú cũ, nhét thuốc mới vào, rồi khởi động lại. Cách này gây gián đoạn dịch vụ (Downtime), chỉ dùng cho môi trường Dev/Test.
- 2. Thuật Băng Chuyền (Rolling Update): Cập nhật từng cụm linh thú nhỏ (ví dụ 2/10 con) rồi cuốn chiếu dần. Bá tánh không hề hay biết vì những con còn lại vẫn đang gánh vác tải.
- 3. Tuyệt Kỹ: Cú Lừa Xanh Đỏ (Blue/Green): Tuyệt học tối cao. Dựng lên một bầy linh thú mới tinh (Green) chạy bản mới, sau đó búng tay điều hướng Load Balancer chuyển khách từ bầy cũ (Blue) sang Green lập tức. Rollback tức thời nếu phát hiện tẩu hỏa nhập ma!
Lò bát quái (CodeBuild) và phép tráo đổi (CodeDeploy) dù rất mạnh nhưng vẫn cần một người quản lý để kết nối chúng. Đó là vai trò của AWS CodePipeline:
- Canh giữ Tàng Thư: CodePipeline túc trực ở GitHub. Hễ đệ tử nộp bí kíp mới (
git push), nó lập tức hành động. - Băng chuyền khép kín: Tự động giật lấy code chuyển qua CodeBuild đúc đan, đan ra lò lại ném thẳng cho CodeDeploy tráo đổi lên bầy linh thú.
- Báo cáo phường hội: Hoàn tất trong vài phút, CodePipeline gửi tin nhắn báo công về Slack. Đệ tử chưa pha xong ấm trà, app mới đã xuất hiện trên giang hồ!
| Khâu Luyện Đan | Pháp Bảo AWS | Đối Thủ Phàm Trần | Trách Nhiệm Cốt Lõi |
|---|---|---|---|
| Tàng Thư (Source) | AWS CodeCommit | GitHub, GitLab, Bitbucket | Nơi chứa Code thô, lịch sử các lần tu chỉnh. |
| Đúc Đan (Build) | AWS CodeBuild | Jenkins, GitHub Actions, CircleCI | Chạy compile code, test độc dược, đóng gói Docker. |
| Phát Đan (Deploy) | AWS CodeDeploy | ArgoCD, Spinnaker | Tráo đổi Blue/Green linh thú, Lambda, ECS. |
| Tổng Quản (Pipeline) | AWS CodePipeline | GitLab CI, GitHub Actions | Tổng quản kết nối 3 bước trên chạy tuần tự tự động. |
Con người sinh ra là để mắc lỗi. Việc tay chân là khởi nguồn của tẩu hỏa nhập ma.
Thứ gì lặp lại quá 2 lần, hãy giao nó cho CodePipeline.
Giữ cho tâm trí thanh tịnh để tu luyện đạo lý cốt lõi, phần việc dơ dáy nhọc nhằn, cứ ném cả vào Lò Luyện Đan.