Skip to main content

Command Palette

Search for a command to run...

Syllabus GCP DevOps

Updated
34 min readView as Markdown

KHỐI 0 - Nền tảng bắt buộc (Ngày 1–5)

Ngày 1: Linux fundamentals cho cloud engineer

  • Mục tiêu: Debug được một VM/container "bằng tay" khi mọi dashboard đều im lặng.

  • Lý thuyết: Process lifecycle, filesystem hierarchy, iptables cơ bản, systemd unit/service management.

  • Thực hành: SSH vào 1 Compute Engine VM, dùng ps, top, journalctl, iptables -L để kiểm tra 1 service đang chạy và log của nó.

Ngày 2: Networking fundamentals

  • Mục tiêu: Hiểu request đi từ browser đến server qua những bước nào.

  • Lý thuyết: TCP/IP stack, DNS resolution, TLS/SSL handshake cơ bản, L4 vs L7 load balancing, CDN caching.

  • Thực hành: Dùng dig, curl -v, openssl s_client để trace 1 request HTTPS thật từ DNS lookup đến TLS handshake.

Ngày 3: Container & Kubernetes cơ bản

  • Mục tiêu: Nắm vững building block trước khi học sâu K8s ở khối sau.

  • Lý thuyết: Image layer & registry, container runtime (containerd), pod/deployment/service/ingress object model.

  • Thực hành: Build 1 Docker image, push lên Artifact Registry, deploy lên GKE bằng kubectl apply thủ công (chưa dùng CI/CD).

Ngày 4: Git nâng cao

  • Mục tiêu: Thao tác Git thành thạo để làm việc nhóm mà không phá lịch sử code.

  • Lý thuyết: Rebase vs merge, git bisect để tìm commit gây bug, worktree, trunk-based development vs gitflow.

  • Thực hành: Tự tạo 1 bug giả trong repo, dùng git bisect tìm ra commit gây lỗi; thực hành rebase interactive để dọn 5 commit thành 1.

Ngày 5: Đọc một hệ thống distributed đơn giản

  • Mục tiêu: Có trực giác về consensus/replication trước khi học lý thuyết chính thức ở khối sau.

  • Lý thuyết: Tổng quan kiến trúc Redis (single-thread, replication) hoặc etcd (Raft-based).

  • Thực hành: Đọc phần "Replication" trong docs Redis, tự dựng 1 master-replica Redis local và quan sát dữ liệu đồng bộ.

KHỐI 1 - Thiết kế ứng dụng cloud-native (Ngày 6–12)

Ngày 6: Chọn platform đúng bài toán

  • Mục tiêu: Quyết định Compute Engine vs GKE vs Cloud Run dựa trên dữ liệu, không theo cảm tính.

  • Lý thuyết: Cold start, cost model, control-plane overhead của từng platform; khi nào cần full control (Compute Engine) vs khi nào cần tốc độ ship (Cloud Run).

  • Thực hành: Deploy cùng 1 app lên cả Cloud Run và GKE, so sánh cold start time và cost ước tính cho cùng traffic pattern.

Ngày 7: API design

  • Mục tiêu: Thiết kế API bền vững, không phải sửa breaking change liên tục.

  • Lý thuyết: REST vs gRPC tradeoff, versioning strategy (URL/header), Apigee/Cloud API Gateway cho rate limiting & auth.

  • Thực hành: Thiết kế 1 API versioned (/v1/...), cấu hình Cloud API Gateway giới hạn rate limit theo API key.

Ngày 8: Kiến trúc event-driven

  • Mục tiêu: Biết khi nào nên và không nên dùng async.

  • Lý thuyết: Pub/Sub, Eventarc, Workflows, Cloud Tasks, Cloud Scheduler - và rủi ro khi dùng async cho path cần latency thấp.

  • Thực hành: Dựng 1 luồng: Cloud Run nhận request → publish Pub/Sub → Eventarc trigger 1 Cloud Function xử lý background.

Ngày 9: Data layer selection

  • Mục tiêu: Chọn đúng database ngay từ đầu, tránh migrate đau đớn sau này.

  • Lý thuyết: AlloyDB/Spanner (structured, strong consistency) vs Bigtable/Firestore (unstructured, tunable consistency) - CAP tradeoff thực tế.

  • Thực hành: Viết 1 bảng so sánh cho chính app của bạn: loại dữ liệu, tần suất đọc/ghi, yêu cầu consistency → chọn database phù hợp và giải thích lý do.

Ngày 10: Failover, session affinity, caching

  • Mục tiêu: Thiết kế cho failure ngay từ đầu, không đợi sự cố mới vá.

  • Lý thuyết: Zonal vs regional failover, session affinity cho content delivery, caching layer với Memorystore.

  • Thực hành: Bật session affinity trên Cloud Run/GKE service, đo hiệu quả caching bằng Memorystore trước/sau cho 1 endpoint đọc nhiều.

Ngày 11: Capacity modeling & load test

  • Mục tiêu: Biết giới hạn hệ thống trước khi user báo lỗi.

  • Lý thuyết: Ước lượng QPS, P99 latency budget, cách đọc kết quả load test để suy ra bottleneck.

  • Thực hành: Viết script k6/Locust load test cho app của bạn, tìm điểm gãy (breaking point) về throughput.

Ngày 12: Multi-region design

  • Mục tiêu: Quyết định đúng mức độ multi-region cần thiết, tránh over-engineering.

  • Lý thuyết: Active-active vs active-passive, chi phí/độ phức tạp tăng theo cấp số nhân khi thêm region.

  • Thực hành: Vẽ kiến trúc active-passive cho app của bạn (region chính + region backup), liệt kê rõ điều kiện nào mới cần active-active thật.

KHỐI 2 - Bảo mật ứng dụng (Ngày 13–17)

Ngày 13: Vulnerability detection & protection

  • Mục tiêu: Có lớp phòng vệ tự động phát hiện lỗ hổng trước khi bị khai thác.

  • Lý thuyết: Identity-Aware Proxy (IAP), Web Security Scanner, Artifact Analysis, Security Command Center tổng quan.

  • Thực hành: Bật Web Security Scanner cho 1 app test, đọc kết quả finding và fix ít nhất 1 lỗ hổng được phát hiện.

