Module 35 Career 5 labs

Certification Roadmap và Portfolio

Lập lộ trình chứng chỉ cloud/devops/security/platform (AZ-104, AZ-400, CKA, CKS, Terraform Associate, AWS DevOps Pro), xây dựng GitHub portfolio chứng minh năng lực thực chiến, và chuẩn bị phỏng vấn kỹ thuật cấp cao.

Công cụ thực hành CLI, VS Code, Git, GitHub, Markdown
Nền tảng GitHub, Microsoft Learn, Linux Foundation, Credly
Thời điểm phát hành 23/05/2026
Ngày biên soạn 23/05/2026
Người biên soạn Trần Văn Hòa — Microsoft Certified Trainer (MCT)

Mục tiêu học tập

1. Lý thuyết cốt lõi

1.1. Tại sao certification vẫn quan trọng?

Trong thị trường tuyển dụng cạnh tranh, chứng chỉ giải quyết vấn đề signal credibility: recruiter không có thời gian đánh giá sâu — chứng chỉ là bằng chứng rằng bạn đã vượt một chuẩn được công nhận. Tuy nhiên, chứng chỉ chỉ là điểm vào: portfolio và kinh nghiệm thực tế mới giữ bạn ở lại. Chiến lược tối ưu: cert + project + case study + referral.

1.2. Lộ trình chứng chỉ Cloud & DevOps 2026–2027

Chứng chỉNhà cấpVai trò phù hợpThứ tự ưu tiên
AZ-104MicrosoftAzure Admin / Cloud Ops1 — nền tảng Azure
AZ-400MicrosoftDevOps Engineer Expert2 — sau AZ-104
CKACNCF / Linux FoundationKubernetes Admin3 — nền tảng K8s
CKSCNCF / Linux FoundationK8s Security Specialist4 — sau CKA
Terraform AssociateHashiCorp / IBMIaC / Platform Engineer3–4 — song song CKA
AWS DevOps ProAmazon Web ServicesMulti-cloud / AWS Lead5 — sau AZ-400 + CKA

1.3. Portfolio GitHub chuẩn chuyên nghiệp

Một portfolio kỹ thuật thuyết phục cần 3 lớp:

1.4. Mock Exam Strategy

Nghiên cứu từ DSOP Exam Study Guide và thực tiễn thi chứng chỉ cloud cho thấy chiến lược hiệu quả nhất: spaced repetition + timed practice + weak-area drilling. Quy trình: (1) đọc tài liệu chính thức 1 lần; (2) làm mock exam 1 lần không ôn; (3) phân tích sai → ôn focused; (4) làm lại mock exam sau 3–7 ngày; (5) đạt ≥85% ổn định trước khi đăng ký thi thật.

1.5. Kỹ năng phỏng vấn kỹ thuật cấp senior

Các dạng câu hỏi phổ biến

  • System Design: "Thiết kế CI/CD pipeline cho 50 microservices" — cần vẽ được sơ đồ, giải thích trade-off.
  • Incident Handling: "K8s pod crash loop — debug từng bước" — cần trả lời có cấu trúc: observe → hypothesis → verify → fix.
  • Architecture Trade-off: "Monorepo vs polyrepo, khi nào dùng cái nào?" — cần biết context-dependent reasoning.
  • Behavioral (STAR): "Kể về lần bạn giảm incident rate" — cần số liệu cụ thể.

2. Thực hành (Labs)

LAB-171

Tạo Certification Roadmap cá nhân

CLI · VS Code · Git

🎯 Mục tiêu: Xây dựng file roadmap chứng chỉ cá nhân dạng Markdown + Gantt chart, ưu tiên theo skill gap từ skill matrix (Module 01).

🧰 Công cụ / nền tảng: VS Code + Mermaid extension, Git, GitHub.

📦 Chuẩn bị: Tài khoản GitHub; skill matrix đã điền (Module 01 LAB-003); VS Code với extension "Markdown Preview Mermaid Support".

▶️ Các bước (CLI):

# 1. Tạo repo portfolio nếu chưa có
mkdir ~/devops-portfolio && cd ~/devops-portfolio
git init
git remote add origin https://github.com/<username>/devops-portfolio.git

