Deploying and Managing Infrastructure at Scale
1. CloudFormation – Infrastructure as Code
CloudFormation cho phép bạn khai báo toàn bộ hạ tầng AWS bằng template (JSON/YAML) thay vì tạo thủ công từng resource.
Lợi ích cốt lõi:
- Infrastructure as Code – mọi thay đổi hạ tầng đều được review qua code, tránh sai sót thủ công
- Cost – mỗi resource được tag tự động, dễ ước tính chi phí; trong môi trường Dev có thể tự động xóa stack lúc 5 PM và tạo lại lúc 8 AM để tiết kiệm
- Productivity – tự động tạo diagram, không cần lo thứ tự tạo resource (CloudFormation tự xử lý dependency)
- Tái sử dụng – dùng lại template có sẵn, deploy lặp lại across nhiều Region & Account
💡 Mở rộng: CloudFormation Stack Designer là công cụ visual giúp bạn thấy tất cả resource và mối quan hệ giữa chúng trong một stack — rất hữu ích khi debug hoặc trình bày kiến trúc.
2. AWS CDK – Cloud Development Kit
Thay vì viết YAML/JSON, CDK cho phép bạn dùng ngôn ngữ lập trình quen thuộc (Python, TypeScript, Java, .NET) để định nghĩa hạ tầng. CDK sẽ compile code của bạn thành CloudFormation template.
Ưu điểm nổi bật:
- Developer có thể deploy cả infrastructure lẫn application code cùng lúc
- Đặc biệt phù hợp với Lambda function và Docker container trên ECS/EKS
- Tận dụng được IDE, autocompletion, unit test
3. Elastic Beanstalk – Platform as a Service (PaaS)
Beanstalk là lớp abstraction bên trên CloudFormation — bạn chỉ cần upload code, Beanstalk tự lo EC2, ASG, ELB, RDS, health monitoring, scaling.
3 mô hình deployment:
- Single Instance – phù hợp môi trường Dev
- LB + ASG – phù hợp Production web app
- ASG only – phù hợp background worker (non-web)
So sánh nhanh CloudFormation vs Beanstalk:
| CloudFormation | Elastic Beanstalk | |
|---|---|---|
| Loại | Infrastructure as Code | Platform as a Service |
| Kiểm soát | Cao, chi tiết | Đơn giản hóa |
| Dùng khi | Kiến trúc phức tạp | Deploy web app nhanh |
💡 Lưu ý thi: Beanstalk miễn phí, bạn chỉ trả tiền cho các resource bên dưới (EC2, RDS…). Beanstalk dùng CloudFormation bên dưới để tạo hạ tầng.
Health Monitoring: Beanstalk có Health Agent chạy trên EC2, đẩy metric lên CloudWatch và phát sinh health event khi có vấn đề.
4. Developer Tools – CI/CD Pipeline
Đây là bộ công cụ hỗ trợ toàn bộ vòng đời phát triển phần mềm:
CodeCommit – Git repository private trên AWS (tương tự GitHub), fully managed, tích hợp sẵn với AWS IAM.
CodeBuild – Build và test code trên cloud, serverless, chỉ trả tiền theo thời gian build thực tế.
CodeDeploy – Tự động deploy application lên EC2 và cả On-Premises server (hybrid). Yêu cầu cài CodeDeploy Agent trước trên server.
CodePipeline – Orchestration layer kết nối toàn bộ pipeline: Code → Build → Test → Provision → Deploy Tích hợp được với GitHub, Jenkins, và nhiều third-party tool.
CodeArtifact – Quản lý software dependency (npm, pip, Maven, NuGet…), thay thế cho việc tự dựng artifact server.
CodeStar – Giao diện thống nhất để setup nhanh toàn bộ pipeline trên, dành cho team muốn bắt đầu nhanh.
Cloud9 – Cloud IDE chạy trên browser, hỗ trợ pair programming real-time, không cần cài đặt gì trên máy cá nhân.
💡 Mở rộng CI/CD: CodePipeline là dịch vụ trung tâm — khi đề thi hỏi về tự động hóa từ code đến production, đáp án thường liên quan đến CodePipeline.
5. AWS Systems Manager (SSM)
Công cụ hybrid giúp quản lý fleet EC2 và On-Premises server ở quy mô lớn.
Tính năng quan trọng nhất:
- Patch Manager – tự động vá lỗi bảo mật trên toàn bộ fleet
- Run Command – chạy lệnh đồng thời trên nhiều server mà không cần SSH
- SSM Parameter Store – lưu trữ configuration, secret (thay thế đơn giản cho Secrets Manager)
- Session Manager – mở shell vào EC2 không cần SSH, không cần port 22, không cần key pair → tăng bảo mật đáng kể
💡 Mở rộng: SSM Agent được cài sẵn trên Amazon Linux AMI. Nếu instance không connect được SSM, kiểm tra ngay SSM Agent và IAM Role của instance.
6. AWS OpsWorks
Dịch vụ managed Chef & Puppet trên AWS — dùng khi tổ chức đã có sẵn workflow Chef/Puppet và muốn tiếp tục dùng trên AWS thay vì chuyển sang SSM.
💡 Ghi nhớ cho thi: Thấy đề đề cập Chef hoặc Puppet → đáp án là OpsWorks.
Tổng kết nhanh – Chọn dịch vụ nào?
| Tình huống | Dịch vụ |
|---|---|
| Tạo hạ tầng bằng code, lặp lại nhiều Region | CloudFormation |
| Developer chỉ muốn deploy app, không lo infra | Elastic Beanstalk |
| Deploy tự động lên EC2 + On-Premises | CodeDeploy |
| Quản lý, patch, chạy lệnh trên nhiều server | SSM |
| Đang dùng Chef/Puppet | OpsWorks |
| Xây CI/CD pipeline end-to-end | CodePipeline |
| Lưu dependency package | CodeArtifact |