Ngày 14: Secret & key lifecycle

  • Mục tiêu: Không bao giờ để secret nằm trong code hoặc env var lộ thiên.

  • Lý thuyết: Secret Manager, Cloud KMS, Workload Identity Federation thay cho service account key file.

  • Thực hành: Chuyển 1 app đang hardcode secret sang dùng Secret Manager + Workload Identity Federation, xoá hết credential file khỏi repo.

Ngày 15: Authentication mechanisms

  • Mục tiêu: Chọn đúng cơ chế auth cho từng loại service (user-facing vs service-to-service).

  • Lý thuyết: Application Default Credentials, JWT, OAuth 2.0, Cloud SQL/AlloyDB Auth Proxy, Identity Platform.

  • Thực hành: Cấu hình app kết nối Cloud SQL qua Auth Proxy thay vì IP + password, verify kết nối chỉ hoạt động qua IAM identity.

Ngày 16: Service-to-service security & supply chain

  • Mục tiêu: Đảm bảo service chỉ giao tiếp với service được phép, và chỉ chạy image đáng tin.

  • Lý thuyết: Cloud Service Mesh, Kubernetes NetworkPolicy, least privilege IAM, Binary Authorization.

  • Thực hành: Viết 1 NetworkPolicy chặn pod A giao tiếp trực tiếp với pod C (chỉ được qua B), test bằng kubectl exec + curl.

Ngày 17: Threat modeling thực chiến

  • Mục tiêu: Chủ động tìm điểm yếu bảo mật thay vì đợi bị hack mới biết.

  • Lý thuyết: STRIDE framework (Spoofing, Tampering, Repudiation, Info disclosure, DoS, Elevation of privilege).

  • Thực hành: Áp STRIDE lên chính app của bạn, liệt kê ít nhất 5 threat cụ thể và mitigation tương ứng; làm thêm 1 lab giả lập leaked service account key.

KHỐI 3 - Lưu trữ & truy cập dữ liệu (Ngày 18–21)

Ngày 18: Schema design

  • Mục tiêu: Thiết kế schema đúng ngay từ đầu cho từng loại database.

  • Lý thuyết: Structured schema (AlloyDB, Spanner) vs unstructured/denormalized (Bigtable, Firestore).

  • Thực hành: Thiết kế schema Firestore cho 1 use case đọc nhiều-ghi ít (denormalize hợp lý) và schema Spanner cho use case cần transaction.

Ngày 19: Consistency implications

  • Mục tiêu: Không bị bất ngờ khi dữ liệu "chưa kịp đồng bộ" trong production.

  • Lý thuyết: Eventual vs strongly consistent replication trên AlloyDB, Bigtable, Cloud SQL, Spanner, Cloud Storage.

  • Thực hành: Viết 1 kịch bản test: ghi dữ liệu rồi đọc lại ngay lập tức từ Firestore, quan sát trường hợp có thể đọc thấy dữ liệu cũ.

Ngày 20: Signed URL & BigQuery integration

  • Mục tiêu: Cấp quyền truy cập tạm thời an toàn và đẩy dữ liệu vào pipeline phân tích.

  • Lý thuyết: Cơ chế signed URL cho Cloud Storage, pattern ghi dữ liệu sang BigQuery cho analytics/AI/ML.

  • Thực hành: Tạo signed URL có thời hạn 15 phút cho 1 object private, viết 1 job đẩy dữ liệu batch từ app sang BigQuery.

Ngày 21: Migration & backup/restore drill

  • Mục tiêu: Đảm bảo bạn có thể thay đổi schema hoặc phục hồi dữ liệu mà không gây downtime/mất dữ liệu.

  • Lý thuyết: Dual-write pattern, backfill, cutover cho migration không downtime; PITR concept cho backup.

  • Thực hành: Tự tay restore 1 database từ backup sang instance mới, đo RTO/RPO thực tế đạt được.

KHỐI 4 - Build & Test (Ngày 22–25)

Ngày 22: Development environment setup

  • Mục tiêu: Dev local giống production nhất có thể, giảm bug "chạy máy tôi thì được".

  • Lý thuyết: Emulate Google Cloud service bằng gcloud CLI cho local testing, Cloud Code, Cloud Workstations.

  • Thực hành: Cấu hình local emulator cho Pub/Sub hoặc Firestore, viết 1 unit test chạy hoàn toàn offline dựa trên emulator.

Ngày 23: Cloud Build & Artifact Registry

  • Mục tiêu: Có pipeline build container tự động, có provenance để truy vết.

  • Lý thuyết: Cloud Build config, Artifact Registry lưu container, provenance cho Binary Authorization.

  • Thực hành: Viết cloudbuild.yaml build image từ source, push vào Artifact Registry, bật provenance.

Ngày 24: Unit test & integration test tự động

  • Mục tiêu: Có safety net để refactor không sợ vỡ.

  • Lý thuyết: Viết unit test có hỗ trợ AI coding assistant, chạy integration test tự động trong Cloud Build.

  • Thực hành: Viết 5 unit test cho 1 module nghiệp vụ (dùng AI assistant gợi ý case biên), thêm bước integration test vào cloudbuild.yaml.

Ngày 25: Testing pyramid & flaky test

  • Mục tiêu: Cân bằng đúng tỷ lệ test, không lãng phí thời gian debug test tự dưng fail.

  • Lý thuyết: Testing pyramid (unit nhiều, integration vừa, e2e ít), contract testing (Pact) giữa các service, nguyên nhân phổ biến gây flaky test.

  • Thực hành: Audit bộ test hiện có của bạn theo tỷ lệ pyramid, tìm và fix 1 flaky test thật (thường do race condition hoặc phụ thuộc thời gian).

KHỐI 5 - Deploy ứng dụng (Ngày 26–29)