# 2. Tạo file roadmap
mkdir -p docs
cat > docs/cert-roadmap.md <<'EOF'
# Certification Roadmap 2026–2027

## Mục tiêu: Cloud & DevOps Engineer → Senior

### Lộ trình ưu tiên
1. AZ-104 (Azure Administrator) — Q3 2026
2. CKA (Kubernetes Administrator) — Q4 2026
3. Terraform Associate — Q4 2026
4. AZ-400 (DevOps Engineer Expert) — Q1 2027
5. CKS (Kubernetes Security Specialist) — Q2 2027
6. AWS DevOps Professional — Q3 2027

## Trạng thái hiện tại
| Cert | Trạng thái | Mục tiêu thi | Ghi chú |
|------|-----------|-------------|---------|
| AZ-104 | Đang học | 2026-09 | Microsoft Learn path |
| CKA | Chưa bắt đầu | 2026-12 | killer.sh labs |
| Terraform Associate | Chưa bắt đầu | 2026-12 | HashiCorp tutorials |
EOF

# 3. Thêm Gantt chart vào file
cat >> docs/cert-roadmap.md <<'EOF'

## Gantt Chart

\`\`\`mermaid
gantt
  title Certification Roadmap 2026-2027
  dateFormat YYYY-MM
  section Azure
  AZ-104 Ôn thi       :az104s, 2026-06, 3M
  AZ-104 Thi          :milestone, 2026-09, 0d
  AZ-400 Ôn thi       :az400s, 2026-11, 3M
  AZ-400 Thi          :milestone, 2027-02, 0d
  section Kubernetes
  CKA Học + Labs      :ckas, 2026-08, 4M
  CKA Thi             :milestone, 2026-12, 0d
  CKS Ôn thi          :ckss, 2027-02, 3M
  CKS Thi             :milestone, 2027-05, 0d
  section IaC & Multi-cloud
  Terraform Associate :tfs, 2026-09, 3M
  Terraform Thi       :milestone, 2026-12, 0d
  AWS DevOps Pro      :awss, 2027-04, 3M
  AWS Thi             :milestone, 2027-07, 0d
\`\`\`
EOF

# 4. Commit
git add docs/cert-roadmap.md
git commit -m "feat: add personal certification roadmap 2026-2027"

🖥️ Đối chiếu GUI / Portal:

Trong VS Code: nhấn Ctrl+K V để preview Gantt chart trực tiếp. Trên GitHub: file .md render Mermaid tự động từ phiên bản github.com hiện đại.

✅ Kết quả mong đợi: File docs/cert-roadmap.md có bảng trạng thái + Gantt chart render đúng; ít nhất 6 cột mốc chứng chỉ có ngày cụ thể; roadmap khớp với skill gap đã phân tích.

🧹 Cleanup: Không cần xóa — đây là tài liệu sống, cập nhật định kỳ. Push lên GitHub: git push -u origin main.

LAB-172

Xây dựng GitHub Portfolio — Profile README & Repo Structure

CLI · VS Code · Git · GitHub

🎯 Mục tiêu: Tạo GitHub Profile README chuyên nghiệp (repo <username>/<username>) với tech stack badges, certifications, featured projects và contact info; chuẩn hóa cấu trúc repo portfolio.

🧰 Công cụ / nền tảng: GitHub.com, VS Code, Git, shields.io (badges), GitHub Actions (optional: auto-update stats).

📦 Chuẩn bị: Tài khoản GitHub; cài GitHub CLI (gh auth login đã xong); profile repo chưa tồn tại hoặc muốn làm mới.

▶️ Các bước (CLI + PowerShell):

# 1. Tạo profile repo (tên = GitHub username)
$USERNAME = gh api user --jq '.login'
gh repo create $USERNAME --public --description "GitHub Profile README"

# 2. Clone và tạo README
git clone "https://github.com/$USERNAME/$USERNAME.git"
Set-Location $USERNAME

# 3. Tạo nội dung README.md chuyên nghiệp
@'
# Hi, I am [Your Name] 👋

**Cloud & DevOps Engineer | Microsoft Certified Trainer**

## 🛠 Tech Stack
![Azure](https://img.shields.io/badge/Azure-0078D4?style=flat&logo=microsoftazure&logoColor=white)
![Kubernetes](https://img.shields.io/badge/Kubernetes-326CE5?style=flat&logo=kubernetes&logoColor=white)
![Terraform](https://img.shields.io/badge/Terraform-7B42BC?style=flat&logo=terraform&logoColor=white)
![Docker](https://img.shields.io/badge/Docker-2496ED?style=flat&logo=docker&logoColor=white)
![GitHub Actions](https://img.shields.io/badge/GitHub_Actions-2088FF?style=flat&logo=githubactions&logoColor=white)
![ArgoCD](https://img.shields.io/badge/ArgoCD-EF7B4D?style=flat&logo=argo&logoColor=white)

## 🏆 Certifications
- ✅ AZ-104: Microsoft Azure Administrator
- ✅ AZ-400: Microsoft DevOps Engineer Expert
- 🎯 CKA: Certified Kubernetes Administrator (in progress)

## 🚀 Featured Projects
| Project | Stack | Description |
|---------|-------|-------------|
| [devops-portfolio](https://github.com/USERNAME/devops-portfolio) | Terraform, AKS, ArgoCD | Enterprise IaC + GitOps capstone |
| [k8s-platform-labs](https://github.com/USERNAME/k8s-platform-labs) | K8s, Helm, Prometheus | Platform engineering labs |
| [devsecops-pipeline](https://github.com/USERNAME/devsecops-pipeline) | GitHub Actions, Trivy, OPA | Shift-left security pipeline |

## 📫 Contact
- LinkedIn: [linkedin.com/in/yourprofile](https://linkedin.com/in/yourprofile)
- Email: [email protected]
'@ | Out-File README.md -Encoding UTF8

# 4. Commit và push
git add README.md
git commit -m "feat: create professional GitHub profile README"
git push -u origin main

🖥️ Đối chiếu GUI / Portal:

Truy cập github.com/<username> — profile page sẽ render README.md trực tiếp. Dùng GitHub web editor để chỉnh inline nếu cần.

✅ Kết quả mong đợi: Profile GitHub hiển thị README với badges màu sắc, bảng featured projects có link, certifications list đúng trạng thái thực tế. Repo <username>/<username> public.

🧹 Cleanup: Không xóa — đây là tài sản career quan trọng nhất. Cập nhật mỗi khi đạt cert mới hoặc hoàn thành project.

LAB-173

Viết Project README chuẩn Enterprise

CLI · VS Code · Git · Mermaid

🎯 Mục tiêu: Viết README.md mô tả một dự án thực tế trong portfolio theo chuẩn enterprise: problem statement, kiến trúc, quick start, kết quả đo được, lessons learned.

🧰 Công cụ / nền tảng: VS Code, Git, Mermaid, GitHub.

📦 Chuẩn bị: Repo portfolio từ LAB-172; chọn 1 dự án thực tế (hoặc capstone từ Module 36) để viết README.

▶️ Các bước (CLI):

# 1. Điều hướng đến repo project
cd ~/devops-portfolio

# 2. Tạo README.md với cấu trúc chuẩn enterprise
cat > README.md <<'EOF'
# DevOps Enterprise Capstone — Multi-Cloud GitOps Platform

[![CI/CD](https://github.com/USERNAME/devops-portfolio/actions/workflows/ci.yml/badge.svg)](...)
[![Terraform](https://img.shields.io/badge/IaC-Terraform-7B42BC)](...)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](...)

## 🎯 Problem Statement
Doanh nghiệp có 3 team dev (15 người), deploy thủ công mỗi 2 tuần, MTTR ~4 giờ,
Change Failure Rate 22%. Mục tiêu: giảm lead time xuống <1 ngày, CFR <5%.

## 🏗 Architecture

\`\`\`mermaid
graph TB
  subgraph "Public Cloud (Azure)"
    AKS[AKS Cluster]
    ACR[Container Registry]
    KV[Key Vault]
  end
  subgraph "GitOps Layer"
    GHA[GitHub Actions CI]
    ARGO[ArgoCD]
  end
  subgraph "On-Prem / Private"
    DB[(PostgreSQL)]
    VAULT[HashiCorp Vault]
  end
  DEV[Developer Push] --> GHA
  GHA -->|build + scan| ACR
  GHA -->|update manifests| ARGO
  ARGO -->|sync| AKS
  AKS -->|VPN| DB
  AKS --> KV
\`\`\`

## ⚡ Quick Start
\`\`\`bash
# Prerequisites: az cli, kubectl, terraform, argocd cli
git clone https://github.com/USERNAME/devops-portfolio
cd devops-portfolio/infra
terraform init && terraform apply -auto-approve
kubectl apply -f k8s/argocd/
\`\`\`

## 📊 Kết quả đo được (DORA Metrics)
| Metric | Trước | Sau | Cải thiện |
|--------|-------|-----|-----------|
| Deployment Frequency | 2 tuần/lần | 5 lần/ngày | +1750% |
| Lead Time for Changes | 3 ngày | 45 phút | -96% |
| Change Failure Rate | 22% | 4% | -82% |
| MTTR | 4 giờ | 18 phút | -92% |

## 🔧 Tech Stack
- **IaC:** Terraform (Azure provider)
- **Container:** Docker, AKS (Kubernetes 1.30)
- **CI:** GitHub Actions (build, lint, SAST, image scan)
- **CD/GitOps:** ArgoCD
- **Security:** Trivy, OPA/Gatekeeper, Vault
- **Observability:** Prometheus, Grafana, Loki

## 📚 Lessons Learned
1. GitOps giảm đáng kể toán tử manual; nhưng cần chuẩn hóa manifest từ đầu.
2. Secret management là bottleneck lớn nhất — Vault integration cần plan sớm.
3. DORA metrics nên đo từ ngày 1, không phải sau khi xong.
EOF

# 3. Commit
git add README.md
git commit -m "docs: add enterprise-grade project README with architecture diagram"
git push

🖥️ Đối chiếu GUI / Portal:

Truy cập GitHub repo → xem README render trực tiếp. Mermaid diagram hiển thị inline trên github.com. Badges CI/CD hiển thị trạng thái build thời gian thực.

✅ Kết quả mong đợi: README có đủ 6 mục (problem, architecture, quick start, metrics, stack, lessons); Mermaid diagram render đúng; bảng DORA metrics có số liệu cụ thể (không dùng placeholder).

🧹 Cleanup: Không xóa. Chia sẻ link repo trong phỏng vấn hoặc LinkedIn.

LAB-174

Mock Interview — DevOps Technical Q&A Bank

CLI · VS Code · Git

🎯 Mục tiêu: Xây dựng bộ câu hỏi phỏng vấn kỹ thuật có câu trả lời mẫu theo chuẩn STAR; tự mock interview 30 phút được ghi lại để tự review.

🧰 Công cụ / nền tảng: VS Code, Git, bash script (timer), tùy chọn: OBS/Loom để quay màn hình.

📦 Chuẩn bị: Repo portfolio từ LAB-172; đã hoàn thành ít nhất 2 project thực tế có thể trình bày.

▶️ Các bước (CLI):

# 1. Tạo thư mục interview prep
mkdir -p ~/devops-portfolio/interview
cd ~/devops-portfolio/interview

# 2. Tạo Q&A bank
cat > technical-qa-bank.md <<'EOF'
# DevOps Technical Interview Q&A Bank

## System Design
**Q: Thiết kế CI/CD pipeline cho 50 microservices — trình bày kiến trúc?**
A: Phân tích context (ngôn ngữ, cloud, team size) → chọn strategy (trunk-based / gitflow)
→ CI: GitHub Actions với matrix build; cache layers; parallel jobs per service.
CD: ArgoCD App of Apps pattern; environment promotion qua Pull Request;
GitOps repo tách biệt với app repo để audit trail rõ ràng.
Trade-off: monorepo vs polyrepo → monorepo với Nx/Turborepo nếu team nhỏ,
polyrepo nếu domain boundaries rõ.

## Incident Handling
**Q: K8s pod đang crash loop — bạn debug như thế nào?**
A: Step 1: kubectl get pods -n <ns> — xem status, restart count, age.
Step 2: kubectl describe pod <name> — xem Events section (OOMKilled? CrashLoopBackOff?).
Step 3: kubectl logs <pod> --previous — log của lần crash trước.
Step 4: Kiểm tra resource limits (CPU/memory), liveness probe config, image digest.
Step 5: Nếu OOMKilled → tăng memory limit hoặc profile memory leak.

## Architecture Trade-off
**Q: Khi nào dùng Kubernetes, khi nào dùng serverless?**
A: K8s: stateful workloads, long-running services, cần fine-grained control, team đủ lớn.
Serverless (Azure Functions/AWS Lambda): event-driven, bursty traffic, time-to-market ưu tiên,
không muốn manage infra. Multi-cloud: dùng Knative trên K8s để portable serverless.

## Behavioral (STAR)
**Q: Kể về lần bạn giảm incident rate đáng kể trong project?**
S: Hệ thống production crash 3 lần/tháng; MTTR 4 giờ; team mất niềm tin vào deploy.
T: Phải giảm CFR từ 22% xuống <5% trong 3 tháng.
A: Implement shift-left testing (unit + integration trong CI); thêm Trivy scan;
rollout strategy canary với tự động rollback; blameless postmortem sau mỗi incident.
R: CFR giảm xuống 4%; MTTR từ 4 giờ → 18 phút; team tự tin deploy daily.
EOF

# 3. Tạo mock interview timer script (bash)
cat > mock-interview-timer.sh <<'EOF'
#!/usr/bin/env bash
QUESTIONS=(
  "Thiết kế CI/CD pipeline cho 50 microservices (5 phút)"
  "K8s pod crash loop — debug steps (3 phút)"
  "Khi nào dùng K8s vs serverless? (3 phút)"
  "STAR: lần bạn giảm incident rate (4 phút)"
  "Giải thích GitOps vs CI/CD truyền thống (3 phút)"
)
for q in "${QUESTIONS[@]}"; do
  echo ""
  echo "=== CÂU HỎI: $q ==="
  echo "Nhấn Enter khi sẵn sàng bắt đầu trả lời..."
  read -r
  START=$(date +%s)
  echo "Bắt đầu! Nhấn Enter khi xong..."
  read -r
  END=$(date +%s)
  echo "Thời gian trả lời: $((END-START)) giây"
done
echo ""
echo "Mock interview hoàn thành! Review lại câu trả lời."
EOF
chmod +x mock-interview-timer.sh

# 4. Chạy mock interview
bash mock-interview-timer.sh

# 5. Commit
git add interview/
git commit -m "feat: add technical interview Q&A bank and mock timer script"
git push

🖥️ Đối chiếu GUI / CMD:

Trên Windows: chạy timer script trong Git Bash. Hoặc dùng PowerShell: Measure-Command { Read-Host "Sẵn sàng?" } để đo thời gian từng câu.

✅ Kết quả mong đợi: File technical-qa-bank.md có ít nhất 5 câu hỏi + câu trả lời đầy đủ; mock interview hoàn thành trong 20–30 phút; mỗi câu trả lời ≤5 phút.

🧹 Cleanup: Giữ Q&A bank, cập nhật thêm câu hỏi sau mỗi phỏng vấn thực tế.

LAB-175

Mock Exam Plan — Spaced Repetition & Weak-Area Tracker

CLI · PowerShell · Git · CSV

🎯 Mục tiêu: Tạo mock exam tracker (CSV + PowerShell) theo chiến lược spaced repetition; phân tích weak areas từ mock exam results; lập study sprint plan.

🧰 Công cụ / nền tảng: PowerShell, CSV, VS Code, Git. Mock exam platforms: Microsoft Learn (AZ-104/400), killer.sh (CKA/CKS), Terraform Practice Exams.

📦 Chuẩn bị: Tài khoản Microsoft Learn; tài khoản killer.sh (free 2 sessions đi kèm exam voucher CNCF).

▶️ Các bước (PowerShell):

# 1. Tạo mock exam tracker CSV (PowerShell)
$tracker = @(
  [PSCustomObject]@{Date="2026-06-01"; Cert="AZ-104"; Attempt=1; Score=62; Target=85; WeakAreas="Networking,Storage,Identity"},
  [PSCustomObject]@{Date="2026-06-08"; Cert="AZ-104"; Attempt=2; Score=71; Target=85; WeakAreas="Networking,RBAC"},
  [PSCustomObject]@{Date="2026-06-15"; Cert="AZ-104"; Attempt=3; Score=79; Target=85; WeakAreas="VNet peering"},
  [PSCustomObject]@{Date="2026-06-22"; Cert="AZ-104"; Attempt=4; Score=87; Target=85; WeakAreas="Passed!"}
)
$tracker | Export-Csv -Path mock-exam-tracker.csv -NoTypeInformation -Encoding UTF8

# 2. Phân tích weak areas
$data = Import-Csv mock-exam-tracker.csv
Write-Host "=== Mock Exam Progress ===" -ForegroundColor Cyan
$data | Format-Table Date, Cert, Attempt, Score, Target, WeakAreas -AutoSize

# Tính average score
$avg = ($data | Measure-Object -Property Score -Average).Average
Write-Host "Average Score: $([math]::Round($avg,1))%" -ForegroundColor Yellow

# Highlight weak areas
$weakAreas = $data | Where-Object { [int]$_.Score -lt [int]$_.Target } |
  Select-Object -ExpandProperty WeakAreas
Write-Host "`n=== Weak Areas to Focus ===" -ForegroundColor Red
$weakAreas -split "," | Group-Object | Sort-Object Count -Descending |
  Format-Table Name, Count -AutoSize

