Learning Outcome & Exercises: Git, CI/CD & Cloud
Tổng kết chương Git, CI/CD & Cloud: 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/devops.
1. Mục tiêu đầu ra
Học xong chương này, bạn tự làm được:
- Viết pipeline lint → test → build image → deploy có gate chất lượng.
- Triển khai zero-downtime và rollback được trong vài phút.
- Quản lý hạ tầng bằng Terraform có plan được review.
2. Basic: Git recovery
Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành
Tạo tình huống rebase hỏng / commit nhầm và khôi phục bằng reflog; ghi lại lệnh.
Bài liên quan: Git: merge, rebase, khôi phục
Hoàn thành khi:
- Script tái hiện + khôi phục
3. Intermediate: CI pipeline
Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành
GitHub Actions cho repo labs: build + test mọi module đã triển khai; fail khi test fail.
Bài liên quan: CI pipeline, CD & zero-downtime
Hoàn thành khi:
- Workflow chạy trên GitHub (chưa có remote → TODO)
- Badge trạng thái
4. Challenge: Terraform + cloud
Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành
Terraform tạo môi trường nhỏ (VPC/container service) với remote state; chỉ plan, không apply nếu chưa có tài khoản.
Bài liên quan: Terraform, AWS, Azure
Hoàn thành khi:
- terraform plan output
- Không có credential trong repo
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 | Git recovery | ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành | — |
| Intermediate | CI pipeline | ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành | — |
| Challenge | Terraform + cloud | ⬜ 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/devops. 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ề Git, CI/CD & Cloud, câu nào hay gặp nhất và trả lời sao?
Q1. Deploy zero-downtime cần những gì?
🇻🇳 Tiếng Việt:
Rolling hoặc blue-green, readiness probe để chỉ nhận traffic khi sẵn sàng, graceful shutdown để xử lý xong request đang chạy, và thay đổi database tương thích ngược (expand–contract).
🇬🇧 English:
A rolling or blue-green rollout, a readiness probe so new instances only get traffic when ready, graceful shutdown to finish in-flight requests, and backward-compatible database changes using expand and contract.
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 (Git recovery) được coi là xong khi nào?
Script tái hiện + khôi phục. Chưa có code chạy và bằng chứng thì chưa tính là xong.
Bài tập Intermediate (CI pipeline) được coi là xong khi nào?
Workflow chạy trên GitHub (chưa có remote → TODO); Badge trạng thái. Chưa có code chạy và bằng chứng thì chưa tính là xong.
Bài tập Challenge (Terraform + cloud) được coi là xong khi nào?
terraform plan output; Không có credential trong repo. Chưa có code chạy và bằng chứng thì chưa tính là xong.