Ngày 26: Deploy Cloud Run

  • Mục tiêu: Nắm vững cách trigger và invoke Cloud Run service đúng cách.

  • Lý thuyết: Deploy từ source, invoke qua Eventarc/Pub/Sub trigger, configure event receiver.

  • Thực hành: Deploy 1 service Cloud Run trực tiếp từ source code (gcloud run deploy --source), gắn Eventarc trigger từ Cloud Storage event.

Ngày 27: Deploy GKE

  • Mục tiêu: Đảm bảo pod tự phục hồi và scale đúng theo tải.

  • Lý thuyết: Kubernetes health checks (readiness/liveness), Horizontal Pod Autoscaler dựa trên metric.

  • Thực hành: Cấu hình readiness/liveness probe đúng cách cho 1 deployment, cấu hình HPA scale theo CPU và test bằng load generator.

Ngày 28: Progressive delivery

  • Mục tiêu: Giảm rủi ro khi release tính năng mới.

  • Lý thuyết: Feature flag service, kill switch, dark launch - tách việc "deploy code" khỏi "bật tính năng".

  • Thực hành: Tích hợp 1 feature flag đơn giản (tự viết hoặc dùng thư viện open-source) để bật/tắt 1 tính năng không cần deploy lại.

Ngày 29: Zero-downtime deploy

  • Mục tiêu: Deploy giữa giờ cao điểm mà user không nhận ra gì đã xảy ra.

  • Lý thuyết: Connection draining, graceful shutdown (xử lý SIGTERM đúng cách), traffic splitting khi rollout.

  • Thực hành: Thêm SIGTERM handler vào app (đóng connection đang xử lý trước khi thoát), test bằng cách deploy trong lúc có traffic liên tục và đo request lỗi (phải bằng 0).

KHỐI 6 - Tích hợp Google Cloud services (Ngày 30–33)

Ngày 30: Kết nối datastore

  • Mục tiêu: Quản lý connection tới nhiều loại datastore một cách nhất quán.

  • Lý thuyết: Managing connections tới Cloud SQL, Firestore, Cloud Storage; connection pooling ở tầng application.

  • Thực hành: Viết 1 module kết nối dùng chung (connection pool) cho Cloud SQL, test dưới tải đồng thời.

Ngày 31: Messaging integration

  • Mục tiêu: Publish/consume message đúng pattern, không mất message.

  • Lý thuyết: Publish/subscribe pattern với Pub/Sub, acknowledge deadline, dead-letter topic.

  • Thực hành: Viết 1 publisher và 1 consumer, cấu hình dead-letter topic cho message xử lý fail quá 5 lần.

Ngày 32: Gọi Cloud API đúng cách

  • Mục tiêu: Gọi API hiệu quả, không tốn quota/cost oan.

  • Lý thuyết: Batching request, restricting return field, pagination, caching kết quả, exponential backoff khi lỗi, dùng service account cho API call.

  • Thực hành: Viết 1 client gọi Cloud API có exponential backoff + retry, restrict field trả về để giảm payload.

Ngày 33: Troubleshooting & idempotency

  • Mục tiêu: Debug nhanh khi có lỗi, và thiết kế chịu được duplicate message.

  • Lý thuyết: Dùng metrics/logs/traces trong Google Cloud Observability, Error Reporting, trace ID correlation; idempotency design cho consumer chịu retry/duplicate.

  • Thực hành: Thêm idempotency key vào 1 API xử lý thanh toán/đơn hàng giả lập, test gửi trùng request và verify không bị xử lý 2 lần.

KHỐI 7 - Bootstrapping tổ chức GCP (Ngày 34–40)

Ngày 34: Resource hierarchy design

  • Mục tiêu: Tổ chức project/folder đúng ngay từ đầu, tránh phải tái cấu trúc sau này.

  • Lý thuyết: Org → folder → project hierarchy, application-centric vs project-centric organizing.

  • Thực hành: Vẽ resource hierarchy cho 1 công ty giả định 3 team (platform, product A, product B) với folder/project rõ ràng.

Ngày 35: Shared networking

  • Mục tiêu: Kết nối network giữa các project mà không bị đụng độ IP hay lộ traffic không cần thiết.

  • Lý thuyết: Shared VPC, VPC Network Peering, Private Service Connect - khi nào dùng cái nào.

  • Thực hành: Dựng Shared VPC với 1 host project và 2 service project, verify 2 service project giao tiếp được qua internal IP.

Ngày 36: IAM & governance

  • Mục tiêu: Cấp quyền đúng người đúng việc, có policy chặn hành vi nguy hiểm ở cấp tổ chức.

  • Lý thuyết: IAM roles, org-level policy, service account management, data residency requirement.

  • Thực hành: Viết 1 Org Policy Constraint chặn tạo external IP cho VM, tạo custom IAM role giới hạn quyền tối thiểu cho 1 service account.

Ngày 37: IaC tooling overview

  • Mục tiêu: Biết chọn công cụ IaC đúng theo use case (không phải lúc nào cũng Terraform).

  • Lý thuyết: Infrastructure Manager, Cloud Foundation Toolkit, Config Connector, GitOps, Terraform, Helm - điểm mạnh/yếu từng loại.

  • Thực hành: Viết cùng 1 hạ tầng đơn giản (1 GCS bucket + 1 service account) bằng cả Terraform và Config Connector, so sánh trải nghiệm.

Ngày 38: Quản lý multi-environment

  • Mục tiêu: Có môi trường dev/staging/prod tách biệt an toàn, không lẫn dữ liệu.

  • Lý thuyết: Ephemeral environment cho PR review, config/policy management theo môi trường, GKE fleet management, patching an toàn.

  • Thực hành: Cấu hình 1 ephemeral environment tự tạo khi mở PR và tự xoá khi merge (dùng Cloud Build trigger + Terraform workspace).

Ngày 39: Terraform ở quy mô team

  • Mục tiêu: Terraform không vỡ khi nhiều người cùng làm việc trên 1 hạ tầng.

  • Lý thuyết: Module design, remote state + state locking, drift detection, review terraform plan trong PR.

  • Thực hành: Refactor 1 file Terraform monolith thành module tái sử dụng, cấu hình remote state trên GCS với locking.