# 3. Tạo study sprint plan
$sprint = @(
  [PSCustomObject]@{Week="W1"; Focus="VNet/Subnet/NSG/Peering"; Resource="MS Learn AZ-104 Path 3"; Hours=6},
  [PSCustomObject]@{Week="W2"; Focus="Azure Storage + Replication"; Resource="MS Learn AZ-104 Path 4"; Hours=5},
  [PSCustomObject]@{Week="W3"; Focus="Identity/RBAC/AD"; Resource="MS Learn AZ-104 Path 5"; Hours=6},
  [PSCustomObject]@{Week="W4"; Focus="Full mock exam x2"; Resource="MeasureUp / Whizlabs"; Hours=4}
)
$sprint | Export-Csv -Path study-sprint.csv -NoTypeInformation -Encoding UTF8
$sprint | Format-Table -AutoSize

# 4. Commit all
git add mock-exam-tracker.csv study-sprint.csv
git commit -m "feat: add mock exam tracker and study sprint plan"
git push

🖥️ Đối chiếu GUI:

Mở mock-exam-tracker.csv bằng Excel → tạo biểu đồ Line Chart theo Score/Attempt để visualize tiến trình. Tạo Conditional Formatting: xanh nếu Score ≥ Target, đỏ nếu chưa đạt.

