Learning Outcome & Exercises: AWS (SAA-C03 & thực chiến)
Tổng kết chương AWS (SAA-C03 & thực chiến): học xong mình phải làm được gì, và làm bài tập nào để chứng minh?
Đọc hiểu chưa đủ để đi phỏng vấn. Mỗi chương kết thúc bằng những việc làm được và chứng minh được: có code chạy, có test cho cả trường hợp lỗi, có log hoặc số đo. Bài tập nằm trong repo riêng java-backend-interview-labs, thư mục labs/aws.
1. Mục tiêu đầu ra
Học xong chương này, bạn tự làm được:
- Dựng được VPC 2 AZ (public/private subnet, NAT, SG) và đưa shop-app lên EC2/ECS sau ALB + Auto Scaling bằng AWS CLI, có script dọn tài nguyên.
- Thiết kế IAM theo least privilege: role cho app (không access key), AssumeRole cho người, giải thích được policy evaluation.
- Chọn đúng dịch vụ dữ liệu (RDS Multi-AZ/Read Replica, DynamoDB, ElastiCache, S3 storage class) theo yêu cầu RTO/RPO, latency và chi phí.
- Nối Spring Boot với S3, SQS, Secrets Manager, CloudWatch qua AWS SDK v2 / Spring Cloud AWS và giải thích credential chain.
- Đọc một câu hỏi SAA-C03 dạng tình huống, nhận ra từ khóa và loại đáp án sai có lý do.
2. Basic: Nền tảng: IAM + VPC + EC2
Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành
Làm lab 22.1–22.4: tài khoản lab với MFA, profile shop-lab, Budget; dựng shop-vpc; chạy shop-app.jar trên EC2 bằng user data và instance profile. Lưu script tạo/dọn trong labs/aws/basic.
Bài liên quan: Tài khoản, IAM cơ bản, CLI, Budget, IAM sâu: policy evaluation, AssumeRole, SCP, VPC: subnet, NAT, SG vs NACL, endpoint, EC2: instance, AMI, EBS, pricing
Hoàn thành khi:
- Script CLI tạo và xóa toàn bộ chạy được 2 lần liên tiếp
- curl /actuator/health trả 200 qua public IP
- Ảnh chụp Budget alert và policy simulator
3. Intermediate: Ứng dụng HA: ALB + ASG + RDS + S3 + SQS
Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành
Shop-app chạy 2 instance sau ALB, kết nối RDS PostgreSQL (password trong Secrets Manager), upload ảnh lên S3 bằng presigned URL, phát sự kiện đơn hàng qua SQS có DLQ; log vào CloudWatch và alarm 5xx.
Bài liên quan: ELB & Auto Scaling, S3: storage class, lifecycle, bảo mật, RDS & Aurora, SQS, SNS, EventBridge, KMS, Secrets Manager, mã hóa, CloudWatch, CloudTrail, X-Ray
Hoàn thành khi:
- Terminate 1 instance, ALB vẫn trả 200 và ASG thay instance trong vài phút (log kèm timestamp)
- Message lỗi 3 lần rơi vào DLQ (ảnh chụp)
- Không có access key trong code/config
4. Challenge: Kiến trúc tham chiếu + DR + cost
Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành
Chuyển shop-app sang ECS Fargate, bật S3 Cross-Region Replication và AWS Backup, chạy Cost Explorer theo tag Project=shop-app, viết ADR 1 trang chọn kiến trúc theo 6 pillar Well-Architected; làm 1 bộ đề mẫu SAA và ghi lại câu sai.
Bài liên quan: ECR, ECS Fargate, EKS, DR, backup & migration, Tối ưu chi phí, Well-Architected & kiến trúc shop-app, Chiến lược thi SAA-C03
Hoàn thành khi:
- Rolling deploy ECS không rớt request (k6 hoặc curl loop)
- Báo cáo chi phí 1 tuần theo tag
- ADR + bảng điểm đề mẫu ≥ 70% kèm ghi chú câu sai
5. Tiêu chí hoàn thành chung
- Tự giải thích được bài toán và vì sao chọn giải pháp.
- Code chạy được bằng lệnh ghi trong README, không chứa secret.
- Có test tự động cho happy path và failure path.
- Có log hoặc số đo trong
evidence/chứng minh kết quả. - Có câu trả lời phỏng vấn ngắn bằng tiếng Việt và tiếng Anh.
- README của lab có link ngược về bài học tương ứng.
6. Lab và trạng thái
| Mức | Bài tập | Trạng thái | Test / bằng chứng |
|---|---|---|---|
| Basic | Nền tảng: IAM + VPC + EC2 | ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành | — |
| Intermediate | Ứng dụng HA: ALB + ASG + RDS + S3 + SQS | ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành | — |
| Challenge | Kiến trúc tham chiếu + DR + cost | ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành | — |
Repo lab: java-backend-interview-labs/labs/aws. TODO: link GitHub là placeholder cho tới khi repo được push.
evidence/; chỉ đánh dấu xong khi có bằng chứng.Phỏng vấn hỏi về AWS (SAA-C03 & thực chiến), câu nào hay gặp nhất và trả lời sao?
Q1. Bạn đưa một ứng dụng Spring Boot lên AWS production thế nào để vừa an toàn vừa chịu lỗi?
🇻🇳 Tiếng Việt:
Em đặt app trong private subnet trải 2 AZ, chạy trên ECS Fargate hoặc ASG sau ALB, DB dùng RDS Multi-AZ, cache ElastiCache, file lên S3. App lấy quyền qua IAM role chứ không có access key, secret để trong Secrets Manager, log và alarm trên CloudWatch. Mọi thứ tạo bằng IaC và gắn tag để theo dõi chi phí.
🇬🇧 English:
I run the app in private subnets across two AZs, on ECS Fargate or an Auto Scaling group behind an ALB, with RDS Multi-AZ for the database, ElastiCache for caching and S3 for files. The app gets permissions through an IAM role instead of access keys, secrets live in Secrets Manager, and logs and alarms go to CloudWatch. Everything is created with IaC and tagged for cost tracking.
Cách nhớ ngắn gọn
- Mỗi bài tập = code + test + log.
- Luôn có ít nhất một failure case.
- Chưa có bằng chứng thì chưa xong.
Tự kiểm tra
Bài tập Basic (Nền tảng: IAM + VPC + EC2) được coi là xong khi nào?
Script CLI tạo và xóa toàn bộ chạy được 2 lần liên tiếp; curl /actuator/health trả 200 qua public IP; Ảnh chụp Budget alert và policy simulator. Chưa có code chạy và bằng chứng thì chưa tính là xong.
Bài tập Intermediate (Ứng dụng HA: ALB + ASG + RDS + S3 + SQS) được coi là xong khi nào?
Terminate 1 instance, ALB vẫn trả 200 và ASG thay instance trong vài phút (log kèm timestamp); Message lỗi 3 lần rơi vào DLQ (ảnh chụp); Không có access key trong code/config. Chưa có code chạy và bằng chứng thì chưa tính là xong.
Bài tập Challenge (Kiến trúc tham chiếu + DR + cost) được coi là xong khi nào?
Rolling deploy ECS không rớt request (k6 hoặc curl loop); Báo cáo chi phí 1 tuần theo tag; ADR + bảng điểm đề mẫu ≥ 70% kèm ghi chú câu sai. Chưa có code chạy và bằng chứng thì chưa tính là xong.