Ngày 40: Landing zone & policy-as-code

  • Mục tiêu: Có nền tảng chuẩn để mọi project mới đều tuân thủ security/compliance ngay từ lúc tạo.

  • Lý thuyết: Landing zone/blueprint pattern cho doanh nghiệp, OPA/Gatekeeper hoặc Org Policy Constraints để enforce tự động.

  • Thực hành: Viết 1 policy chặn project mới không được tạo bucket public, test bằng cách cố tình tạo bucket vi phạm.

KHỐI 8 - CI/CD (Ngày 41–45)

Ngày 41: Cloud Build CI sâu

  • Mục tiêu: Pipeline CI nhanh, đáng tin cậy, không phải "chạy lại vì flaky".

  • Lý thuyết: Cloud Build trigger types, build step caching, parallel step execution.

  • Thực hành: Tối ưu 1 cloudbuild.yaml hiện có bằng caching layer, đo thời gian build trước/sau.

Ngày 42: Cloud Deploy CD

  • Mục tiêu: Deploy có kiểm soát qua nhiều môi trường với approval flow.

  • Lý thuyết: Cloud Deploy pipeline, Kustomize và Skaffold cho templating manifest.

  • Thực hành: Dựng Cloud Deploy pipeline dev → staging → prod với approval gate thủ công trước khi lên prod.

Ngày 43: Deployment strategies

  • Mục tiêu: Chọn đúng chiến lược release theo mức độ rủi ro của thay đổi.

  • Lý thuyết: Canary, blue/green, rolling, traffic splitting, feature flags - và cách định nghĩa success metric từ telemetry.

  • Thực hành: Thực hiện 1 canary release thật (10% traffic) cho 1 thay đổi, định nghĩa metric quyết định rollback tự động (vd: error rate > 1%).

Ngày 44: Secret management & supply chain security

  • Mục tiêu: Secret không lộ trong pipeline, artifact deploy production đáng tin cậy.

  • Lý thuyết: Build-time vs runtime secret injection, Artifact Analysis vulnerability scanning, SLSA framework, Binary Authorization.

  • Thực hành: Cấu hình Binary Authorization chỉ cho phép deploy image đã pass vulnerability scan, test bằng image cố tình có lỗ hổng.

Ngày 45: Pipeline as reliability boundary

  • Mục tiêu: Pipeline tự bảo vệ production, không phụ thuộc con người phản ứng kịp thời.

  • Lý thuyết: Rollback tự động dựa trên SLO burn rate, multi-cluster/multi-cloud CD (Argo CD ApplicationSet, GKE fleet).

  • Thực hành: Cấu hình 1 alert policy trigger rollback tự động khi error rate vượt ngưỡng trong 5 phút liên tiếp.

KHỐI 9 - SRE thực hành (Ngày 46–51)

Ngày 46: SLI/SLO/SLA & error budget

  • Mục tiêu: Có ngôn ngữ chung để cân bằng giữa tốc độ release và độ ổn định.

  • Lý thuyết: Định nghĩa SLI (availability, latency), SLO, SLA; error budget và "số 9" gắn với opportunity cost thật.

  • Thực hành: Định nghĩa 1 SLO cụ thể cho app của bạn (vd: 99.5% request < 300ms), tính error budget còn lại trong tháng dựa trên data thật.

Ngày 47: Service lifecycle management

  • Mục tiêu: Quản lý service từ lúc sinh ra đến lúc "nghỉ hưu" có kiểm soát.

  • Lý thuyết: Planning, deployment, maintenance, retirement - mỗi giai đoạn cần gì (docs, ownership, deprecation notice).

  • Thực hành: Viết checklist "retirement" cho 1 service giả định, gồm cả thông báo consumer và xoá tài nguyên an toàn.

Ngày 48: Capacity planning & autoscaling

  • Mục tiêu: Đủ tài nguyên khi cần, không lãng phí khi không cần.

  • Lý thuyết: Quota, limit, reservation, Dynamic Workload Scheduler; autoscaling trên MIG, Cloud Run, GKE.

  • Thực hành: Cấu hình autoscaling cho 1 service dựa trên custom metric (không chỉ CPU), test bằng traffic tăng đột biến giả lập.

Ngày 49: Mitigating incident impact

  • Mục tiêu: Giảm thiệt hại ngay lập tức khi sự cố xảy ra, trước khi tìm root cause.

  • Lý thuyết: Draining/redirecting traffic, adding capacity, rollback strategies.

  • Thực hành: Giả lập 1 version lỗi đang serve traffic, thực hành rollback về version trước trong < 5 phút.

Ngày 50: Incident command & postmortem

  • Mục tiêu: Có quy trình phản ứng sự cố rõ ràng, học được từ mỗi lần fail.

  • Lý thuyết: Vai trò Incident Commander/comms lead/ops lead, severity classification, blameless postmortem culture.

  • Thực hành: Chạy 1 kịch bản incident giả lập, phân vai, và viết 1 bản postmortem đầy đủ (timeline, root cause, action item).

Ngày 51: Chaos engineering & on-call

  • Mục tiêu: Biết hệ thống có tự phục hồi thật không, thay vì chỉ tin vào thiết kế trên giấy.

  • Lý thuyết: GameDay concept (kill pod, cắt network, đầy disk), escalation policy, alert fatigue tuning.

  • Thực hành: Chạy 1 GameDay thật bằng Chaos Mesh (hoặc thủ công) trên GKE - kill pod ngẫu nhiên và quan sát hệ thống tự phục hồi.

KHỐI 10 - Observability (Ngày 52–57)

Ngày 52: Telemetry collection

  • Mục tiêu: Thu thập đủ dữ liệu để debug mà không tốn quá nhiều chi phí lưu trữ.

  • Lý thuyết: Ops Agent, OpenTelemetry, Cloud Audit Logs, VPC Flow Logs, log optimization (filter/sampling/exclusion).

  • Thực hành: Cấu hình log exclusion filter loại bỏ log health-check ồn ào, đo lượng log giảm được (và cost tiết kiệm).