✅ Kết quả mong đợi: CSV tracker có ≥4 lần thi mock; output PowerShell liệt kê weak areas theo tần suất; study sprint plan có lịch 4 tuần rõ ràng; điểm thi tăng dần qua các lần.

🧹 Cleanup: Giữ tracker, cập nhật sau mỗi lần làm mock exam thật. Thi thật khi đạt ≥85% ổn định trong 2 lần liên tiếp.

3. Tình huống doanh nghiệp thực tế

Bối cảnh

Một kỹ sư DevOps mid-level muốn thăng tiến lên Senior/Lead sau 12 tháng. Hiện có 3 năm kinh nghiệm nhưng chưa có chứng chỉ và portfolio GitHub còn thưa thớt. Hiring manager yêu cầu: AZ-400 hoặc CKA + portfolio công khai + case study có số liệu.

Chiến lược thực tế

  • Tháng 1–3: Làm AZ-104 (nền tảng) → portfolio README + 2 repo project đầu tiên (IaC + CI/CD).
  • Tháng 4–6: Thi AZ-400 → hoàn thiện capstone project (Module 36) → viết case study STAR đầy đủ.
  • Tháng 7–9: CKA + mock interview 2 lần/tuần → nhận referral từ network.
  • Tháng 10–12: Apply 10–15 JD phù hợp; dùng portfolio + cert + case study làm bằng chứng trong phỏng vấn.
  • Kết quả thực tế: Các kỹ sư áp dụng chiến lược này báo cáo tỷ lệ callback tăng 3–5x so với chỉ ghi kinh nghiệm trên CV.

📚 Nguồn tham khảo

Module 34: Governance & Compliance Module 36: Full Enterprise Capstone
Zalo