Học Platform engineering (5)
LAYER 8 - SECURITY ENGINEERING
KHỐI A - Threat Modeling & Fundamentals (Ngày 1-24)
Ngày 1: Khởi động Layer 8
Mục tiêu: Đặt security mindset + lab an toàn.
Lý thuyết: tư duy kẻ tấn công, assume breach, security là quá trình.
Thực hành: Repo
security/; dựng lab cluster để tấn công/phòng thủ.
Ngày 2: Nguyên lý bảo mật
Mục tiêu: Nền tư duy.
Lý thuyết: CIA (confidentiality/integrity/availability), least privilege, defense in depth, fail-secure.
Thực hành: Áp nguyên lý vào một kiến trúc.
Ngày 3: Zero Trust
Mục tiêu: Không tin ngầm (nối Layer 5).
Lý thuyết: assume breach, verify liên tục, identity-centric.
Thực hành: Đối chiếu perimeter vs zero-trust.
Ngày 4: Attack surface & trust boundary
Mục tiêu: Biết bề mặt tấn công.
Lý thuyết: attack surface, trust boundary, entry points.
Thực hành: Vẽ trust boundary cho một hệ thống.
Ngày 5: Threat modeling - STRIDE
Mục tiêu: Khung liệt kê mối đe doạ.
Lý thuyết: Spoofing/Tampering/Repudiation/Info disclosure/DoS/Elevation.
Thực hành: Áp STRIDE cho một service.
Ngày 6: Threat modeling - DFD
Mục tiêu: Mô hình luồng dữ liệu.
Lý thuyết: data flow diagram, trust boundary trên DFD.
Thực hành: Vẽ DFD + đánh dấu điểm rủi ro.
Ngày 7: Attack trees
Mục tiêu: Suy nghĩ theo mục tiêu kẻ tấn công.
Lý thuyết: attack tree, path phân rã.
Thực hành: Dựng attack tree cho một tài sản.
Ngày 8: MITRE ATT&CK
Mục tiêu: Ngôn ngữ chung về kỹ thuật tấn công.
Lý thuyết: tactics/techniques, matrix (đặc biệt containers/cloud).
Thực hành: Map vài technique vào hệ của mình.
Ngày 9: Kill chain & phòng thủ
Mục tiêu: Nối tấn công với kiểm soát.
Lý thuyết: kill chain, defense mapping theo giai đoạn.
Thực hành: Đặt kiểm soát cho từng giai đoạn.
Ngày 10: Risk & prioritization
Mục tiêu: Ưu tiên đúng.
Lý thuyết: likelihood × impact, risk acceptance.
Thực hành: Xếp hạng rủi ro từ threat model.
Ngày 11: Threat model thực hành
Mục tiêu: Làm trọn một threat model.
Lý thuyết: quy trình đầu-cuối.
Thực hành: Threat model một hệ thống thật (app + k8s).
Ngày 12: Security trong SDLC
Mục tiêu: Shift-left (nối Layer 6).
Lý thuyết: security từ design → build → deploy → run.
Thực hành: Thêm security gate vào vòng đời.
Ngày 13: OWASP Top 10
Mục tiêu: Lỗ hổng ứng dụng phổ biến.
Lý thuyết: injection, broken auth, misconfig, SSRF…
Thực hành: Rà một app theo OWASP.
Ngày 14: Misconfig cloud/k8s
Mục tiêu: Sai cấu hình hay gặp.
Lý thuyết: public bucket, over-permissive IAM, exposed API.
Thực hành: Tìm misconfig trong lab.
Ngày 15: Secret exposure
Mục tiêu: Rò rỉ credential (nối Layer 5).
Lý thuyết: secret trong code/log/image, credential theft.
Thực hành: Scan repo/image tìm secret.
Ngày 16: Identity là perimeter
Mục tiêu: Danh tính là ranh giới (nối Layer 5).
Lý thuyết: phishing, token theft, MFA, least privilege.
Thực hành: Rà quyền thừa; siết.
Ngày 17: Blast radius & segmentation
Mục tiêu: Giới hạn thiệt hại.
Lý thuyết: segmentation, isolation, containment.
Thực hành: Phân đoạn một hệ để giảm blast radius.
Ngày 18: Incident response cơ bản
Mục tiêu: Khi bị tấn công (nối Layer 11).
Lý thuyết: detect → contain → eradicate → recover, forensics.
Thực hành: Phác IR playbook.
Ngày 19: Security logging & audit
Mục tiêu: Bằng chứng & phát hiện (nối Layer 7).
Lý thuyết: audit log, tamper-evident, retention.
Thực hành: Bật audit log tập trung, bảo vệ.
Ngày 20: Detection vs prevention
Mục tiêu: Chọn chiến lược.
Lý thuyết: ngăn chặn vs phát hiện, đánh đổi.
Thực hành: Quyết định control nào ngăn/phát hiện.
Ngày 21: Security như capability nền tảng
Mục tiêu: Paved secure road (nối Layer 6).
Lý thuyết: secure by default, guardrail thay gatekeeper.
Thực hành: Ý tưởng golden path an toàn.
Ngày 22: Threat intel & CVE
Mục tiêu: Theo dõi lỗ hổng.
Lý thuyết: CVE/CVSS, CISA KEV, vòng đời vá.
Thực hành: Quy trình theo dõi + phản ứng CVE.
Ngày 23: Ôn Khối A
Mục tiêu: Chốt tư duy.
Lý thuyết: rà STRIDE/ATT&CK/risk.
Thực hành: Chuẩn bị threat model doc.
Ngày 24: Threat model doc cho platform
Mục tiêu: Kim chỉ nam.
Lý thuyết: threat model + controls + risk register.
Thực hành: Viết threat model doc (dùng xuyên layer).
KHỐI B - Platform Security (Ngày 25-58) → P1
Ngày 25: Linux security recap
Mục tiêu: Nền (nối Layer 2).
Lý thuyết: user/group/perm, setuid/setgid, sudo.
Thực hành: Rà quyền hệ thống; loại setuid thừa.
Ngày 26: Capabilities
Mục tiêu: Chia nhỏ root (nối Layer 2).
Lý thuyết: POSIX capabilities, drop, least privilege.
Thực hành: Drop caps cho một process/container.
Ngày 27: seccomp
Mục tiêu: Lọc syscall (nối Layer 2).
Lý thuyết: seccomp-BPF, allow-list.
Thực hành: Áp seccomp profile chặn syscall nguy hiểm.
Ngày 28: LSM: SELinux vs AppArmor
Mục tiêu: MAC (nối Layer 2).
Lý thuyết: type enforcement vs path-based.
Thực hành: Chọn + bật một LSM.
Ngày 29: AppArmor profiles
Mục tiêu: Giới hạn theo path.
Lý thuyết: profile, enforce vs complain.
Thực hành: Viết + áp profile cho một app.
Ngày 30: CỘT MỐC 30
Mục tiêu: Chốt threat modeling + vào platform security.
Lý thuyết: Ôn A + đầu B; kiểm kê: threat model doc + Linux hardening cơ bản.
Thực hành: Đề thi #1 (threat modeling/Linux security) + tự chấm; blog #81 ("Threat modeling & Linux hardening: nền của security"); tag
layer8-day030; nghỉ nửa ngày. Đã đi 30/150 (20%).
Ngày 31: SELinux
Mục tiêu: MAC mạnh.
Lý thuyết: type enforcement, context, booleans.
Thực hành: Đọc context; xử lý một denial.
Ngày 32: Linux hardening
Mục tiêu: Siết hệ điều hành.
Lý thuyết: auditd, PAM, sysctl hardening, minimal packages.
Thực hành: Áp một baseline hardening + auditd.
Ngày 33: Kernel hardening
Mục tiêu: Bảo vệ nhân (nối Layer 2).
Lý thuyết: lockdown, KASLR, module signing, sysctl bảo mật.
Thực hành: Bật các biện pháp hardening kernel.
Ngày 34: Container security - threat model
Mục tiêu: Rủi ro container.
Lý thuyết: shared kernel, escape, image risk.
Thực hành: Threat model một container.
Ngày 35: Image security
Mục tiêu: Image nhỏ & sạch.
Lý thuyết: minimal/distroless, non-root, pinned base.
Thực hành: Chuyển sang distroless + non-root.
Ngày 36: Image scanning
Mục tiêu: Tìm lỗ hổng image.
Lý thuyết: Trivy/Grype, severity, fixable.
Thực hành: Scan + vá image.
Ngày 37: Rootless & no-new-privileges
Mục tiêu: Giảm đặc quyền.
Lý thuyết: rootless (nối Layer 4), no-new-privileges.
Thực hành: Chạy container rootless + no-new-privs.
Ngày 38: Container hardening
Mục tiêu: Container tối thiểu quyền.
Lý thuyết: read-only rootfs, drop caps, seccomp.
Thực hành: securityContext chặt cho pod.
Ngày 39: Runtime isolation
Mục tiêu: Cách ly mạnh (nối Layer 2).
Lý thuyết: gVisor/Kata cho workload nhạy cảm.
Thực hành: Chạy workload nhạy cảm dưới gVisor.
Ngày 40: CIS container benchmark
Mục tiêu: Chuẩn hardening.
Lý thuyết: CIS Docker/container.
Thực hành: Áp + kiểm CIS container.
Ngày 41: Kubernetes security - 4C
Mục tiêu: Bản đồ bảo mật k8s.
Lý thuyết: Cloud/Cluster/Container/Code.
Thực hành: Rà từng lớp.
Ngày 42: RBAC hardening
Mục tiêu: Quyền tối thiểu (nối Layer 4).
Lý thuyết: least-privilege RBAC, tránh cluster-admin.
Thực hành: Siết RBAC; audit quyền thừa.
Ngày 43: Pod Security Admission
Mục tiêu: Chuẩn pod an toàn (nối Layer 4).
Lý thuyết: PSA baseline/restricted, Pod Security Standards.
Thực hành: Áp restricted; chặn pod privileged.
Ngày 44: NetworkPolicy
Mục tiêu: Cô lập mạng (nối Layer 4).
Lý thuyết: default-deny, ingress/egress rules.
Thực hành: Default-deny + allow tối thiểu.
Ngày 45: k8s secrets
Mục tiêu: Bảo vệ secret (nối Layer 5).
Lý thuyết: encryption at rest, external secrets, tránh env leak.
Thực hành: Bật encryption + external secret operator.
Ngày 46: etcd & API server hardening
Mục tiêu: Bảo vệ control plane.
Lý thuyết: etcd encryption, API server flags, audit.
Thực hành: Bật etcd encryption + audit policy.
Ngày 47: Service account tokens
Mục tiêu: Token an toàn.
Lý thuyết: bound/projected token, automount off.
Thực hành: Tắt automount thừa; dùng bound token.
Ngày 48: Admission control cho security
Mục tiêu: Chặn cấu hình xấu (nối Layer 4).
Lý thuyết: Gatekeeper/Kyverno cho security policy.
Thực hành: Policy chặn hostPath/privileged/latest image.
Ngày 49: CIS Kubernetes benchmark
Mục tiêu: Chuẩn cluster.
Lý thuyết: CIS k8s, kube-bench.
Thực hành: Chạy kube-bench; sửa fail.
Ngày 50: Tấn công cluster
Mục tiêu: Hiểu bằng cách tấn công.
Lý thuyết: kube-hunter, common attack path.
Thực hành: Chạy kube-hunter; vá lỗ hổng tìm được.
Ngày 51: Multi-tenancy security
Mục tiêu: Cách ly tenant (nối Layer 4).
Lý thuyết: RBAC + NetworkPolicy + quota + PSA + node isolation.
Thực hành: Cô lập một tenant đầy đủ.
Ngày 52: Node & kubelet hardening
Mục tiêu: Bảo vệ node.
Lý thuyết: kubelet auth, read-only port, node isolation.
Thực hành: Hardening kubelet + node.
Ngày 53: Cloud security posture
Mục tiêu: CSPM (nối Layer 5).
Lý thuyết: posture management, misconfig detection.
Thực hành: Scan tài khoản cloud tìm misconfig.
Ngày 54: P1 - thiết kế baseline
Mục tiêu: Đóng khung P1.
Lý thuyết: hardening Linux + container + k8s theo CIS.
Thực hách:
hardened-baseline-design.md.
Ngày 55: P1 - Linux/container hardening
Mục tiêu: Nền OS/container an toàn.
Lý thuyết: caps/seccomp/AppArmor/distroless.
Thực hành: Áp baseline OS + container.
Ngày 56: P1 - k8s hardening
Mục tiêu: Cluster an toàn.
Lý thuyết: RBAC/PSA/NetworkPolicy/admission.
Thực hành: Áp baseline k8s.
Ngày 57: P1 - CIS + kube-bench
Mục tiêu: Đạt chuẩn.
Lý thuyết: đo tuân thủ, sửa fail.
Thực hành: kube-bench/CIS pass mức mục tiêu.
Ngày 58: P1 - Hardened baseline
Mục tiêu: Release P1.
Lý thuyết: rà "done": threat model + Linux/container/k8s hardening đo được.
Thực hành: Đóng gói + blog #82 ("Hardening một nền tảng: từ Linux tới Kubernetes theo CIS"). P1 done.
KHỐI C - Runtime Security (Ngày 59-82) → P2
Ngày 59: Runtime security - vì sao
Mục tiêu: Phát hiện lúc chạy.
Lý thuyết: hardening không đủ; cần detect hành vi bất thường runtime.
Thực hành: Liệt kê hành vi cần phát hiện.
Ngày 60: CỘT MỐC 60
Mục tiêu: Chốt platform security.
Lý thuyết: Ôn B; kiểm kê: hardened baseline (P1).
Thực hành: Đề thi #2 (container/k8s security/CIS) + tự chấm; blog #83 ("Kubernetes security: 4C, RBAC, PSA, NetworkPolicy"); tag
layer8-day060; nghỉ nửa ngày. Đã đi 60/150 (40%).
Ngày 61: Falco
Mục tiêu: Phát hiện theo syscall.
Lý thuyết: Falco, syscall events, driver (eBPF/kmod).
Thực hành: Dựng Falco; xem sự kiện.
Ngày 62: Falco - rules
Mục tiêu: Định nghĩa phát hiện.
Lý thuyết: rule, condition, macro, list, output.
Thực hành: Đọc + tinh chỉnh rule mặc định.
Ngày 63: Falco - custom rules
Mục tiêu: Phát hiện mối đe doạ riêng.
Lý thuyết: viết rule cho threat cụ thể (shell trong container, mount nhạy cảm).
Thực hành: Viết rule + kích hoạt bằng hành vi test.
Ngày 64: Falco - alerting
Mục tiêu: Đưa vào vận hành (nối Layer 7).
Lý thuyết: output → SIEM/alert, Falcosidekick.
Thực hành: Route alert Falco tới observability.
Ngày 65: Tetragon
Mục tiêu: eBPF-based (nối Layer 2).
Lý thuyết: Tetragon, eBPF observability + enforcement.
Thực hành: Dựng Tetragon; quan sát process/network.
Ngày 66: Tetragon - observe + enforce
Mục tiêu: Không chỉ phát hiện.
Lý thuyết: enforcement (block/kill) tại kernel.
Thực hành: Chặn một hành vi bằng Tetragon.
Ngày 67: Tetragon - TracingPolicy
Mục tiêu: Chính sách chi tiết (nối Layer 2).
Lý thuyết: kprobe/tracepoint, filter, action.
Thực hành: Viết TracingPolicy phát hiện + chặn.
Ngày 68: Falco vs Tetragon
Mục tiêu: Chọn công cụ.
Lý thuyết: detection (Falco) vs enforcement eBPF (Tetragon).
Thực hành: Bảng đánh đổi + kịch bản.
Ngày 69: seccomp profiles
Mục tiêu: Sinh & áp profile thật.
Lý thuyết: ghi profile theo hành vi thật, allow-list.
Thực hành: Sinh seccomp profile cho một app.
Ngày 70: Security Profiles Operator
Mục tiêu: Quản seccomp/AppArmor ở k8s.
Lý thuyết: SPO, ghi profile tự động.
Thực hành: Dùng SPO sinh + áp profile.
Ngày 71: AppArmor/SELinux cho workload
Mục tiêu: MAC cho pod.
Lý thuyết: áp profile vào workload k8s.
Thực hành: Gắn AppArmor profile cho pod.
Ngày 72: NetworkPolicy enforcement
Mục tiêu: Cô lập mạng thật (nối Layer 2/4).
Lý thuyết: Cilium enforcement, identity-based.
Thực hành: Default-deny + policy L3/L4.
Ngày 73: Cilium L7 policy
Mục tiêu: Chính sách tầng ứng dụng.
Lý thuyết: L7 policy (HTTP), identity-aware.
Thực hành: Giới hạn HTTP method/path giữa service.
Ngày 74: Egress & DNS policy
Mục tiêu: Chặn exfiltration.
Lý thuyết: egress control, DNS-based policy.
Thực hành: Chỉ cho egress tới đích cho phép.
Ngày 75: Drift detection
Mục tiêu: Phát hiện bất thường.
Lý thuyết: baseline hành vi, phát hiện lệch.
Thực hành: Cảnh báo khi container chạy binary lạ.
Ngày 76: Runtime response
Mục tiêu: Phản ứng tự động.
Lý thuyết: block/kill/isolate pod khi bị xâm nhập.
Thực hành: Tự cô lập pod đáng ngờ.
Ngày 77: File integrity monitoring
Mục tiêu: Phát hiện tamper.
Lý thuyết: FIM, thay đổi file nhạy cảm.
Thực hành: Cảnh báo khi file hệ thống đổi.
Ngày 78: Phát hiện container escape
Mục tiêu: Mối đe doạ nặng nhất.
Lý thuyết: dấu hiệu escape, kỹ thuật phổ biến.
Thực hành: Phát hiện thử nghiệm escape trong lab.
Ngày 79: P2 - thiết kế
Mục tiêu: Đóng khung P2.
Lý thuyết: detection (Falco/Tetragon) + enforcement (seccomp/NetworkPolicy).
Thực hách:
runtime-enforcement-design.md.
Ngày 80: P2 - detection + rules
Mục tiêu: Phát hiện threat.
Lý thuyết: Falco/Tetragon rules + alerting.
Thực hành: Bộ rule phát hiện + route alert.
Ngày 81: P2 - enforcement
Mục tiêu: Ngăn chặn thật.
Lý thuyết: seccomp + NetworkPolicy + Tetragon enforce.
Thực hành: Chặn hành vi nguy hiểm end-to-end.
Ngày 82: P2 - Runtime enforcement
Mục tiêu: Release P2.
Lý thuyết: rà "done": detection + enforcement + response + test.
Thực hành: Đóng gói + blog #84 ("Runtime security: phát hiện với Falco và ngăn chặn bằng eBPF/Tetragon"). P2 done.
KHỐI D - Supply Chain Security (Ngày 83-112) → P3
Ngày 83: Bối cảnh supply chain
Mục tiêu: Vì sao là mặt trận nóng.
Lý thuyết: SolarWinds, xz backdoor, dependency confusion.
Thực hành: Vẽ chuỗi cung ứng phần mềm của mình.
Ngày 84: Rủi ro dependency
Mục tiêu: Nguy cơ từ phụ thuộc.
Lý thuyết: transitive deps, typosquatting, malicious package.
Thực hành: Rà cây dependency một dự án.
Ngày 85: Dependency scanning
Mục tiêu: Vá lỗ hổng thư viện.
Lý thuyết: SCA, Dependabot/Renovate, auto-update.
Thực hành: Bật scan + auto PR update.
Ngày 86: SBOM - vì sao
Mục tiêu: Biết mình dùng gì.
Lý thuyết: Software Bill of Materials, minh bạch thành phần.
Thực hành: Liệt kê lợi ích SBOM cho một release.
Ngày 87: SBOM formats
Mục tiêu: Chuẩn hoá.
Lý thuyết: SPDX vs CycloneDX.
Thực hành: Đọc một SBOM mẫu.
Ngày 88: Sinh SBOM
Mục tiêu: Tạo SBOM.
Lý thuyết: Syft, SBOM cho image/repo.
Thực hành: Sinh SBOM cho một image.
Ngày 89: Scan từ SBOM
Mục tiêu: Lỗ hổng theo thành phần.
Lý thuyết: Grype quét SBOM.
Thực hành: Quét SBOM tìm CVE.
Ngày 90: CỘT MỐC 90
Mục tiêu: Chốt runtime + vào supply chain.
Lý thuyết: Ôn C + đầu D; kiểm kê: runtime enforcement (P2) + SBOM/scan.
Thực hành: Đề thi #3 (runtime security/SBOM) + tự chấm; blog #85 ("SBOM và quét lỗ hổng: minh bạch chuỗi cung ứng"); tag
layer8-day090; nghỉ nửa ngày. Đã đi 90/150 (60%).
Ngày 91: SLSA framework
Mục tiêu: Chuẩn toàn vẹn build.
Lý thuyết: SLSA levels, threats trong build pipeline.
Thực hành: Đánh giá pipeline theo SLSA.
Ngày 92: SLSA provenance
Mục tiêu: Nguồn gốc artifact.
Lý thuyết: provenance = ai build, từ gì, thế nào.
Thực hành: Sinh provenance cho một build.
Ngày 93: Build security
Mục tiêu: Build đáng tin.
Lý thuyết: hermetic/reproducible build, ephemeral runner.
Thực hành: Làm một build reproducible hơn.
Ngày 94: CI/CD security
Mục tiêu: Bảo vệ pipeline.
Lý thuyết: pipeline threats, OIDC không key (nối Layer 5), least privilege runner.
Thực hành: Siết quyền pipeline + OIDC.
Ngày 95: Sigstore - overview
Mục tiêu: Ký artifact hiện đại.
Lý thuyết: cosign + Fulcio + Rekor.
Thực hành: Đọc kiến trúc Sigstore.
Ngày 96: cosign - signing
Mục tiêu: Ký image/artifact.
Lý thuyết: ký bằng key, verify.
Thực hành: Ký + verify một image.
Ngày 97: Keyless signing
Mục tiêu: Ký không giữ key.
Lý thuyết: Fulcio + OIDC identity, short-lived cert.
Thực hành: Keyless sign trong CI.
Ngày 98: Rekor
Mục tiêu: Minh bạch chữ ký.
Lý thuyết: transparency log, tamper-evident.
Thực hành: Kiểm một entry trong Rekor.
Ngày 99: in-toto attestations
Mục tiêu: Chứng thực từng bước.
Lý thuyết: attestation framework, predicate.
Thực hành: Tạo một attestation (test/scan result).
Ngày 100:
Mục tiêu: Kiểm kê lớn giữa Layer 8.
Lý thuyết: Ôn A→D; kiểm kê lớn: threat model + hardened baseline (P1) + runtime (P2) + SBOM/sign đang thành hình; đối chiếu "biết dùng+".
Thực hành: Đề thi #4 tích lũy (threat/platform/runtime/supply chain) + tự chấm theo rubric; blog #86 ("100 ngày security: hardening, runtime, và chuỗi cung ứng có chữ ký"); tag
layer8-day100; nghỉ nửa ngày. Đã đi 100/150 (67%).
Ngày 101: Provenance attestation
Mục tiêu: Gắn provenance vào artifact.
Lý thuyết: SLSA provenance attestation, cosign attach.
Thực hành: Gắn provenance đã ký cho image.
Ngày 102: Signing trong pipeline
Mục tiêu: Tự động ký.
Lý thuyết: ký + attest ở bước build.
Thực hành: Pipeline tự sign + attest.
Ngày 103: Admission verification
Mục tiêu: Chỉ chạy artifact tin cậy (nối Layer 4).
Lý thuyết: verify signature/provenance tại admission.
Thực hành: Cài verification tại admission.
Ngày 104: policy-controller/Kyverno verifyImages
Mục tiêu: Enforce chữ ký.
Lý thuyết: Sigstore policy-controller, Kyverno verifyImages.
Thực hành: Chặn image không ký.
Ngày 105: Only-signed-images
Mục tiêu: Chính sách nền tảng.
Lý thuyết: enforce toàn cluster, exception.
Thực hành: Toàn cluster chỉ chạy image đã ký.
Ngày 106: Vulnerability admission
Mục tiêu: Chặn CVE nặng.
Lý thuyết: block image có critical CVE.
Thực hành: Admission từ chối image nhiều CVE.
Ngày 107: VEX
Mục tiêu: Giảm nhiễu CVE.
Lý thuyết: Vulnerability Exploitability eXchange, "không ảnh hưởng".
Thực hành: Đọc/áp một VEX statement.
Ngày 108: Registry security
Mục tiêu: Bảo vệ kho artifact (nối Layer 4).
Lý thuyết: access control, immutability, mirror tin cậy.
Thực hành: Siết quyền + bật immutability registry.
Ngày 109: P3 - thiết kế
Mục tiêu: Đóng khung P3.
Lý thuyết: SBOM + scan + sign + provenance + admission.
Thực hách:
supply-chain-design.md.
Ngày 110: P3 - CI: SBOM+scan+sign+provenance
Mục tiêu: Pipeline an toàn.
Lý thuyết: ghép mọi bước vào build.
Thực hành: Pipeline sinh SBOM + scan + keyless sign + provenance.
Ngày 111: P3 - admission verification
Mục tiêu: Enforce ở runtime.
Lý thuyết: chỉ chạy image ký + có provenance.
Thực hành: Admission chặn artifact không đạt.
Ngày 112: P3 - Signed supply chain
Mục tiêu: Release P3.
Lý thuyết: rà "done": SBOM + scan + sign + provenance + admission.
Thực hành: Đóng gói + blog #87 ("Chuỗi cung ứng có chữ ký: SBOM, cosign, SLSA provenance và admission"). P3 done.
KHỐI E - Cryptography & Hardware (Ngày 113-136)
Ngày 113: Crypto fundamentals
Mục tiêu: Đủ để dùng đúng.
Lý thuyết: symmetric vs asymmetric, khi nào dùng.
Thực hành: Mã hoá/giải mã một mẩu dữ liệu.
Ngày 114: Hashing & HMAC
Mục tiêu: Toàn vẹn.
Lý thuyết: hash, salt, HMAC, password hashing (argon2/bcrypt).
Thực hành: HMAC + hash password đúng cách.
Ngày 115: Digital signatures
Mục tiêu: Xác thực nguồn.
Lý thuyết: sign/verify, non-repudiation.
Thực hành: Ký + verify một message.
Ngày 116: Key exchange
Mục tiêu: Trao khoá an toàn.
Lý thuyết: Diffie-Hellman, forward secrecy.
Thực hành: Đọc handshake trao khoá.
Ngày 117: TLS
Mục tiêu: Bảo mật truyền (nối Layer 3).
Lý thuyết: handshake, cipher suite, TLS 1.3.
Thực hành: Kiểm cấu hình TLS một service (testssl).
Ngày 118: mTLS
Mục tiêu: Xác thực hai chiều (nối Layer 4).
Lý thuyết: mutual TLS, workload identity.
Thực hành: Bật mTLS giữa hai service.
Ngày 119: Key management & rotation
Mục tiêu: Quản khoá đúng (nối Layer 5).
Lý thuyết: rotation, envelope encryption, Vault.
Thực hành: Rotate key + đo tác động.
Ngày 120: CỘT MỐC 120
Mục tiêu: Chốt supply chain + nửa crypto.
Lý thuyết: Ôn D + đầu E; kiểm kê: signed supply chain (P3) + crypto cơ bản.
Thực hành: Đề thi #5 (supply chain/crypto/TLS) + tự chấm; blog #88 ("Đủ crypto để làm platform: hashing, chữ ký, TLS/mTLS, key rotation"); tag
layer8-day120; nghỉ nửa ngày. Đã đi 120/150 (80%).
Ngày 121: Đừng tự cài crypto
Mục tiêu: Tránh lỗi chết người.
Lý thuyết: pitfalls (nonce reuse, timing, padding), dùng thư viện chuẩn.
Thực hành: Rà một đoạn crypto sai; sửa bằng lib chuẩn.
Ngày 122: PKI sâu
Mục tiêu: Hạ tầng khoá công khai (nối Layer 5).
Lý thuyết: CA hierarchy, cert lifecycle, revocation (CRL/OCSP).
Thực hành: Dựng CA + cấp/rotate cert (Vault PKI).
Ngày 123: Certificate transparency & ACME
Mục tiêu: Cert minh bạch, tự động.
Lý thuyết: CT log, ACME/Let's Encrypt, cert-manager (nối Layer 4).
Thực hành: Tự động cấp cert bằng ACME.
Ngày 124: Post-quantum (nhận thức)
Mục tiêu: Chuẩn bị tương lai.
Lý thuyết: PQC, hybrid, migration.
Thực hành: Ghi chú lộ trình PQC.
Ngày 125: TPM
Mục tiêu: Gốc tin cậy phần cứng (nối Layer 3).
Lý thuyết: PCR, measured boot, sealing, attestation.
Thực hành: Đọc PCR; seal một secret theo trạng thái boot.
Ngày 126: HSM
Mục tiêu: Lưu khoá cứng.
Lý thuyết: HSM, key never leaves, PKCS#11.
Thực hành: Đọc mô hình HSM; use case.
Ngày 127: Attestation
Mục tiêu: Chứng minh trạng thái tin cậy.
Lý thuyết: remote attestation, quote.
Thực hành: Luồng attestation cơ bản (khái niệm/lab).
Ngày 128: Confidential Computing - overview
Mục tiêu: Bảo vệ dữ liệu đang dùng.
Lý thuyết: data-in-use encryption, TEE.
Thực hành: Xác định use case cần confidential computing.
Ngày 129: Intel SGX
Mục tiêu: Enclave.
Lý thuyết: enclave, sealed memory, hạn chế.
Thực hành: Đọc mô hình SGX; ưu/nhược.
Ngày 130: AMD SEV/SEV-SNP
Mục tiêu: Confidential VM.
Lý thuyết: memory encryption per-VM, SNP integrity (nối Layer 2).
Thực hành: Đọc kiến trúc SEV-SNP.
Ngày 131: Intel TDX
Mục tiêu: Trust domain.
Lý thuyết: TDX, VM-level isolation khỏi hypervisor.
Thực hành: So SGX vs SEV vs TDX.
Ngày 132: Confidential VMs/containers
Mục tiêu: Ứng dụng thực tế (nối Layer 2/4).
Lý thuyết: confidential containers, cloud CVM.
Thực hành: Đọc cách chạy confidential container.
Ngày 133: Attestation cho confidential computing
Mục tiêu: Tin trước khi trao dữ liệu.
Lý thuyết: remote attestation của TEE, release key sau attest.
Thực hành: Luồng "attest rồi mới cấp secret".
Ngày 134: Use cases
Mục tiêu: Khi nào đáng dùng.
Lý thuyết: multi-party computation, dữ liệu nhạy cảm/quy định.
Thực hành: Chọn use case phù hợp confidential computing.
Ngày 135: Secure boot end-to-end
Mục tiêu: Chuỗi tin cậy đầy đủ (nối Layer 3).
Lý thuyết: secure boot → measured boot → attestation → workload.
Thực hành: Vẽ chuỗi tin cậy từ firmware tới workload.
Ngày 136: Ôn Khối E
Mục tiêu: Chốt crypto/hardware.
Lý thuyết: rà crypto/PKI/TPM/HSM/confidential computing.
Thực hành: Chuẩn bị compliance.
KHỐI F - Compliance (Ngày 137-144)
Ngày 137: Compliance overview
Mục tiêu: Vì sao & khung nào.
Lý thuyết: compliance vs security, các framework.
Thực hành: Xác định framework liên quan.
Ngày 138: CIS Benchmarks
Mục tiêu: Chuẩn hardening đo được.
Lý thuyết: CIS cho OS/container/k8s/cloud (recap + áp).
Thực hành: Đo tuân thủ CIS toàn stack.
Ngày 139: NIST
Mục tiêu: Khung kiểm soát.
Lý thuyết: NIST CSF, 800-53 controls.
Thực hành: Map một số control NIST vào hệ.
Ngày 140: SOC2
Mục tiêu: Chứng nhận tin cậy.
Lý thuyết: trust service criteria, evidence.
Thực hành: Liệt kê evidence cần cho một criteria.
Ngày 141: PCI-DSS/khác (nhận thức)
Mục tiêu: Biết bối cảnh ngành.
Lý thuyết: PCI-DSS, HIPAA, GDPR (khái niệm).
Thực hành: Xác định yêu cầu áp dụng.
Ngày 142: Control mapping
Mục tiêu: Từ framework tới triển khai.
Lý thuyết: control → implementation → evidence.
Thực hành: Bảng mapping control → cấu hình thực tế.
Ngày 143: Compliance-as-code
Mục tiêu: Tuân thủ liên tục (nối Layer 5).
Lý thuyết: policy-as-code, config rules, continuous compliance.
Thực hành: Tự động kiểm một control.
Ngày 144: Audit evidence
Mục tiêu: Sẵn sàng audit.
Lý thuyết: thu thập evidence tự động, attestation.
Thực hành: Sinh evidence tự động cho một control.
KHỐI G - Secure Platform capstone (Ngày 145-150) → P4 flagship
Ngày 145: P4 - tích hợp
Mục tiêu: Ghép mọi mảnh.
Lý thuyết: hardened baseline (P1) + runtime (P2) + supply chain (P3).
Thực hành: Nối 3 project vào một nền tảng an toàn.
Ngày 146: P4 - policy-as-code có test
Mục tiêu: Guardrail kiểm chứng được.
Lý thuyết: OPA/Kyverno policy + unit test (nối Layer 4/5).
Thực hành: Bộ policy an toàn có test tự động.
Ngày 147: P4 - crypto/secrets baseline
Mục tiêu: Nền mật mã.
Lý thuyết: Vault/PKI + mTLS + encryption at rest.
Thực hành: Baseline secrets/crypto cho platform.
Ngày 148: P4 - compliance
Mục tiêu: Tuân thủ liên tục.
Lý thuyết: control mapping + continuous checks.
Thực hành: Dashboard tuân thủ (nối Layer 7).
Ngày 149: P4 - red-team drill; ôn Layer 8
Mục tiêu: Chứng minh phòng thủ.
Lý thuyết: tấn công → phát hiện → chặn → điều tra.
Thực hành: Red-team drill: thử tấn công, xác nhận detect+block; rà toàn layer.
Ngày 150: HOÀN THÀNH LAYER 8
Mục tiêu: Chốt Security Engineering ở mức "biết dùng+ vững".
Lý thuyết: Ôn toàn layer; kiểm kê tổng: threat model + P1 hardened baseline + P2 runtime enforcement + P3 signed supply chain + P4 Secure Platform (policy-as-code có test + crypto/compliance).
Thực hành: P4 done; đề thi #6 tích lũy (toàn layer) + tự chấm theo rubric; blog #89 ("Nhìn lại 150 ngày security: một Secure Platform với supply chain có chữ ký và runtime enforcement"); tag
layer8-complete; nghỉ nửa ngày.
LAYER 9 - DATA PLATFORM ENGINEERING
Tài nguyên: Fundamentals of Data Engineering (Reis & Housley), Designing Data-Intensive Applications (Kleppmann), Streaming Systems (Akidau et al.), The Data Warehouse Toolkit (Kimball), docs Kafka/Iceberg/Delta/Hudi/Trino/dbt/Airflow/Dagster/DataHub.
KHỐI A - Fundamentals & Architecture (Ngày 1-24)
Ngày 1: Khởi động Layer 9
Mục tiêu: Data platform là gì + dựng lab.
Lý thuyết: vai trò nền tảng dữ liệu, các thành phần chính.
Thực hành: Repo
data-platform/; dựng lab (object storage + Kafka + engine local).
Ngày 2: Data lifecycle
Mục tiêu: Vòng đời dữ liệu.
Lý thuyết: generation → ingestion → storage → transform → serve.
Thực hành: Vẽ lifecycle cho một use case.
Ngày 3: OLTP vs OLAP
Mục tiêu: Hai thế giới (nối Layer 3).
Lý thuyết: transactional vs analytical, row vs columnar.
Thực hành: Phân loại workload OLTP/OLAP.
Ngày 4: Warehouse vs lake vs lakehouse
Mục tiêu: Ba kiến trúc lưu trữ.
Lý thuyết: warehouse (schema-on-write) vs lake (schema-on-read) vs lakehouse (kết hợp).
Thực hành: Bảng đánh đổi.
Ngày 5: Batch vs streaming
Mục tiêu: Hai chế độ xử lý.
Lý thuyết: Lambda vs Kappa architecture.
Thực hành: Chọn kiến trúc cho một bài toán.
Ngày 6: Medallion architecture
Mục tiêu: Tổ chức tầng dữ liệu.
Lý thuyết: bronze (raw) → silver (cleaned) → gold (curated).
Thực hành: Thiết kế 3 tầng cho một domain.
Ngày 7: ETL vs ELT
Mục tiêu: Thứ tự transform.
Lý thuyết: ETL (transform trước) vs ELT (load rồi transform), vì sao ELT lên ngôi.
Thực hành: Phác ELT flow.
Ngày 8: Dimensional modeling
Mục tiêu: Mô hình cho analytics.
Lý thuyết: Kimball: fact/dimension, star/snowflake schema.
Thực hành: Thiết kế star schema cho một domain.
Ngày 9: Modeling khác
Mục tiêu: Ngoài Kimball.
Lý thuyết: Inmon (normalized), Data Vault (khái niệm).
Thực hành: So sánh khi nào dùng gì.
Ngày 10: File formats - row vs columnar
Mục tiêu: Nền lưu trữ analytics.
Lý thuyết: vì sao columnar nhanh cho OLAP (nối Layer 3).
Thực hành: So kích thước/tốc độ row vs columnar.
Ngày 11: Parquet
Mục tiêu: Format columnar chủ đạo.
Lý thuyết: row group, column chunk, encoding, predicate pushdown.
Thực hành: Ghi/đọc Parquet; xem metadata.
Ngày 12: ORC & Avro
Mục tiêu: Các format khác.
Lý thuyết: ORC (columnar), Avro (row, schema evolution), tradeoff.
Thực hành: So Parquet/ORC/Avro cho use case.
Ngày 13: Compression & encoding
Mục tiêu: Tiết kiệm & nhanh.
Lý thuyết: dictionary/RLE/delta (nối Layer 3), codec (zstd/snappy).
Thực hành: Đo dung lượng theo codec.
Ngày 14: Partitioning & clustering
Mục tiêu: Truy vấn nhanh, quét ít.
Lý thuyết: partition pruning, clustering/sorting.
Thực hành: Partition một dataset; đo tác động query.
Ngày 15: Object storage foundation
Mục tiêu: Nền của lake/lakehouse (nối Layer 3).
Lý thuyết: S3 semantics, list cost, eventual→strong consistency.
Thực hành: Layout dữ liệu trên object storage.
Ngày 16: Data mesh
Mục tiêu: Tổ chức dữ liệu phân tán.
Lý thuyết: domain ownership, data-as-product, federated governance.
Thực hành: Phác data mesh cho một tổ chức.
Ngày 17: Architecture patterns
Mục tiêu: Mẫu kiến trúc.
Lý thuyết: ingestion → lakehouse → serving; streaming-first.
Thực hành: Vẽ kiến trúc mục tiêu.
Ngày 18: Schema management
Mục tiêu: Quản lý schema (preview).
Lý thuyết: schema evolution, compatibility (backward/forward).
Thực hành: Kịch bản đổi schema an toàn.
Ngày 19: Governance overview
Mục tiêu: Bắc cầu Khối F.
Lý thuyết: catalog, lineage, quality, contracts.
Thực hành: Liệt kê nhu cầu governance.
Ngày 20: Data platform trên k8s
Mục tiêu: Vận hành (nối Layer 4).
Lý thuyết: operators (Strimzi/Flink/Trino), storage.
Thực hành: Chuẩn bị chạy stack trên k8s.
Ngày 21: Cost model
Mục tiêu: Kinh tế dữ liệu (nối Layer 11).
Lý thuyết: storage vs compute, egress, query cost.
Thực hành: Ước tính chi phí một platform.
Ngày 22: Security & privacy overview
Mục tiêu: Dữ liệu an toàn (nối Layer 8).
Lý thuyết: PII, masking, access control, encryption.
Thực hành: Phân loại dữ liệu nhạy cảm.
Ngày 23: Ôn Khối A
Mục tiêu: Chốt nền kiến trúc.
Lý thuyết: rà lifecycle → format → lake/warehouse → mesh.
Thực hành: Chuẩn bị architecture doc.
Ngày 24: Data platform architecture doc
Mục tiêu: Kim chỉ nam.
Lý thuyết: kiến trúc + tầng + format + governance.
Thực hành: Viết architecture doc (dùng xuyên layer).
KHỐI B - Streaming (Ngày 25-60) → P1
Ngày 25: Streaming fundamentals
Mục tiêu: Tư duy log/event.
Lý thuyết: event, immutable log, pub/sub, append-only.
Thực hành: Mô hình hoá một domain theo event.
Ngày 26: Kafka - kiến trúc
Mục tiêu: Nền streaming chủ đạo.
Lý thuyết: broker, topic, partition, offset.
Thực hành: Dựng Kafka; tạo topic; produce/consume.
Ngày 27: Kafka - producer
Mục tiêu: Ghi tin cậy.
Lý thuyết: acks, idempotent producer, batching, partitioner.
Thực hành: Producer với acks=all + idempotence.
Ngày 28: Kafka - consumer
Mục tiêu: Đọc đúng.
Lý thuyết: consumer group, rebalance, offset commit.
Thực hành: Consumer group; quan sát rebalance.
Ngày 29: Kafka - replication
Mục tiêu: Độ bền.
Lý thuyết: replication factor, ISR, leader/follower.
Thực hành: Hạ một broker; quan sát failover.
Ngày 30: CỘT MỐC 30
Mục tiêu: Chốt nền kiến trúc + Kafka cơ bản.
Lý thuyết: Ôn A + đầu B; kiểm kê: architecture doc + Kafka produce/consume/replication.
Thực hành: Đề thi #1 (architecture/format/Kafka basics) + tự chấm; blog #90 ("Kiến trúc data platform và nền tảng streaming với Kafka"); tag
layer9-day030; nghỉ nửa ngày. Đã đi 30/150 (20%).
Ngày 31: Kafka - exactly-once
Mục tiêu: Không trùng, không mất.
Lý thuyết: transactions, idempotence, read-process-write.
Thực hành: Pipeline exactly-once đơn giản.
Ngày 32: Kafka - KRaft & vận hành
Mục tiêu: Kafka hiện đại.
Lý thuyết: KRaft (bỏ ZooKeeper), controller, ops.
Thực hành: Cluster KRaft; kiểm tra metadata.
Ngày 33: Kafka - retention & storage
Mục tiêu: Giữ dữ liệu đúng.
Lý thuyết: retention, log compaction, tiered storage.
Thực hành: Cấu hình compaction + retention.
Ngày 34: Schema Registry
Mục tiêu: Schema cho stream.
Lý thuyết: Avro/Protobuf, compatibility mode.
Thực hành: Đăng ký schema; test evolution.
Ngày 35: Kafka Connect
Mục tiêu: Nối nguồn/đích không code.
Lý thuyết: source/sink connector, converter.
Thực hành: Connect từ DB → Kafka → object storage.
Ngày 36: Kafka trên k8s
Mục tiêu: Vận hành (nối Layer 4).
Lý thuyết: Strimzi operator.
Thực hành: Dựng Kafka bằng Strimzi.
Ngày 37: Kafka performance
Mục tiêu: Nhanh & bền.
Lý thuyết: zero-copy (nối Layer 2), page cache, batching, partition count.
Thực hành: Benchmark throughput; tuning.
Ngày 38: Pulsar - kiến trúc
Mục tiêu: Lựa chọn khác.
Lý thuyết: broker + BookKeeper, tách compute/storage.
Thực hành: Dựng Pulsar; produce/consume.
Ngày 39: Pulsar - tính năng
Mục tiêu: Điểm mạnh Pulsar.
Lý thuyết: segment, tiered storage, multi-tenancy, geo-replication.
Thực hành: Thử multi-tenancy.
Ngày 40: Kafka vs Pulsar
Mục tiêu: Chọn công cụ.
Lý thuyết: kiến trúc, ecosystem, vận hành.
Thực hành: Bảng đánh đổi.
Ngày 41: CDC - khái niệm
Mục tiêu: Bắt thay đổi DB.
Lý thuyết: change data capture, log-based vs query-based.
Thực hành: So sánh phương pháp CDC.
Ngày 42: Debezium
Mục tiêu: CDC thực chiến (nối Layer 3).
Lý thuyết: đọc WAL/binlog, connector, tombstone.
Thực hành: Debezium capture thay đổi Postgres → Kafka.
Ngày 43: CDC patterns
Mục tiêu: Dùng CDC đúng.
Lý thuyết: outbox pattern, snapshot + streaming, ordering.
Thực hành: Cài outbox pattern.
Ngày 44: CDC → lakehouse
Mục tiêu: Đồng bộ vào lake (preview C).
Lý thuyết: upsert từ CDC vào table format.
Thực hành: Phác luồng CDC → Iceberg.
Ngày 45: Stream processing - nền
Mục tiêu: Xử lý dòng.
Lý thuyết: stateless vs stateful, time (event/processing).
Thực hành: Phân loại phép xử lý stream.
Ngày 46: Kafka Streams
Mục tiêu: Xử lý trong app.
Lý thuyết: KStream/KTable, topology, state store.
Thực hành: App Kafka Streams đếm/aggregate.
Ngày 47: Flink - kiến trúc
Mục tiêu: Stream processor mạnh.
Lý thuyết: JobManager/TaskManager, dataflow, operator.
Thực hành: Dựng Flink; chạy job.
Ngày 48: Flink - state & exactly-once
Mục tiêu: Trạng thái tin cậy.
Lý thuyết: state backend, checkpoint, savepoint, exactly-once.
Thực hành: Job có state + checkpoint; recover.
Ngày 49: Flink - windowing
Mục tiêu: Gom theo thời gian.
Lý thuyết: tumbling/sliding/session window, watermark, event time.
Thực hành: Aggregate theo window với watermark.
Ngày 50: Streaming joins & aggregations
Mục tiêu: Kết hợp dòng.
Lý thuyết: stream-stream/stream-table join.
Thực hành: Join hai stream.
Ngày 51: Streaming SQL
Mục tiêu: SQL cho stream.
Lý thuyết: ksqlDB/Flink SQL.
Thực hành: Xử lý stream bằng SQL.
Ngày 52: Backpressure
Mục tiêu: Ổn định dưới tải.
Lý thuyết: backpressure, flow control.
Thực hành: Quan sát backpressure trong Flink.
Ngày 53: Error handling
Mục tiêu: Không mất dữ liệu.
Lý thuyết: dead letter queue, retry, poison message.
Thực hành: DLQ cho message lỗi.
Ngày 54: Stream observability
Mục tiêu: Nhìn thấy pipeline (nối Layer 7).
Lý thuyết: lag, throughput, consumer lag alert.
Thực hành: Dashboard + alert consumer lag.
Ngày 55: Streaming data quality
Mục tiêu: Dữ liệu sạch từ đầu.
Lý thuyết: validation trong stream, schema enforcement.
Thực hành: Validate + route bad record.
Ngày 56: P1 - thiết kế
Mục tiêu: Đóng khung P1.
Lý thuyết: ingest streaming + CDC + processing.
Thực hách:
streaming-ingest-design.md.
Ngày 57: P1 - Kafka + Registry + Connect
Mục tiêu: Nền ingest.
Lý thuyết: topic + schema + connector.
Thực hành: Kafka + Schema Registry + Connect chạy.
Ngày 58: P1 - CDC
Mục tiêu: Bắt thay đổi DB.
Lý thuyết: Debezium từ một DB thật.
Thực hành: CDC → Kafka topic.
Ngày 59: P1 - stream processing + test
Mục tiêu: Xử lý dòng.
Lý thuyết: Flink/Kafka Streams transform + aggregate.
Thực hành: Xử lý + test exactly-once.
Ngày 60: CỘT MỐC 60
Mục tiêu: Chốt streaming; release P1.
Lý thuyết: Ôn B; kiểm kê: Kafka + CDC + stream processing.
Thực hành: P1 done; đề thi #2 (Kafka/CDC/Flink) + tự chấm; blog #91 ("Streaming ingestion: Kafka, CDC với Debezium, và xử lý dòng bằng Flink"); tag
layer9-day060; nghỉ nửa ngày. Đã đi 60/150 (40%).
KHỐI C - Lakehouse (Ngày 61-90) → P2
Ngày 61: Lakehouse - vì sao
Mục tiêu: ACID trên data lake.
Lý thuyết: kết hợp linh hoạt của lake + tin cậy của warehouse.
Thực hành: So lake thuần vs lakehouse.
Ngày 62: Table format
Mục tiêu: Lớp metadata trên file.
Lý thuyết: table format = metadata + snapshot trên file Parquet.
Thực hành: Vẽ layers: files → metadata → table.
Ngày 63: Iceberg - kiến trúc
Mục tiêu: Table format hàng đầu.
Lý thuyết: metadata file, manifest list, manifest, data files.
Thực hành: Tạo bảng Iceberg; xem metadata.
Ngày 64: Iceberg - snapshot & time travel
Mục tiêu: Lịch sử dữ liệu.
Lý thuyết: snapshot, time travel, rollback.
Thực hành: Query bảng ở thời điểm quá khứ.
Ngày 65: Iceberg - hidden partitioning
Mục tiêu: Partition không lộ cho user.
Lý thuyết: partition transform, partition evolution.
Thực hành: Đổi partition scheme không rewrite.
Ngày 66: Iceberg - schema evolution
Mục tiêu: Đổi schema an toàn.
Lý thuyết: add/drop/rename column, type promotion.
Thực hành: Evolve schema; đọc dữ liệu cũ + mới.
Ngày 67: Iceberg - catalog
Mục tiêu: Quản lý bảng.
Lý thuyết: Hive/REST/Polaris/Gravitino catalog.
Thực hành: Cấu hình REST catalog.
Ngày 68: Delta Lake - transaction log
Mục tiêu: ACID kiểu Delta.
Lý thuyết: _delta_log, optimistic concurrency.
Thực hành: Tạo bảng Delta; xem log.
Ngày 69: Delta Lake - DML & time travel
Mục tiêu: Cập nhật dữ liệu lake.
Lý thuyết: MERGE/UPDATE/DELETE, time travel.
Thực hành: MERGE (upsert) vào Delta.
Ngày 70: Hudi - COW vs MOR
Mục tiêu: Format tối ưu upsert.
Lý thuyết: copy-on-write vs merge-on-read (nối Layer 3 LSM/B-tree).
Thực hành: So COW vs MOR cho write-heavy.
Ngày 71: Hudi - incremental
Mục tiêu: Đọc thay đổi.
Lý thuyết: incremental query, upsert.
Thực hành: Incremental read từ Hudi.
Ngày 72: Iceberg vs Delta vs Hudi
Mục tiêu: Chọn format.
Lý thuyết: tính năng, ecosystem, engine support.
Thực hành: Bảng đánh đổi.
Ngày 73: Catalog & metastore
Mục tiêu: Nơi biết bảng ở đâu.
Lý thuyết: Hive Metastore, REST catalog, interoperability.
Thực hành: Đăng ký bảng vào catalog dùng chung.
Ngày 74: Ghi batch
Mục tiêu: Nạp dữ liệu lớn.
Lý thuyết: batch append/overwrite, file sizing.
Thực hành: Batch load vào lakehouse.
Ngày 75: Ghi streaming
Mục tiêu: Nạp liên tục (nối Khối B).
Lý thuyết: streaming write từ Kafka/Flink → table format.
Thực hành: Stream từ Kafka → Iceberg/Delta.
Ngày 76: CDC → lakehouse
Mục tiêu: Đồng bộ DB → lake.
Lý thuyết: upsert từ CDC, dedup, ordering.
Thực hành: CDC (P1) → upsert vào lakehouse.
Ngày 77: Small files problem
Mục tiêu: Giữ hiệu năng.
Lý thuyết: small files, compaction.
Thực hành: Compaction; đo cải thiện query.
Ngày 78: Partitioning & performance
Mục tiêu: Query nhanh.
Lý thuyết: partition pruning, file skipping, statistics.
Thực hành: Tối ưu layout cho một query.
Ngày 79: Schema evolution & governance
Mục tiêu: Đổi an toàn ở quy mô.
Lý thuyết: compatibility, contract (nối Khối F).
Thực hành: Evolve schema có kiểm soát.
Ngày 80: Time travel use cases
Mục tiêu: Ứng dụng lịch sử.
Lý thuyết: audit, rollback, reproducibility.
Thực hành: Rollback sau một ghi sai.
Ngày 81: Lakehouse trên object storage
Mục tiêu: Nền lưu trữ (nối Layer 3).
Lý thuyết: S3 semantics, consistency, cost.
Thực hành: Cấu hình lakehouse trên object storage.
Ngày 82: Table maintenance
Mục tiêu: Bảng khoẻ.
Lý thuyết: expire snapshots, compaction, orphan cleanup.
Thực hành: Lịch maintenance tự động.
Ngày 83: Lakehouse + query engine
Mục tiêu: Bắc cầu Khối D.
Lý thuyết: engine đọc table format (Trino/Spark/DuckDB).
Thực hành: Query lakehouse bằng một engine.
Ngày 84: Data layout optimization
Mục tiêu: Tối ưu vật lý.
Lý thuyết: Z-order/sorting, clustering.
Thực hành: Sắp xếp lại; đo query.
Ngày 85: Governance trên lakehouse
Mục tiêu: Kiểm soát truy cập (nối Layer 8).
Lý thuyết: table/column ACL, masking.
Thực hành: Áp access control lên bảng.
Ngày 86: P2 - thiết kế
Mục tiêu: Đóng khung P2.
Lý thuyết: table format + catalog + ingest + maintenance.
Thực hách:
lakehouse-design.md.
Ngày 87: P2 - Iceberg/Delta trên object storage
Mục tiêu: Nền lakehouse.
Lý thuyết: bảng + catalog + object storage.
Thực hành: Lakehouse chạy được.
Ngày 88: P2 - batch + streaming ingest
Mục tiêu: Nạp đủ đường.
Lý thuyết: batch + streaming (từ P1) vào lakehouse.
Thực hành: Cả hai luồng ghi vào bảng.
Ngày 89: P2 - schema evolution + time travel + test
Mục tiêu: Tin cậy.
Lý thuyết: evolution + rollback.
Thực hành: Test evolution + time travel.
Ngày 90: CỘT MỐC 90
Mục tiêu: Chốt lakehouse; release P2.
Lý thuyết: Ôn C; kiểm kê: Iceberg/Delta + catalog + ingest + maintenance.
Thực hành: P2 done; đề thi #3 (table formats/lakehouse) + tự chấm; blog #92 ("Lakehouse: ACID trên object storage với Iceberg/Delta"); tag
layer9-day090; nghỉ nửa ngày. Đã đi 90/150 (60%).
KHỐI D - Query & Warehouse (Ngày 91-114) → P3
Ngày 91: Query engines - MPP
Mục tiêu: Xử lý song song lớn.
Lý thuyết: massively parallel processing, shared-nothing.
Thực hành: Vẽ mô hình MPP.
Ngày 92: Trino - kiến trúc
Mục tiêu: Query engine federated.
Lý thuyết: coordinator/worker, connector.
Thực hành: Dựng Trino; query một nguồn.
Ngày 93: Trino - federated query
Mục tiêu: Query xuyên nguồn.
Lý thuyết: connector (lakehouse/DB/object), join across sources.
Thực hành: Join dữ liệu từ 2 nguồn khác nhau.
Ngày 94: Trino - distributed execution
Mục tiêu: Hiểu để tối ưu.
Lý thuyết: stage, split, exchange, memory.
Thực hành: Đọc query plan Trino.
Ngày 95: Trino - optimization
Mục tiêu: Query nhanh.
Lý thuyết: cost-based optimizer, statistics, pushdown.
Thực hành: Tối ưu một query chậm.
Ngày 96: Trino trên lakehouse
Mục tiêu: Query Iceberg/Delta.
Lý thuyết: Iceberg/Delta connector, metadata pruning.
Thực hành: Query lakehouse (P2) bằng Trino.
Ngày 97: Trino - tuning
Mục tiêu: Hiệu năng production.
Lý thuyết: resource group, memory, spill.
Thực hành: Tuning + benchmark.
Ngày 98: ClickHouse
Mục tiêu: Real-time OLAP (nối Layer 3).
Lý thuyết: MergeTree, columnar, materialized view.
Thực hành: Nạp + query analytic nhanh.
Ngày 99: ClickHouse - real-time
Mục tiêu: Analytics tức thời.
Lý thuyết: ingest streaming, aggregating engine.
Thực hành: Dashboard real-time trên ClickHouse.
Ngày 100:
Mục tiêu: Kiểm kê lớn giữa Layer 9.
Lý thuyết: Ôn A→C + đầu D; kiểm kê lớn: streaming (P1) + lakehouse (P2) + query khởi đầu; đối chiếu "biết dùng tốt".
Thực hành: Đề thi #4 tích lũy (streaming+lakehouse+query) + tự chấm theo rubric; blog #93 ("100 ngày data platform: từ streaming ingest tới query trên lakehouse"); tag
layer9-day100; nghỉ nửa ngày. Đã đi 100/150 (67%).
Ngày 101: DuckDB
Mục tiêu: OLAP nhúng (nối Layer 3).
Lý thuyết: embedded, vectorized, đọc Parquet/Iceberg trực tiếp.
Thực hành: Query lakehouse local bằng DuckDB.
Ngày 102: DuckDB - lakehouse local
Mục tiêu: Phân tích không cần cluster.
Lý thuyết: query object storage trực tiếp.
Thực hành: Phân tích một dataset lớn local.
Ngày 103: StarRocks
Mục tiêu: Real-time OLAP + MV.
Lý thuyết: MPP, materialized view, lakehouse query.
Thực hành: So StarRocks với ClickHouse/Trino.
Ngày 104: Warehouse vs query engine vs lakehouse
Mục tiêu: Chọn đúng công cụ.
Lý thuyết: khi nào warehouse, khi nào query engine, khi nào lakehouse.
Thực hành: Bảng quyết định.
Ngày 105: Federated query
Mục tiêu: Một query nhiều nguồn.
Lý thuyết: federation, pushdown, data movement cost.
Thực hành: Federated query tối ưu.
Ngày 106: Query caching
Mục tiêu: Nhanh & rẻ.
Lý thuyết: result cache, materialized view, acceleration.
Thực hành: Cache/MV cho query lặp.
Ngày 107: Semantic layer
Mục tiêu: Định nghĩa metric nhất quán.
Lý thuyết: metrics layer, tránh mỗi nơi tính khác.
Thực hành: Định nghĩa metric dùng chung.
Ngày 108: Serving analytics
Mục tiêu: Đưa tới người dùng.
Lý thuyết: BI tools, dashboard, API serving.
Thực hành: Nối một BI tool vào query layer.
Ngày 109: Query cost & resource
Mục tiêu: Kiểm soát chi phí (nối Layer 11).
Lý thuyết: resource group, quota, chargeback.
Thực hành: Giới hạn tài nguyên theo team.
Ngày 110: Query observability
Mục tiêu: Nhìn thấy query (nối Layer 7).
Lý thuyết: query log, slow query, metrics.
Thực hành: Dashboard query performance.
Ngày 111: P3 - thiết kế
Mục tiêu: Đóng khung P3.
Lý thuyết: Trino federated + warehouse serving.
Thực hách:
query-layer-design.md.
Ngày 112: P3 - Trino federated + lakehouse
Mục tiêu: Query xuyên nguồn.
Lý thuyết: Trino trên lakehouse + nguồn khác.
Thực hành: Federated query hoạt động.
Ngày 113: P3 - warehouse serving + test
Mục tiêu: Analytics tốc độ cao.
Lý thuyết: ClickHouse/StarRocks cho serving.
Thực hành: Serving layer + test hiệu năng.
Ngày 114: P3 - Query layer
Mục tiêu: Release P3.
Lý thuyết: rà "done": federated query + serving + tuning.
Thực hành: Đóng gói + blog #94 ("Query layer: Trino federated và warehouse cho serving"). P3 done.
KHỐI E - Workflow/Orchestration (Ngày 115-132) → P4
Ngày 115: Orchestration - nền
Mục tiêu: Điều phối pipeline.
Lý thuyết: DAG, dependency, scheduling.
Thực hành: Vẽ DAG một pipeline.
Ngày 116: Airflow - kiến trúc
Mục tiêu: Orchestrator phổ biến.
Lý thuyết: scheduler/executor/webserver/metadata DB.
Thực hành: Dựng Airflow; chạy DAG mẫu.
Ngày 117: Airflow - DAG & operators
Mục tiêu: Xây pipeline.
Lý thuyết: DAG, task, operator, dependency.
Thực hành: Viết DAG ingest → transform.
Ngày 118: Airflow - sensors/hooks/XCom
Mục tiêu: Chờ & nối.
Lý thuyết: sensor (chờ điều kiện), hook (nối hệ), XCom (truyền dữ liệu).
Thực hành: DAG chờ dữ liệu sẵn rồi chạy.
Ngày 119: Airflow - executors
Mục tiêu: Chạy ở quy mô (nối Layer 4).
Lý thuyết: Celery/Kubernetes executor.
Thực hành: KubernetesExecutor chạy task trên k8s.
Ngày 120: CỘT MỐC 120
Mục tiêu: Chốt query + vào orchestration.
Lý thuyết: Ôn D + đầu E; kiểm kê: query layer (P3) + Airflow cơ bản.
Thực hành: Đề thi #5 (Trino/warehouse/Airflow) + tự chấm; blog #95 ("Query engine và bước vào orchestration với Airflow"); tag
layer9-day120; nghỉ nửa ngày. Đã đi 120/150 (80%).
Ngày 121: Airflow - backfill & idempotency
Mục tiêu: Chạy lại an toàn.
Lý thuyết: backfill, idempotent task, retry.
Thực hành: Backfill một khoảng thời gian.
Ngày 122: Dagster - asset-based
Mục tiêu: Orchestration theo tài sản.
Lý thuyết: software-defined assets, khác task-based.
Thực hành: Định nghĩa asset + materialize.
Ngày 123: Dagster - lineage
Mục tiêu: Phụ thuộc rõ ràng.
Lý thuyết: asset lineage, observability tích hợp.
Thực hành: Xem lineage giữa assets.
Ngày 124: Airflow vs Dagster
Mục tiêu: Chọn công cụ.
Lý thuyết: task vs asset, DX, ecosystem.
Thực hành: Bảng đánh đổi.
Ngày 125: dbt - transformation
Mục tiêu: Transform bằng SQL.
Lý thuyết: model, ref, materialization (view/table/incremental).
Thực hành: dbt model trên warehouse/lakehouse.
Ngày 126: dbt - test, docs, lineage
Mục tiêu: Transform tin cậy.
Lý thuyết: schema/data test, docs, lineage graph.
Thực hành: Thêm test + docs cho model.
Ngày 127: dbt + lakehouse/warehouse
Mục tiêu: ELT thực chiến.
Lý thuyết: dbt chạy trên Trino/ClickHouse/lakehouse.
Thực hành: dbt build medallion (silver→gold).
Ngày 128: Pipeline patterns
Mục tiêu: Pipeline bền.
Lý thuyết: idempotency, incremental, backfill, checkpoint.
Thực hành: Áp pattern cho một pipeline.
Ngày 129: Data quality trong pipeline
Mục tiêu: Chặn dữ liệu xấu (preview F).
Lý thuyết: quality check trong DAG, fail-fast vs quarantine.
Thực hành: Thêm quality gate vào pipeline.
Ngày 130: Pipeline observability
Mục tiêu: Nhìn thấy pipeline (nối Layer 7).
Lý thuyết: SLA, freshness, failure alert.
Thực hành: Alert khi pipeline trễ/hỏng.
Ngày 131: P4 - thiết kế + build
Mục tiêu: Đóng khung P4.
Lý thuyết: Airflow/Dagster DAG + dbt transform.
Thực hành: Pipeline ingest → transform (dbt) orchestrated.
Ngày 132: P4 - Orchestrated pipeline
Mục tiêu: Release P4.
Lý thuyết: rà "done": orchestration + dbt + data quality + test.
Thực hành: Đóng gói + blog #96 ("Orchestration với Airflow/Dagster và transform bằng dbt"). P4 done.
KHỐI F - Metadata & Governance (Ngày 133-144)
Ngày 133: Data governance - vì sao
Mục tiêu: Kiểm soát dữ liệu ở quy mô.
Lý thuyết: discovery, trust, compliance, ownership.
Thực hành: Liệt kê nhu cầu governance.
Ngày 134: Metadata management
Mục tiêu: Biết mình có dữ liệu gì.
Lý thuyết: technical/business/operational metadata.
Thực hành: Phân loại metadata cần thu.
Ngày 135: DataHub
Mục tiêu: Catalog & discovery.
Lý thuyết: ingestion, entity, search.
Thực hành: Dựng DataHub; ingest metadata.
Ngày 136: OpenMetadata
Mục tiêu: Lựa chọn khác.
Lý thuyết: catalog, lineage, quality tích hợp.
Thực hành: So DataHub vs OpenMetadata.
Ngày 137: Data lineage
Mục tiêu: Truy vết nguồn gốc.
Lý thuyết: table-level & column-level lineage.
Thực hành: Xem lineage một bảng gold về nguồn.
Ngày 138: Data quality - Great Expectations
Mục tiêu: Đảm bảo chất lượng.
Lý thuyết: expectation, validation, data docs.
Thực hành: Bộ expectation cho một dataset.
Ngày 139: Data quality - Soda & as-code
Mục tiêu: Quality trong CI.
Lý thuyết: Soda checks, quality as code.
Thực hành: Quality check trong pipeline CI.
Ngày 140: Data contracts
Mục tiêu: Thoả thuận schema (nối Layer 6).
Lý thuyết: producer/consumer contract, schema + SLA.
Thực hành: Viết một data contract.
Ngày 141: Data contracts - enforcement
Mục tiêu: Chặn phá vỡ contract.
Lý thuyết: CI check, break glass, versioning.
Thực hành: Enforce contract ở CI (nối Layer 6).
Ngày 142: PII, masking, access
Mục tiêu: Dữ liệu an toàn (nối Layer 8).
Lý thuyết: classification, masking, column ACL, row-level.
Thực hành: Mask PII + access control theo role.
Ngày 143: Governance ở quy mô
Mục tiêu: Governance không cản.
Lý thuyết: federated governance (data mesh), automation.
Thực hành: Chính sách governance tự động.
Ngày 144: Ôn Khối F
Mục tiêu: Chốt governance.
Lý thuyết: rà catalog/lineage/quality/contract/security.
Thực hành: Chuẩn bị capstone.
KHỐI G - Enterprise Data Platform capstone (Ngày 145-150) → P5 flagship
Ngày 145: P5 - tích hợp
Mục tiêu: Ghép mọi mảnh.
Lý thuyết: ingest → lakehouse → query → catalog + governance.
Thực hành: Nối P1/P2/P3/P4 vào một platform.
Ngày 146: P5 - ingest → lakehouse
Mục tiêu: Đường dữ liệu vào.
Lý thuyết: streaming (P1) + CDC → lakehouse (P2), medallion.
Thực hành: Bronze→silver→gold chạy end-to-end.
Ngày 147: P5 - query + orchestration
Mục tiêu: Phục vụ & điều phối.
Lý thuyết: query layer (P3) + orchestration (P4).
Thực hành: Pipeline orchestrated + query serving.
Ngày 148: P5 - catalog + lineage + quality
Mục tiêu: Governance sống.
Lý thuyết: catalog + column lineage + data quality/contracts.
Thực hành: Catalog tự cập nhật + lineage + quality gate.
Ngày 149: P5 - governance & security; ôn Layer 9
Mục tiêu: An toàn & tuân thủ.
Lý thuyết: PII masking + access control (nối Layer 8); rà toàn layer.
Thực hành: Áp governance/security toàn platform; rà.
Ngày 150: HOÀN THÀNH LAYER 9
Mục tiêu: Chốt Data Platform Engineering ở mức "biết dùng vững".
Lý thuyết: Ôn toàn layer; kiểm kê tổng: P1 streaming + P2 lakehouse + P3 query + P4 orchestration + P5 Enterprise Data Platform (ingest→lakehouse→query→catalog + governance).
Thực hành: P5 done; đề thi #6 tích lũy (toàn layer) + tự chấm theo rubric; blog #97 ("Nhìn lại 150 ngày data platform: một Enterprise Data Platform từ streaming tới catalog"); tag
layer9-complete; nghỉ nửa ngày.
LAYER 10 - AI PLATFORM ENGINEERING
Tài nguyên: Designing Machine Learning Systems (Chip Huyen), docs Kubeflow/Ray/MLflow/Feast/KServe/Triton/vLLM, các paper DeepSpeed ZeRO/Megatron-LM/FSDP/PagedAttention, NVIDIA GPU/MIG/DCGM docs.
KHỐI A - Fundamentals & GPU Infrastructure (Ngày 1-30) → P1
Ngày 1: Khởi động Layer 10
Mục tiêu: AI platform là gì + dựng lab.
Lý thuyết: vai trò nền tảng AI, thành phần (train/serve/GPU/lifecycle/RAG).
Thực hành: Repo
ai-platform/; dựng lab k8s có GPU (hoặc mô phỏng).
Ngày 2: Loại workload AI
Mục tiêu: Phân biệt nhu cầu.
Lý thuyết: training vs inference vs batch, đặc tính tài nguyên khác nhau.
Thực hành: Bảng nhu cầu tài nguyên từng loại.
Ngày 3: Kiến trúc AI platform
Mục tiêu: Bức tranh tổng.
Lý thuyết: data → train → registry → serve → monitor.
Thực hành: Vẽ kiến trúc mục tiêu.
Ngày 4: GPU architecture recap
Mục tiêu: Hiểu phần cứng (nối Layer 0).
Lý thuyết: SIMT, tensor core, warp, occupancy.
Thực hành: Đọc spec một GPU; hiểu tensor core.
Ngày 5: GPU memory
Mục tiêu: Ràng buộc then chốt.
Lý thuyết: HBM, bandwidth vs capacity, memory-bound workloads.
Thực hành: Tính bộ nhớ cần cho một model.
Ngày 6: Multi-GPU interconnect
Mục tiêu: GPU nói chuyện với nhau.
Lý thuyết: NVLink, NVSwitch, PCIe, bandwidth.
Thực hành: Đo bandwidth giữa GPU (nếu có).
Ngày 7: Distributed interconnect
Mục tiêu: Nối nhiều node (nối Layer 2/3).
Lý thuyết: InfiniBand, RDMA, RoCE cho training.
Thực hành: Đọc kiến trúc mạng training cluster.
Ngày 8: GPU trên k8s
Mục tiêu: Cấp GPU cho pod (nối Layer 4).
Lý thuyết: NVIDIA device plugin, resource
nvidia.com/gpu.Thực hành: Chạy pod dùng GPU.
Ngày 9: NVIDIA GPU Operator
Mục tiêu: Quản lý GPU khai báo.
Lý thuyết: driver/toolkit/plugin/DCGM tự động.
Thực hành: Cài GPU Operator.
Ngày 10: GPU scheduling
Mục tiêu: Phân bổ GPU.
Lý thuyết: requests/limits, GPU node pool, taints.
Thực hành: Schedule workload lên GPU node.
Ngày 11: MIG
Mục tiêu: Chia một GPU thành nhiều.
Lý thuyết: Multi-Instance GPU (A100/H100), partition cứng.
Thực hành: Bật MIG; chạy nhiều workload cách ly.
Ngày 12: Time-slicing & MPS
Mục tiêu: Chia GPU mềm.
Lý thuyết: time-slicing, MPS, fractional GPU.
Thực hành: Time-slice một GPU cho nhiều pod.
Ngày 13: Topology-aware scheduling
Mục tiêu: Đặt gần nhau.
Lý thuyết: NVLink topology, NUMA (nối Layer 0/2).
Thực hành: Schedule theo topology.
Ngày 14: DCGM
Mục tiêu: Giám sát GPU (nối Layer 7).
Lý thuyết: DCGM metrics (util/mem/temp/power).
Thực hành: Export DCGM → Prometheus; dashboard.
Ngày 15: GPU utilization
Mục tiêu: Không lãng phí.
Lý thuyết: util thật vs allocated, idle GPU.
Thực hành: Đo + tìm GPU idle.
Ngày 16: GPU cost model
Mục tiêu: Kinh tế GPU (nối Layer 11).
Lý thuyết: GPU đắt, cost per training/inference.
Thực hành: Ước tính chi phí GPU một job.
Ngày 17: Mixed CPU/GPU
Mục tiêu: Ghép tài nguyên.
Lý thuyết: pipeline CPU (data) + GPU (compute).
Thực hành: Cân bằng CPU/GPU cho một job.
Ngày 18: Driver, CUDA, container toolkit
Mục tiêu: Nền phần mềm.
Lý thuyết: CUDA version, driver compat, container toolkit.
Thực hành: Container GPU chạy đúng CUDA.
Ngày 19: GPU health & failure
Mục tiêu: Bền với lỗi.
Lý thuyết: XID error, GPU fallout, node drain.
Thực hành: Phát hiện + xử lý GPU lỗi.
Ngày 20: Bin-packing GPU
Mục tiêu: Giảm phân mảnh.
Lý thuyết: bin-packing, fragmentation.
Thực hành: Tối ưu packing cho cụm GPU.
Ngày 21: Spot GPU
Mục tiêu: Giảm chi phí (nối Layer 5).
Lý thuyết: spot/preemptible GPU, checkpoint để chịu preempt.
Thực hành: Chạy job chịu được preemption.
Ngày 22: Multi-tenancy GPU
Mục tiêu: Dùng chung an toàn (nối Layer 4).
Lý thuyết: tenant isolation, MIG per tenant.
Thực hành: Chia GPU theo tenant.
Ngày 23: GPU quota & fair share
Mục tiêu: Công bằng.
Lý thuyết: quota, gang scheduling, fair sharing.
Thực hành: Áp quota GPU theo team.
Ngày 24: Autoscaling GPU node
Mục tiêu: Co giãn GPU (nối Layer 4).
Lý thuyết: Karpenter/Cluster Autoscaler cho GPU, scale-to-zero.
Thực hành: Auto-scale GPU node theo pending job.
Ngày 25: GPU observability
Mục tiêu: Nhìn toàn cụm (nối Layer 7).
Lý thuyết: util/mem/queue dashboard.
Thực hành: Dashboard GPU fleet.
Ngày 26: P1 - thiết kế
Mục tiêu: Đóng khung P1.
Lý thuyết: device plugin + operator + MIG/time-slice + DCGM.
Thực hách:
gpu-infra-design.md.
Ngày 27: P1 - device plugin + operator
Mục tiêu: Cấp GPU.
Lý thuyết: GPU Operator setup.
Thực hành: GPU sẵn sàng cho workload.
Ngày 28: P1 - MIG/time-slicing
Mục tiêu: Chia GPU.
Lý thuyết: fractional GPU cho nhiều workload.
Thực hành: MIG + time-slicing hoạt động.
Ngày 29: P1 - DCGM + test
Mục tiêu: Giám sát.
Lý thuyết: DCGM → observability.
Thực hành: Dashboard + alert GPU; test.
Ngày 30: CỘT MỐC 30
Mục tiêu: Chốt GPU infra; release P1.
Lý thuyết: Ôn A; kiểm kê: GPU trên k8s + MIG/time-slice + DCGM.
Thực hành: P1 done; đề thi #1 (GPU/MIG/scheduling) + tự chấm; blog #98 ("GPU infrastructure trên Kubernetes: MIG, time-slicing, DCGM"); tag
layer10-day030; nghỉ nửa ngày. Đã đi 30/150 (20%).
KHỐI B - Training Infrastructure (Ngày 31-60) → P2
Ngày 31: Distributed training - nền
Mục tiêu: Vì sao phải phân tán.
Lý thuyết: model/data quá lớn cho một GPU, các loại parallelism.
Thực hành: Vẽ bản đồ parallelism.
Ngày 32: Data parallelism
Mục tiêu: Nhân bản model, chia data.
Lý thuyết: replica model, all-reduce gradient.
Thực hành: Data-parallel training nhỏ.
Ngày 33: Tensor parallelism
Mục tiêu: Chia model theo chiều.
Lý thuyết: chia layer/matmul across GPU.
Thực hành: Đọc cơ chế tensor parallel.
Ngày 34: Pipeline parallelism
Mục tiêu: Chia model theo tầng.
Lý thuyết: stage, micro-batch, bubble.
Thực hành: Đọc pipeline schedule.
Ngày 35: FSDP
Mục tiêu: Shard tham số.
Lý thuyết: Fully Sharded Data Parallel, shard param/grad/optimizer.
Thực hành: Train một model bằng FSDP.
Ngày 36: DeepSpeed ZeRO
Mục tiêu: Tiết kiệm bộ nhớ.
Lý thuyết: ZeRO stage 1/2/3, offload.
Thực hành: Train với ZeRO stage 3.
Ngày 37: Megatron-LM
Mục tiêu: Tensor + pipeline parallel.
Lý thuyết: kiến trúc Megatron.
Thực hành: Đọc cấu hình Megatron.
Ngày 38: 3D parallelism
Mục tiêu: Kết hợp cả ba.
Lý thuyết: data + tensor + pipeline cho model rất lớn.
Thực hành: Thiết kế parallelism cho một model.
Ngày 39: Mixed precision
Mục tiêu: Nhanh & nhẹ.
Lý thuyết: bf16/fp16/fp8, loss scaling.
Thực hành: Train mixed precision; đo tốc độ/bộ nhớ.
Ngày 40: Memory optimization
Mục tiêu: Nhét model to hơn.
Lý thuyết: gradient checkpointing, activation offload.
Thực hành: Bật checkpointing; đo bộ nhớ.
Ngày 41: NCCL
Mục tiêu: Giao tiếp GPU.
Lý thuyết: collective ops (all-reduce/all-gather), NCCL.
Thực hành: Đo hiệu năng all-reduce.
Ngày 42: Communication + RDMA
Mục tiêu: Giảm nghẽn mạng (nối Layer 2/3).
Lý thuyết: InfiniBand/RDMA, GPUDirect.
Thực hành: Đọc cấu hình mạng training tối ưu.
Ngày 43: Checkpointing & fault tolerance
Mục tiêu: Không mất tiến độ.
Lý thuyết: checkpoint, resume, elastic recovery.
Thực hành: Kill giữa training → resume từ checkpoint.
Ngày 44: Ray - core
Mục tiêu: Framework phân tán đa dụng.
Lý thuyết: task/actor, Ray cluster.
Thực hành: Dựng Ray cluster.
Ngày 45: Ray Train
Mục tiêu: Training phân tán.
Lý thuyết: Ray Train, integration PyTorch.
Thực hành: Distributed training bằng Ray Train.
Ngày 46: Ray Data
Mục tiêu: Data loading phân tán.
Lý thuyết: streaming dataset, không nghẽn GPU.
Thực hành: Ray Data feed training.
Ngày 47: Ray Tune
Mục tiêu: Tối ưu siêu tham số.
Lý thuyết: search algorithm, scheduler (ASHA).
Thực hành: HPO bằng Ray Tune.
Ngày 48: Kubeflow - overview
Mục tiêu: ML trên k8s.
Lý thuyết: components, training operator, pipelines.
Thực hành: Cài Kubeflow.
Ngày 49: Training Operator
Mục tiêu: Job training khai báo (nối Layer 4).
Lý thuyết: PyTorchJob/TFJob, gang scheduling.
Thực hành: Chạy PyTorchJob multi-GPU.
Ngày 50: Kubeflow Pipelines
Mục tiêu: Pipeline ML.
Lý thuyết: component, DAG, artifact.
Thực hành: Pipeline train → eval.
Ngày 51: Katib
Mục tiêu: HPO trên k8s.
Lý thuyết: experiment, trial, metric.
Thực hành: HPO bằng Katib.
Ngày 52: Gang scheduling
Mục tiêu: Chạy job all-or-nothing.
Lý thuyết: Volcano/gang scheduling, tránh deadlock GPU.
Thực hành: Gang schedule một job phân tán.
Ngày 53: Elastic training
Mục tiêu: Chịu thay đổi tài nguyên.
Lý thuyết: elastic (torch elastic), preemption.
Thực hành: Training co giãn số worker.
Ngày 54: Data loading bottleneck
Mục tiêu: GPU không đói data (nối Layer 9).
Lý thuyết: data pipeline, prefetch, sharding.
Thực hành: Tìm + sửa nghẽn data loading.
Ngày 55: Training observability
Mục tiêu: Nhìn training (nối Layer 7).
Lý thuyết: loss curve, throughput, GPU util, TensorBoard/W&B.
Thực hành: Dashboard training metrics.
Ngày 56: Reproducibility
Mục tiêu: Chạy lại ra kết quả cũ.
Lý thuyết: seed, config, env, data version.
Thực hành: Config-driven reproducible run.
Ngày 57: P2 - thiết kế
Mục tiêu: Đóng khung P2.
Lý thuyết: Ray/Kubeflow + FSDP/DeepSpeed + checkpoint.
Thực hách:
training-infra-design.md.
Ngày 58: P2 - training job
Mục tiêu: Chạy phân tán.
Lý thuyết: Ray Train hoặc Kubeflow PyTorchJob.
Thực hành: Multi-GPU training job.
Ngày 59: P2 - FSDP/DeepSpeed + checkpoint + test
Mục tiêu: Bền & hiệu quả.
Lý thuyết: FSDP/ZeRO + fault tolerance.
Thực hành: Train + kill + resume; test.
Ngày 60: CỘT MỐC 60
Mục tiêu: Chốt training infra; release P2.
Lý thuyết: Ôn B; kiểm kê: distributed training + Ray/Kubeflow + checkpoint.
Thực hành: P2 done; đề thi #2 (parallelism/FSDP/Ray/Kubeflow) + tự chấm; blog #99 ("Distributed training: FSDP/DeepSpeed trên Ray và Kubeflow"); tag
layer10-day060; nghỉ nửa ngày. Đã đi 60/150 (40%).
KHỐI C - ML Lifecycle (Ngày 61-78) → P3
Ngày 61: ML lifecycle overview
Mục tiêu: Vòng đời mô hình.
Lý thuyết: data → train → track → register → deploy → monitor.
Thực hành: Vẽ lifecycle.
Ngày 62: Experiment tracking
Mục tiêu: Ghi lại mọi lần chạy.
Lý thuyết: MLflow tracking, run, experiment.
Thực hành: Track một training run.
Ngày 63: MLflow - chi tiết
Mục tiêu: Params/metrics/artifacts.
Lý thuyết: log param/metric/artifact/model.
Thực hành: So sánh nhiều run.
Ngày 64: Model registry
Mục tiêu: Quản lý model version.
Lý thuyết: MLflow registry, stages.
Thực hành: Register model + promote.
Ngày 65: Model versioning & stages
Mục tiêu: Quản lý vòng đời model.
Lý thuyết: staging/production/archived, approval.
Thực hành: Workflow promote model.
Ngày 66: Model lineage
Mục tiêu: Truy vết model.
Lý thuyết: lineage: data → code → model.
Thực hành: Ghi lineage cho một model.
Ngày 67: Feature store - vì sao
Mục tiêu: Feature nhất quán train/serve.
Lý thuyết: training-serving skew, reuse feature.
Thực hành: Xác định feature dùng chung.
Ngày 68: Feast - offline/online
Mục tiêu: Store hai tầng.
Lý thuyết: offline store (train), online store (serve).
Thực hành: Dựng Feast; định nghĩa feature.
Ngày 69: Feast - serving & PIT
Mục tiêu: Feature đúng thời điểm.
Lý thuyết: point-in-time correctness, online serving latency.
Thực hành: Serve feature online + PIT join.
Ngày 70: Feature pipelines
Mục tiêu: Tính feature (nối Layer 9).
Lý thuyết: batch + streaming feature (từ Layer 9).
Thực hành: Pipeline tính feature vào Feast.
Ngày 71: Data & model versioning
Mục tiêu: Tái lập được.
Lý thuyết: DVC, data version + model version.
Thực hành: Version một dataset + model.
Ngày 72: ML metadata & lineage
Mục tiêu: Governance ML (nối Layer 9).
Lý thuyết: metadata store, lineage end-to-end.
Thực hành: Lineage từ data tới model deployed.
Ngày 73: Model packaging
Mục tiêu: Đóng gói để serve.
Lý thuyết: MLflow model format, container, artifact.
Thực hành: Package model để deploy.
Ngày 74: CI/CD cho ML
Mục tiêu: Tự động hoá (nối Layer 6).
Lý thuyết: train→eval→register→deploy pipeline, gate.
Thực hành: Pipeline CI/CD ML.
Ngày 75: ML golden path
Mục tiêu: Đường chuẩn cho ML team (nối Layer 6).
Lý thuyết: scaffold từ train tới serve.
Thực hành: Golden path cho một model.
Ngày 76: P3 - thiết kế
Mục tiêu: Đóng khung P3.
Lý thuyết: MLflow tracking+registry + Feast.
Thực hách:
ml-lifecycle-design.md.
Ngày 77: P3 - MLflow + Feast
Mục tiêu: Lifecycle hoạt động.
Lý thuyết: track+register + feature store.
Thực hành: Train → track → register + feature serving.
Ngày 78: P3 - ML lifecycle
Mục tiêu: Release P3.
Lý thuyết: rà "done": tracking + registry + feature store + lineage.
Thực hành: Đóng gói + blog #100 ("ML lifecycle: MLflow tracking/registry và feature store với Feast"). P3 done.
KHỐI D - Serving (Ngày 79-96) → P4
Ngày 79: Model serving - patterns
Mục tiêu: Cách phục vụ model.
Lý thuyết: online (realtime) vs batch vs streaming.
Thực hành: Chọn pattern theo use case.
Ngày 80: Serving requirements
Mục tiêu: Ràng buộc serving.
Lý thuyết: latency, throughput, scale, cost.
Thực hành: Đặt SLO serving (nối Layer 7).
Ngày 81: KServe - InferenceService
Mục tiêu: Serving trên k8s.
Lý thuyết: InferenceService CRD (nối Layer 4), predictor/transformer.
Thực hành: Deploy model bằng KServe.
Ngày 82: KServe - autoscaling
Mục tiêu: Co giãn serving.
Lý thuyết: serverless, scale-to-zero, concurrency (nối Layer 4).
Thực hành: Scale-to-zero + autoscale theo tải.
Ngày 83: KServe - canary/A-B
Mục tiêu: Rollout an toàn (nối Layer 6).
Lý thuyết: canary traffic, A/B model.
Thực hành: Canary một model version mới.
Ngày 84: Triton - multi-framework
Mục tiêu: Serving hiệu năng cao.
Lý thuyết: multi-backend (PyTorch/TF/ONNX/TensorRT).
Thực hành: Serve model bằng Triton.
Ngày 85: Triton - dynamic batching
Mục tiêu: Tăng throughput.
Lý thuyết: dynamic batching, gộp request.
Thực hành: Bật dynamic batching; đo throughput.
Ngày 86: Triton - ensemble
Mục tiêu: Pipeline model.
Lý thuyết: model ensemble, pre/post-processing.
Thực hành: Ensemble pre → model → post.
Ngày 87: Model optimization
Mục tiêu: Serve nhanh hơn.
Lý thuyết: ONNX, TensorRT, graph optimization.
Thực hành: Convert + tối ưu một model.
Ngày 88: Autoscaling inference
Mục tiêu: GPU serving co giãn (nối Layer 4).
Lý thuyết: GPU autoscaling, KEDA cho GPU.
Thực hành: Auto-scale GPU serving theo tải.
Ngày 89: Serving observability
Mục tiêu: Nhìn serving (nối Layer 7).
Lý thuyết: latency/throughput/error, model metrics.
Thực hành: Dashboard serving + alert.
Ngày 90: CỘT MỐC 90
Mục tiêu: Chốt serving nền.
Lý thuyết: Ôn C + đầu D; kiểm kê: ML lifecycle (P3) + KServe/Triton serving.
Thực hành: Đề thi #3 (KServe/Triton/serving) + tự chấm; blog #101 ("Model serving trên Kubernetes với KServe và Triton"); tag
layer10-day090; nghỉ nửa ngày. Đã đi 90/150 (60%).
Ngày 91: Multi-model & GPU sharing
Mục tiêu: Nhiều model một GPU.
Lý thuyết: multi-model serving, MIG/MPS cho serving.
Thực hành: Nhiều model chia sẻ GPU.
Ngày 92: Batch inference
Mục tiêu: Suy luận khối lượng lớn.
Lý thuyết: batch job, throughput-optimized.
Thực hành: Batch inference trên dataset lớn.
Ngày 93: Serving cost optimization
Mục tiêu: Rẻ hơn (nối Layer 11).
Lý thuyết: right-sizing, spot, scale-to-zero, batching.
Thực hành: Giảm cost serving.
Ngày 94: Model gateway/routing
Mục tiêu: Một cửa cho nhiều model.
Lý thuyết: routing theo version/model, fallback.
Thực hành: Gateway route tới nhiều model.
Ngày 95: P4 - thiết kế
Mục tiêu: Đóng khung P4.
Lý thuyết: KServe/Triton + autoscaling + observability.
Thực hách:
serving-design.md.
Ngày 96: P4 - Model serving
Mục tiêu: Release P4.
Lý thuyết: rà "done": deploy từ registry + autoscale + canary + observ.
Thực hành: Serve model từ registry (P3) + test; blog #102 ("Model serving production: autoscaling, batching, canary"). P4 done.
KHỐI E - LLM Serving (Ngày 97-126) → P5
Ngày 97: LLM inference - khác biệt
Mục tiêu: Vì sao LLM serving khó.
Lý thuyết: autoregressive, memory-bound, variable length.
Thực hành: So LLM serving vs model thường.
Ngày 98: KV cache
Mục tiêu: Bộ nhớ chủ đạo của LLM.
Lý thuyết: KV cache, tại sao tốn bộ nhớ, scale theo context.
Thực hành: Tính KV cache cho một model + context.
Ngày 99: Prefill vs decode
Mục tiêu: Hai pha inference.
Lý thuyết: prefill (compute-bound) vs decode (memory-bound).
Thực hành: Đo latency prefill vs decode.
Ngày 100:
Mục tiêu: Kiểm kê lớn giữa Layer 10.
Lý thuyết: Ôn A→D + đầu E; kiểm kê lớn: GPU (P1) + training (P2) + lifecycle (P3) + serving (P4); đối chiếu "biết dùng tốt".
Thực hành: Đề thi #4 tích lũy (GPU+training+lifecycle+serving) + tự chấm theo rubric; blog #103 ("100 ngày AI platform: từ GPU tới serving model"); tag
layer10-day100; nghỉ nửa ngày. Đã đi 100/150 (67%).
Ngày 101: Continuous batching
Mục tiêu: Tăng throughput LLM.
Lý thuyết: continuous/in-flight batching, khác static batching.
Thực hành: So static vs continuous batching.
Ngày 102: vLLM - PagedAttention
Mục tiêu: Quản lý KV cache hiệu quả.
Lý thuyết: PagedAttention (paging KV như virtual memory, nối Layer 2).
Thực hành: Deploy vLLM; quan sát KV cache.
Ngày 103: vLLM - throughput
Mục tiêu: Serve nhiều request.
Lý thuyết: continuous batching + PagedAttention.
Thực hành: Benchmark throughput vLLM.
Ngày 104: vLLM - deployment
Mục tiêu: Vận hành vLLM.
Lý thuyết: OpenAI-compatible API, config.
Thực hành: Serve một LLM qua vLLM API.
Ngày 105: TGI
Mục tiêu: Lựa chọn khác.
Lý thuyết: Text Generation Inference.
Thực hành: So TGI với vLLM.
Ngày 106: SGLang
Mục tiêu: Structured + hiệu năng.
Lý thuyết: RadixAttention (prefix cache), structured output.
Thực hành: Serve bằng SGLang; test prefix caching.
Ngày 107: TensorRT-LLM
Mục tiêu: Kernel tối ưu NVIDIA.
Lý thuyết: optimized kernels, compile model.
Thực hành: So hiệu năng TensorRT-LLM.
Ngày 108: So sánh engine LLM
Mục tiêu: Chọn engine.
Lý thuyết: vLLM/TGI/SGLang/TensorRT-LLM tradeoff.
Thực hành: Bảng đánh đổi.
Ngày 109: Quantization - INT8/INT4
Mục tiêu: Model nhỏ hơn, nhanh hơn.
Lý thuyết: GPTQ, AWQ, weight-only quant.
Thực hành: Quantize model; đo bộ nhớ/tốc độ.
Ngày 110: Quantization - FP8/GGUF
Mục tiêu: Định dạng khác.
Lý thuyết: FP8, GGUF, KV cache quantization.
Thực hành: Serve model FP8.
Ngày 111: Quantization tradeoff
Mục tiêu: Chất lượng vs tốc độ.
Lý thuyết: accuracy drop, khi nào chấp nhận.
Thực hành: Đo chất lượng trước/sau quant.
Ngày 112: Speculative decoding
Mục tiêu: Giảm latency.
Lý thuyết: draft model + verify, tăng tốc decode.
Thực hành: Bật speculative decoding; đo.
Ngày 113: Prefix/prompt caching
Mục tiêu: Tái dùng compute.
Lý thuyết: prefix cache, prompt caching, system prompt reuse.
Thực hành: Bật prefix caching; đo cải thiện.
Ngày 114: Tensor parallelism (inference)
Mục tiêu: Model to hơn một GPU.
Lý thuyết: TP cho inference, chia layer.
Thực hành: Serve model lớn với TP.
Ngày 115: Multi-GPU LLM serving
Mục tiêu: Serve model rất lớn.
Lý thuyết: TP + pipeline cho serving.
Thực hành: Multi-GPU serving.
Ngày 116: KV cache management
Mục tiêu: Tối ưu bộ nhớ.
Lý thuyết: cache offload, eviction, swapping.
Thực hành: Cấu hình KV cache lớn.
Ngày 117: Throughput vs latency
Mục tiêu: Cân bằng mục tiêu.
Lý thuyết: batch size vs latency, SLA (nối Layer 7).
Thực hành: Tuning theo mục tiêu latency/throughput.
Ngày 118: LLM autoscaling
Mục tiêu: Co giãn LLM serving (nối Layer 4).
Lý thuyết: autoscale theo queue/latency, cold start GPU.
Thực hành: Autoscale LLM endpoint.
Ngày 119: LLM serving cost
Mục tiêu: Kinh tế LLM (nối Layer 11).
Lý thuyết: cost per token, batching để rẻ, right model.
Thực hành: Ước tính + giảm cost/token.
Ngày 120: CỘT MỐC 120
Mục tiêu: Chốt LLM serving core.
Lý thuyết: Ôn E tới giờ; kiểm kê: vLLM/PagedAttention + quantization + batching.
Thực hành: Đề thi #5 (KV cache/vLLM/quantization) + tự chấm; blog #104 ("LLM serving: PagedAttention, continuous batching, quantization"); tag
layer10-day120; nghỉ nửa ngày. Đã đi 120/150 (80%).
Ngày 121: LLM observability
Mục tiêu: Nhìn LLM serving (nối Layer 7).
Lý thuyết: token/s, TTFT, latency, GPU util, cost.
Thực hành: Dashboard LLM serving.
Ngày 122: LoRA serving
Mục tiêu: Nhiều fine-tune, một base.
Lý thuyết: LoRA adapter, multi-LoRA serving.
Thực hành: Serve nhiều LoRA trên một base model.
Ngày 123: Model router/gateway
Mục tiêu: Một cửa cho nhiều LLM.
Lý thuyết: route theo model/cost/latency, fallback.
Thực hành: Gateway route LLM requests.
Ngày 124: P5 - thiết kế
Mục tiêu: Đóng khung P5.
Lý thuyết: vLLM + KV cache + quantization + batching + autoscale.
Thực hách:
llm-serving-design.md.
Ngày 125: P5 - vLLM + quant + batching
Mục tiêu: LLM serving tối ưu.
Lý thuyết: deploy vLLM tối ưu.
Thực hành: LLM endpoint throughput cao + test.
Ngày 126: P5 - LLM serving
Mục tiêu: Release P5.
Lý thuyết: rà "done": vLLM + KV cache + quant + batching + observ.
Thực hành: Đóng gói + blog #105 ("Một LLM serving stack production với vLLM"). P5 done.
KHỐI F - Retrieval & LLMOps (Ngày 127-144)
Ngày 127: RAG - kiến trúc
Mục tiêu: Tăng cường LLM bằng truy xuất.
Lý thuyết: retrieve → augment → generate, vì sao RAG.
Thực hành: Vẽ kiến trúc RAG.
Ngày 128: Embeddings
Mục tiêu: Biểu diễn ngữ nghĩa.
Lý thuyết: embedding model, dimension, similarity.
Thực hành: Sinh embedding cho một corpus.
Ngày 129: Vector database
Mục tiêu: Lưu & tìm vector (nối Layer 3).
Lý thuyết: vector DB (Qdrant/Milvus/pgvector), ANN.
Thực hành: Dựng vector DB; index embedding.
Ngày 130: Vector index recap
Mục tiêu: Bên trong ANN (nối Layer 3).
Lý thuyết: HNSW/IVF, filtering, recall vs latency.
Thực hành: Tuning index; đo recall/latency.
Ngày 131: Chunking
Mục tiêu: Chia tài liệu đúng.
Lý thuyết: chunk size, overlap, semantic chunking.
Thực hành: So chiến lược chunking.
Ngày 132: Retrieval - semantic + hybrid
Mục tiêu: Tìm đúng ngữ cảnh.
Lý thuyết: semantic + keyword (hybrid) search.
Thực hành: Hybrid search; so recall.
Ngày 133: Reranking
Mục tiêu: Tăng chất lượng retrieval.
Lý thuyết: cross-encoder rerank.
Thực hành: Thêm reranker; đo cải thiện.
Ngày 134: RAG pipeline
Mục tiêu: Ghép end-to-end.
Lý thuyết: retrieve → rerank → context → generate.
Thực hành: RAG pipeline hoàn chỉnh.
Ngày 135: RAG ở quy mô
Mục tiêu: RAG production.
Lý thuyết: ingestion pipeline (nối Layer 9), caching, freshness.
Thực hành: RAG với ingestion tự động.
Ngày 136: LLM evaluation
Mục tiêu: Đo chất lượng.
Lý thuyết: benchmark, task metric, RAG eval (faithfulness/relevance).
Thực hành: Eval một RAG system.
Ngày 137: LLM-as-judge
Mục tiêu: Đánh giá tự động.
Lý thuyết: LLM-as-judge, eval framework, pitfalls.
Thực hành: Eval bằng LLM-as-judge.
Ngày 138: Guardrails
Mục tiêu: An toàn đầu vào/ra (nối Layer 8).
Lý thuyết: input/output filtering, safety, topic control.
Thực hành: Áp guardrails cho một endpoint.
Ngày 139: PII & prompt injection
Mục tiêu: Chống tấn công (nối Layer 8).
Lý thuyết: prompt injection, jailbreak, PII leak.
Thực hành: Phòng thủ prompt injection cơ bản.
Ngày 140: LLM observability
Mục tiêu: Nhìn LLMOps (nối Layer 7).
Lý thuyết: trace (prompt/response), token/cost, quality drift.
Thực hành: Trace + cost dashboard cho LLM app.
Ngày 141: Prompt management
Mục tiêu: Quản lý prompt.
Lý thuyết: prompt versioning, template, A/B.
Thực hành: Versioning + A/B prompt.
Ngày 142: Agent infrastructure
Mục tiêu: LLM dùng công cụ.
Lý thuyết: tool calling, orchestration, memory.
Thực hành: Một agent gọi tool đơn giản.
Ngày 143: Fine-tuning infra
Mục tiêu: Tuỳ biến model.
Lý thuyết: LoRA/PEFT, fine-tune pipeline (nối Khối B).
Thực hành: Fine-tune LoRA; serve (nối P5).
Ngày 144: Ôn Khối F
Mục tiêu: Chốt RAG & LLMOps.
Lý thuyết: rà RAG + eval + guardrails + observability.
Thực hành: Chuẩn bị capstone.
KHỐI G - Enterprise AI Platform capstone (Ngày 145-150) → P6 flagship
Ngày 145: P6 - tích hợp
Mục tiêu: Ghép mọi mảnh.
Lý thuyết: train → registry → serve → RAG, dùng chung nhiều team.
Thực hành: Nối P1-P5 vào một platform.
Ngày 146: P6 - train → registry
Mục tiêu: Từ training tới model registered.
Lý thuyết: training (P2) → MLflow registry (P3).
Thực hành: Pipeline train → register.
Ngày 147: P6 - serve from registry
Mục tiêu: Deploy từ registry.
Lý thuyết: serving (P4/P5) lấy model từ registry.
Thực hành: Serve model/LLM từ registry.
Ngày 148: P6 - RAG
Mục tiêu: RAG dùng chung.
Lý thuyết: vector DB + LLM serving (P5) + retrieval.
Thực hành: RAG endpoint trên platform.
Ngày 149: P6 - eval + guardrails + observability; ôn Layer 10
Mục tiêu: Vận hành an toàn.
Lý thuyết: eval + guardrails (nối Layer 8) + observability (nối Layer 7); rà toàn layer.
Thực hành: Áp eval/guardrails/observability toàn platform; rà.
Ngày 150: HOÀN THÀNH LAYER 10
Mục tiêu: Chốt AI Platform Engineering ở mức "biết dùng vững".
Lý thuyết: Ôn toàn layer; kiểm kê tổng: P1 GPU infra + P2 training + P3 lifecycle + P4 serving + P5 LLM serving + P6 Enterprise AI Platform (train→registry→serve→RAG).
Thực hành: P6 done; đề thi #6 tích lũy (toàn layer) + tự chấm theo rubric; blog #106 ("Nhìn lại 150 ngày AI platform: từ GPU tới một Enterprise AI Platform với RAG"); tag
layer10-complete; nghỉ nửa ngày.