Ngày 53: Metrics collection

  • Mục tiêu: Có metric đúng để trả lời câu hỏi "hệ thống có khoẻ không" trong 5 giây.

  • Lý thuyết: Google Cloud Managed Service for Prometheus, custom metrics, log-based metrics, synthetic monitor.

  • Thực hành: Tạo 1 synthetic monitor probe endpoint quan trọng mỗi phút, tạo 1 custom log-based metric đếm số lỗi 5xx.

Ngày 54: Log analysis & management

  • Mục tiêu: Tìm ra nguyên nhân sự cố từ hàng triệu dòng log trong vài phút.

  • Lý thuyết: Logs Explorer, Logging query language, export sang BigQuery/Pub/Sub/Cloud Storage, redact PII/PHI.

  • Thực hành: Viết 1 query Logging language phức tạp (filter theo nhiều điều kiện + aggregate), cấu hình log processor redact số điện thoại/email.

Ngày 55: Dashboard & alerting

  • Mục tiêu: Alert đúng người, đúng lúc, không spam gây "alert fatigue".

  • Lý thuyết: Metrics Explorer, PromQL, alerting policy dựa trên SLO, tích hợp PagerDuty/Rootly.

  • Thực hành: Dựng 1 dashboard tổng quan sức khoẻ service (RED method), cấu hình alert chỉ bắn khi vi phạm SLO thật (không phải mọi spike nhỏ).

Ngày 56: Distributed tracing

  • Mục tiêu: Biết chính xác request chậm ở đâu trong chuỗi microservice.

  • Lý thuyết: OpenTelemetry tracing, trace waterfall/span, correlate trace ID với structured log.

  • Thực hành: Instrument 1 service với OpenTelemetry, trace 1 request đi qua 2-3 service và xác định span nào chiếm thời gian nhiều nhất.

Ngày 57: Observability-as-code & method luận

  • Mục tiêu: Dashboard/alert được review như code, và biết nhìn đúng chỉ số trước khi có alert.

  • Lý thuyết: Định nghĩa dashboard/alert bằng Terraform; USE method (Utilization/Saturation/Errors) cho resource, RED method (Rate/Errors/Duration) cho request.

  • Thực hành: Chuyển 1 dashboard đang tạo tay trên UI sang định nghĩa bằng Terraform, đưa vào PR review.

KHỐI 11 - Performance & FinOps (Ngày 58–61)

Ngày 58: Application performance monitoring

  • Mục tiêu: Phát hiện performance regression trước khi user phàn nàn.

  • Lý thuyết: APM tổng quan, Active Assist insights & recommendations.

  • Thực hành: Xem Active Assist recommendation cho project của bạn, áp dụng ít nhất 1 gợi ý (vd: rightsizing VM).

Ngày 59: FinOps fundamentals

  • Mục tiêu: Hiểu cấu trúc chi phí GCP đủ sâu để tối ưu có chủ đích.

  • Lý thuyết: Spot VM, committed-use discount, sustained-use discount, network tier (Premium vs Standard).

  • Thực hành: Tính toán tiết kiệm nếu chuyển 1 workload batch sang Spot VM, so sánh network tier cho 1 use case cụ thể.

Ngày 60: Cost optimization theo workload

  • Mục tiêu: Biết đòn bẩy tối ưu chi phí riêng cho từng loại compute.

  • Lý thuyết: Tối ưu chi phí cho GKE (bin-packing, node pool riêng), Cloud Run (concurrency, min instance), Compute Engine (machine type, committed use).

  • Thực hành: Audit 1 GKE cluster hoặc Cloud Run service hiện có, đề xuất 2-3 thay đổi cụ thể để giảm cost mà không giảm performance.

Ngày 61: FinOps vận hành thật

  • Mục tiêu: Biến FinOps thành quy trình định kỳ, không phải việc làm 1 lần.

  • Lý thuyết: Showback/chargeback theo team, budget alert kèm auto action, billing export ra BigQuery.

  • Thực hành: Export billing data ra BigQuery, viết 1 query phân tích cost theo label/project trong 30 ngày gần nhất.

KHỐI 12 - Production extras (Ngày 62–66)

Ngày 62: Disaster Recovery

  • Mục tiêu: Có kế hoạch DR đã được test thật, không chỉ nằm trên giấy.

  • Lý thuyết: DR plan structure, RTO/RPO definition, failover testing cadence.

  • Thực hành: Viết 1 DR plan cho service quan trọng nhất của bạn, lên lịch test failover định kỳ (vd: mỗi quý).

Ngày 63: Compliance & audit

  • Mục tiêu: Hiểu đủ để làm việc được với đội compliance/audit, không cần là chuyên gia.

  • Lý thuyết: Khái niệm SOC2/ISO27001 ở mức quy trình, log retention theo yêu cầu pháp lý, data residency thực tế.

  • Thực hành: Đọc 1 audit checklist mẫu (tìm online), map từng mục vào control bạn đã có/chưa có trong hệ thống.

Ngày 64: Team & process

  • Mục tiêu: Quy trình làm việc nhóm không phụ thuộc vào trí nhớ của 1 người.

  • Lý thuyết: Change management, code review culture, documentation-as-code (runbook sống trong repo).

  • Thực hành: Viết 1 runbook thật cho 1 tác vụ vận hành thường làm (vd: restart service, rotate credential), lưu trong repo cạnh code.

Ngày 65: Cấu trúc tổ chức DevOps & cost of downtime

  • Mục tiêu: Hiểu mô hình tổ chức ảnh hưởng thế nào đến tốc độ và chất lượng vận hành.

  • Lý thuyết: Platform team vs embedded SRE, "you build it you run it", cách tính business impact của downtime.

  • Thực hành: Ước tính cost of downtime cho service của bạn (revenue/phút hoặc user impact), dùng con số đó để justify 1 khoản đầu tư reliability.

Ngày 66: Đọc nền tảng & đo DORA metrics

  • Mục tiêu: Có framework đo lường mức độ trưởng thành DevOps thật sự, không chỉ dựa cảm tính.

  • Lý thuyết: Tóm tắt các chương quan trọng của Site Reliability Engineering (Google) và Accelerate; 4 chỉ số DORA (deployment frequency, lead time, MTTR, change failure rate).

  • Thực hành: Tự đo 4 chỉ số DORA cho project/team thật của bạn trong 2 tuần gần nhất, ghi lại baseline để so sánh sau này.

KHỐI NÂNG CAO (Ngày 67–102)

MODULE A - Kubernetes (Ngày 67–73)

Ngày 67: API Server & etcd internals

  • Mục tiêu: Hiểu vì sao API Server chậm/lỗi khi cluster lớn, biết cách debug.

  • Lý thuyết: API Server là stateless gateway, mọi thứ đi qua watch mechanism trên etcd; etcd dùng Raft, giới hạn 8GB mặc định, latency etcd ảnh hưởng toàn cluster.

  • Thực hành: Bật etcdctl trên GKE (hoặc kind local), quan sát etcd_request_duration_seconds, thử tạo 5000 object rồi đo độ trễ list request.

Ngày 68: Scheduler & Controller Manager

  • Mục tiêu: Biết vì sao pod bị Pending, tự viết được scheduling constraint đúng.

  • Lý thuyết: Predicate/priority trong scheduling, node affinity/anti-affinity, taint-toleration, custom scheduler qua scheduler extender.

  • Thực hành: Viết PodAntiAffinity để spread pod theo zone, giả lập node pressure và quan sát scheduler quyết định evict pod nào.

Ngày 69: CNI & kube-proxy internals

  • Mục tiêu: Debug được vấn đề network trong cluster thay vì đoán mò.

  • Lý thuyết: CNI plugin (Calico/Cilium) gắn IP cho pod thế nào, kube-proxy mode iptables vs IPVS, vì sao Cilium (eBPF) nhanh hơn iptables ở scale lớn.

  • Thực hành: Cài Cilium trên GKE (Dataplane V2), dùng cilium monitor để trace 1 request giữa 2 pod khác node.

Ngày 70: Service Mesh internals

  • Mục tiêu: Hiểu chi phí thật của mesh trước khi quyết định dùng.

  • Lý thuyết: Sidecar proxy (Envoy) chặn traffic qua iptables redirect, mTLS handshake overhead, traffic shifting qua VirtualService/DestinationRule.

  • Thực hành: Deploy Cloud Service Mesh (Istio) cho 2 service, đo thêm latency P99 do sidecar gây ra, thử canary 10% traffic bằng mesh thay vì Cloud Deploy.

Ngày 71: Pod Security & Policy enforcement

  • Mục tiêu: Enforce được security baseline tự động, không phụ thuộc review thủ công.

  • Lý thuyết: Pod Security Standards (restricted/baseline/privileged), OPA Gatekeeper (ConstraintTemplate) vs Kyverno (YAML-native, dễ viết hơn).

  • Thực hành: Viết 1 Kyverno policy chặn container chạy root hoặc thiếu resources.limits, test bằng pod cố tình vi phạm.

Ngày 72: Runtime security

  • Mục tiêu: Phát hiện hành vi bất thường trong container đang chạy (không chỉ chặn lúc deploy).

  • Lý thuyết: Falco dùng eBPF/kernel module để detect syscall bất thường, seccomp profile giới hạn syscall, AppArmor giới hạn file access.

  • Thực hành: Cài Falco trên GKE, giả lập 1 container bị exec vào (kubectl exec) và xem Falco alert thế nào; viết seccomp profile custom cho 1 workload.

Ngày 73: Autoscaling & node lifecycle

  • Mục tiêu: Hiểu rõ đánh đổi giữa Cluster Autoscaler và bin-packing kiểu Karpenter.

  • Lý thuyết: Cluster Autoscaler dựa trên pending pod + node group, Karpenter provision node theo yêu cầu thực tế (just-in-time), disruption budget khi scale-down.

  • Thực hành: Cấu hình GKE Autopilot vs Standard với Cluster Autoscaler, giả lập spike traffic và đo thời gian từ Pending → node sẵn sàng.

MODULE B - Networking (Ngày 74–78)

Ngày 74: TCP internals cho production

  • Mục tiêu: Đọc hiểu vì sao service bị timeout dù CPU/RAM bình thường.

  • Lý thuyết: TCP congestion control (Cubic/BBR), connection pooling, keepalive timeout mismatch giữa client-LB-backend là nguyên nhân phổ biến gây lỗi 502.

  • Thực hành: Dùng tcpdump/ss -tan trên 1 VM, tái hiện lỗi do keepalive timeout backend ngắn hơn LB rồi fix.

Ngày 75: TLS, HTTP/2, HTTP/3/QUIC

  • Mục tiêu: Biết chọn giao thức đúng và debug TLS handshake chậm.

  • Lý thuyết: TLS 1.3 handshake rút gọn, HTTP/2 multiplexing và vấn đề head-of-line blocking, QUIC chạy trên UDP giải quyết vấn đề đó.

  • Thực hành: Bật HTTP/3 trên Cloud Load Balancing, so sánh thời gian tải trang qua HTTP/2 vs HTTP/3 bằng Chrome DevTools.

Ngày 76: Cloud NAT & Cloud Armor

  • Mục tiêu: Kiểm soát outbound traffic và chặn tấn công ở layer 7.

  • Lý thuyết: Cloud NAT port allocation & SNAT exhaustion (lỗi hay gặp khi scale), Cloud Armor rule (rate-based, geo-block, OWASP preconfigured rule).

  • Thực hành: Cấu hình Cloud NAT với static port allocation, viết Cloud Armor rule chặn brute-force login (rate limit theo IP).

Ngày 77: Load Balancing chuyên sâu & Hybrid Connectivity

  • Mục tiêu: Chọn đúng loại LB, thiết kế hybrid connectivity cho enterprise.

  • Lý thuyết: Internal LB vs External, Regional vs Global LB (Anycast), VPN (site-to-site, HA VPN) vs Dedicated/Partner Interconnect - tradeoff bandwidth/latency/cost.

  • Thực hành: Dựng Internal HTTP(S) LB cho service nội bộ, vẽ sơ đồ hybrid connectivity giả định on-prem ↔ GCP cho 1 công ty 500 nhân sự.

Ngày 78: Private Service Connect & multi-VPC design

  • Mục tiêu: Thiết kế network topology an toàn cho tổ chức nhiều team/project.

  • Lý thuyết: PSC endpoint/service attachment, khi nào dùng PSC thay vì VPC Peering (tránh transitive peering limitation), Shared VPC ownership model.

  • Thực hành: Publish 1 service qua PSC service attachment, consume từ project khác không cần VPC peering.

MODULE C - Database Reliability Engineering (Ngày 79–83)

Ngày 79: Connection management & query plan

  • Mục tiêu: Tự chẩn đoán được query chậm và connection exhaustion.

  • Lý thuyết: Connection pooling (PgBouncer transaction mode vs session mode), EXPLAIN ANALYZE đọc query plan, sequential scan vs index scan.

  • Thực hành: Deploy PgBouncer trước AlloyDB, giả lập 200 connection đồng thời, so sánh có/không pooling; tối ưu 1 query chậm bằng EXPLAIN ANALYZE.

Ngày 80: Index strategy & vacuum

  • Mục tiêu: Tránh bloat và table lock khi vận hành Postgres/AlloyDB lâu dài.

  • Lý thuyết: B-tree vs GIN/GiST index, autovacuum tuning, hậu quả của vacuum bị trễ (table bloat, transaction ID wraparound).

  • Thực hành: Tạo bảng lớn giả lập update liên tục, quan sát bloat qua pg_stat_user_tables, tune autovacuum threshold.

Ngày 81: Replication & read replica strategy

  • Mục tiêu: Thiết kế đúng khi nào đọc từ replica, chấp nhận độ trễ nào.

  • Lý thuyết: Streaming replication, replication lag nguyên nhân (long transaction, network, disk I/O), read-after-write consistency pattern.

  • Thực hành: Tạo read replica cho Cloud SQL, giả lập lag bằng cách chạy transaction dài, đo lag qua pg_stat_replication.

Ngày 82: Spanner internals

  • Mục tiêu: Hiểu vì sao Spanner strongly consistent toàn cầu và cách tránh hotspot.

  • Lý thuyết: TrueTime (GPS + atomic clock để đồng bộ thời gian), Paxos-based leader election theo split, hotspot do primary key tuần tự (timestamp làm khoá).

  • Thực hành: Thiết kế schema Spanner tránh hotspot (dùng UUID/hash prefix thay vì auto-increment), test insert throughput trước/sau khi đổi khoá.

Ngày 83: Backup strategy & restore drill

  • Mục tiêu: Đảm bảo backup thực sự dùng được khi cần, không chỉ "có backup".

  • Lý thuyết: Point-in-Time Recovery (PITR), snapshot lifecycle policy, sự khác biệt giữa backup có thể restore và backup chỉ "tồn tại".

  • Thực hành: Tự tay restore 1 database từ backup sang instance mới, đo thời gian thực tế (RTO) và dữ liệu mất bao nhiêu (RPO).

MODULE D - Platform Engineering (Ngày 84–87)

Ngày 84: IDP concepts & Golden Path

  • Mục tiêu: Hiểu triết lý platform engineering khác DevOps truyền thống thế nào.

  • Lý thuyết: Internal Developer Platform giảm cognitive load cho dev, Golden Path = con đường mặc định "đủ tốt" thay vì để mỗi team tự quyết mọi thứ.

  • Thực hành: Vẽ Golden Path cho 1 luồng "tạo service mới" trong tổ chức giả định (từ scaffold code → CI/CD → deploy → observability có sẵn).

Ngày 85: Backstage - software catalog & template

  • Mục tiêu: Dựng được self-service portal thật cho developer.

  • Lý thuyết: Backstage software catalog (đăng ký service, ownership), Scaffolder template để tạo service mới theo chuẩn.

  • Thực hành: Cài Backstage local, đăng ký 1 service demo vào catalog, viết 1 Scaffolder template tạo repo + CI pipeline tự động.

Ngày 86: Self-service infra

  • Mục tiêu: Cho phép dev tự cấp phát infra mà không cần platform team làm tay.

  • Lý thuyết: Terraform module hoá theo "product" (database-as-a-service nội bộ), Crossplane cho phép định nghĩa infra như Kubernetes CRD.

  • Thực hành: Viết 1 Terraform module chuẩn hoá "tạo Cloud SQL instance" với input tối thiểu, hoặc thử Crossplane composition tương tự.

Ngày 87: Developer Experience metrics

  • Mục tiêu: Đo được platform có đang giúp ích thật hay không.

  • Lý thuyết: DORA metrics mở rộng (deployment frequency, lead time, MTTR, change failure rate) + DX survey định tính.

  • Thực hành: Tự đo 4 chỉ số DORA cho 1 project cá nhân trong 2 tuần gần nhất, thiết kế 1 dashboard theo dõi chúng.

MODULE E - Security Operations (Ngày 88–92)

Ngày 88: SIEM & Chronicle overview

  • Mục tiêu: Hiểu luồng dữ liệu security từ log đến detection.

  • Lý thuyết: SIEM tổng hợp log nhiều nguồn để correlate, Chronicle (Google SecOps) dùng UDM (Unified Data Model) để normalize log.

  • Thực hành: Đẩy Cloud Audit Log vào Chronicle (hoặc BigQuery giả lập UDM), viết 1 detection rule đơn giản (nhiều lần login fail).

Ngày 89: Security Command Center nâng cao

  • Mục tiêu: Dùng SCC để phát hiện misconfiguration và threat chủ động thay vì bị động.

  • Lý thuyết: SCC Premium threat detection (Event Threat Detection, Container Threat Detection), Security Health Analytics finding severity.

  • Thực hành: Bật SCC Premium trên project test, cố tình tạo 1 misconfig (bucket public) và xem finding xuất hiện thế nào, viết remediation.

Ngày 90: Incident Response cơ bản

  • Mục tiêu: Có quy trình phản ứng khi nghi ngờ bị xâm nhập, không hoảng loạn xử lý ngẫu hứng.

  • Lý thuyết: IOC (Indicator of Compromise), quy trình Identify → Contain → Eradicate → Recover → Lessons Learned.

  • Thực hành: Viết 1 runbook IR cho kịch bản "service account key bị leak lên GitHub public", thực hành revoke + rotate.

Ngày 91: Threat hunting & forensics cơ bản

  • Mục tiêu: Chủ động tìm dấu hiệu tấn công trong log thay vì chỉ chờ alert.

  • Lý thuyết: Threat hunting hypothesis-driven, forensics cơ bản trên cloud (timeline reconstruction từ Cloud Audit Log).

  • Thực hành: Từ 1 tập Cloud Audit Log giả lập, tự truy vết chuỗi hành động của 1 "kẻ tấn công" (privilege escalation qua IAM).

Ngày 92: Supply chain security sâu

  • Mục tiêu: Đảm bảo artifact deploy production đúng là thứ đã được build/test, không bị chèn mã độc giữa chừng.

  • Lý thuyết: SLSA level 1-4, Sigstore/Cosign ký và verify container image, SBOM (Software Bill of Materials) để biết dependency nào đang chạy.

  • Thực hành: Ký 1 container image bằng Cosign, cấu hình Binary Authorization chỉ cho phép deploy image đã ký; generate SBOM bằng syft.

MODULE F - Distributed Systems (Ngày 93–97)

Ngày 93: CAP theorem thực chiến

  • Mục tiêu: Áp CAP vào quyết định kiến trúc thật, không chỉ thuộc định nghĩa.

  • Lý thuyết: CAP không phải "chọn 2 trong 3" tĩnh - mà là tradeoff động theo từng thời điểm network partition; PACELC mở rộng thêm tradeoff latency/consistency lúc bình thường.

  • Thực hành: Phân loại 5 service thật bạn đang dùng (Spanner, Firestore, Redis, Kafka, Cloud Storage) theo CAP/PACELC và giải thích vì sao.

Ngày 94: Consensus - Raft

  • Mục tiêu: Hiểu cơ chế bên trong etcd/Spanner vận hành để không sợ "hộp đen".

  • Lý thuyết: Raft: leader election, log replication, term/commit index; split-brain được ngăn bằng majority quorum.

  • Thực hành: Chạy Raft visualization (raft.github.io) từng bước, giả lập leader chết và quan sát election lại.

Ngày 95: Paxos vs Raft

  • Mục tiêu: Biết khi nào hệ thống dùng Paxos (Spanner) khác Raft (etcd) ảnh hưởng gì đến vận hành.

  • Lý thuyết: Paxos phức tạp hơn để hiểu nhưng cho phép nhiều biến thể tối ưu (Multi-Paxos), Raft ưu tiên dễ hiểu/implement.

  • Thực hành: Đọc paper gốc Raft (phần Abstract + Design) và tóm tắt lại bằng 1 trang note của riêng bạn.

Ngày 96: Replication strategies

  • Mục tiêu: Chọn đúng mô hình replication theo yêu cầu consistency/latency.

  • Lý thuyết: Sync vs async replication, quorum-based (W+R>N), vấn đề split-brain khi network partition.

  • Thực hành: Cấu hình 1 Postgres synchronous replication, đo latency write tăng lên bao nhiêu so với async.

Ngày 97: Sharding & partitioning

  • Mục tiêu: Thiết kế schema chịu được scale ngang mà không tạo hotspot.

  • Lý thuyết: Hash-based vs range-based sharding, rebalancing khi thêm shard, hotspot mitigation (salting key).

  • Thực hành: Thiết kế sharding key cho 1 bảng "orders" giả lập 10 triệu bản ghi/ngày, giải thích cách tránh hotspot theo thời gian (timestamp).

MODULE G - AI/LLMOps trên GCP (Ngày 98–102)

Ngày 98: Vertex AI Model Registry & lifecycle

  • Mục tiêu: Quản lý vòng đời model như quản lý artifact CI/CD, không phải file rời rạc.

  • Lý thuyết: Model versioning, staging → production alias, model lineage (biết model train từ dataset/code nào).

  • Thực hành: Đăng ký 1 model đơn giản vào Vertex AI Model Registry, gắn version và promote lên "production" alias.

Ngày 99: Feature Store

  • Mục tiêu: Tránh training-serving skew - lỗi phổ biến nhất trong ML production.

  • Lý thuyết: Feature Store lưu feature dùng chung cho training và serving, online vs offline store.

  • Thực hành: Định nghĩa 1 feature (vd: "số đơn hàng 7 ngày gần nhất") trong Vertex AI Feature Store, dùng lại cho cả batch training và real-time serving.

Ngày 100: Model evaluation & monitoring

  • Mục tiêu: Phát hiện model xuống cấp (drift) trước khi ảnh hưởng business.

  • Lý thuyết: Data drift vs concept drift, evaluation metric theo bài toán (precision/recall cho classification, RMSE cho regression), continuous evaluation.

  • Thực hành: Bật Vertex AI Model Monitoring cho 1 endpoint, giả lập input distribution thay đổi và xem alert drift.

Ngày 101: RAG & Vector Database

  • Mục tiêu: Dựng được hệ thống RAG production-grade, không chỉ demo notebook.

  • Lý thuyết: Kiến trúc RAG (retrieve → augment → generate), Vertex AI Vector Search (ANN search), chunking strategy ảnh hưởng chất lượng retrieval.

  • Thực hành: Dựng RAG pipeline đơn giản: embed 1 tập tài liệu, lưu vào Vertex AI Vector Search, query và feed context vào Gemini.

Ngày 102: LLMOps - prompt, guardrail, cost

  • Mục tiêu: Vận hành LLM trong production như vận hành 1 service bình thường: versioned, monitored, cost-controlled.

  • Lý thuyết: Prompt versioning (coi prompt như code), guardrail (input/output filtering, jailbreak detection), cost monitoring theo token usage.

  • Thực hành: Viết 1 prompt template có version, thêm guardrail chặn output chứa PII, dựng dashboard theo dõi chi phí token theo ngày.

Knowledge

Part 1 of 50