Skip to main content

Command Palette

Search for a command to run...

Học Platform engineering (4)

Updated
59 min readView as Markdown

LAYER 6 - PLATFORM ENGINEERING

Tài nguyên: Team Topologies (Skelton & Pais), Accelerate (Forsgren/Humble/Kim), DevEx framework (Forsgren et al.), Backstage docs, CNCF Platform Engineering white paper/maturity model, Argo Rollouts/Flagger docs, OpenFeature, DORA reports, Docs for Developers.

KHỐI A - Platform-as-Product & Product Thinking (Ngày 1-24)

Ngày 1: Khởi động Layer 6

  • Mục tiêu: Hiểu platform engineering giải quyết bài toán gì.

  • Lý thuyết: vì sao platform team ra đời, giảm ma sát & cognitive load ở quy mô.

  • Thực hành: Repo platform-eng/; viết một trang "vì sao cần platform".

Ngày 2: Team Topologies

  • Mục tiêu: Mô hình tổ chức nền tảng.

  • Lý thuyết: platform team, stream-aligned, enabling, complicated-subsystem; interaction modes.

  • Thực hành: Vẽ topology cho một tổ chức giả định.

Ngày 3: Platform-as-Product

  • Mục tiêu: Tư duy sản phẩm nội bộ.

  • Lý thuyết: internal customer, adoption-not-mandate, thin platform.

  • Thực hành: Xác định "khách hàng" và giá trị platform.

Ngày 4: Cognitive load & flow

  • Mục tiêu: Nền của DevEx.

  • Lý thuyết: intrinsic/extraneous load, flow state, vì sao giảm tải là mục tiêu.

  • Thực hành: Liệt kê nguồn cognitive load của dev hiện tại.

Ngày 5: Personas

  • Mục tiêu: Biết ai dùng.

  • Lý thuyết: app dev, SRE, security, data, PM - nhu cầu khác nhau.

  • Thực hành: Viết 3 persona chính.

Ngày 6: Stakeholder mapping

  • Mục tiêu: Căn chỉnh kỳ vọng.

  • Lý thuyết: stakeholder, quyền/lợi ích, alignment (nối Leadership cross-cutting).

  • Thực hành: Bản đồ stakeholder + chiến lược giao tiếp.

Ngày 7: Discovery

  • Mục tiêu: Hiểu pain thật.

  • Lý thuyết: interview dev, jobs-to-be-done, pain point.

  • Thực hành: Kịch bản phỏng vấn dev + tổng hợp pain.

Ngày 8: Value proposition

  • Mục tiêu: Platform đáng dùng.

  • Lý thuyết: value prop, thin viable platform, tránh over-build.

  • Thực hành: Viết value proposition canvas.

Ngày 9: Roadmap

  • Mục tiêu: Định hướng nhiều quý.

  • Lý thuyết: outcome-based roadmap, now/next/later.

  • Thực hành: Draft roadmap platform 3 quý.

Ngày 10: Prioritization

  • Mục tiêu: Làm đúng thứ.

  • Lý thuyết: impact vs effort, RICE, opportunity cost.

  • Thực hành: Xếp hạng backlog platform.

Ngày 11: Build vs buy vs adopt

  • Mục tiêu: Không tự làm mọi thứ.

  • Lý thuyết: khi nào dùng OSS/SaaS, khi nào tự xây.

  • Thực hành: Quyết định build/buy cho 3 capability.

Ngày 12: Golden path vs guardrail

  • Mục tiêu: Ba khái niệm nền.

  • Lý thuyết: golden path (paved road) vs guardrail (ràng buộc) vs escape hatch.

  • Thực hành: Phân biệt bằng ví dụ cụ thể.

Ngày 13: Adoption strategy

  • Mục tiêu: Được dùng, không bị ép.

  • Lý thuyết: voluntary adoption, internal marketing (nối Layer 11), champion.

  • Thực hành: Kế hoạch adoption cho một capability.

Ngày 14: Anti-patterns

  • Mục tiêu: Tránh sai lầm kinh điển.

  • Lý thuyết: platform-as-gatekeeper, ivory tower, ticket-ops.

  • Thực hành: Checklist anti-pattern để tự soi.

Ngày 15: Operating model

  • Mục tiêu: Vận hành platform team.

  • Lý thuyết: on-call cho platform, support model, SLA nội bộ.

  • Thực hành: Thiết kế support/on-call model.

Ngày 16: Success metrics (preview)

  • Mục tiêu: Bắc cầu Khối E.

  • Lý thuyết: DORA/DevEx/adoption sẽ đo thế nào.

  • Thực hành: Chọn North Star metric cho platform.

Ngày 17: Platform API thinking

  • Mục tiêu: Mọi thứ là self-service API.

  • Lý thuyết: capability → API/CRD, không qua ticket.

  • Thực hành: Liệt kê capability nên thành API.

Ngày 18: Thinnest viable platform

  • Mục tiêu: Tiến hoá, không big-bang.

  • Lý thuyết: TVP, bắt đầu nhỏ, mở rộng theo nhu cầu.

  • Thực hành: Định nghĩa TVP đầu tiên.

Ngày 19: Developer sentiment

  • Mục tiêu: Lắng nghe định lượng.

  • Lý thuyết: survey design, cadence, hành động theo kết quả.

  • Thực hành: Draft khảo sát DevEx.

Ngày 20: Case studies

  • Mục tiêu: Học từ thực tế.

  • Lý thuyết: Spotify (golden path/Backstage), Netflix, Google.

  • Thực hành: Rút bài học áp dụng được.

Ngày 21: Maturity model

  • Mục tiêu: Biết mình ở đâu.

  • Lý thuyết: CNCF platform engineering maturity model.

  • Thực hành: Tự chấm maturity một tổ chức giả định.

Ngày 22: Capabilities map

  • Mục tiêu: Platform cung cấp gì.

  • Lý thuyết: bản đồ capability (build/deploy/observe/secure/provision).

  • Thực hành: Vẽ capability map mục tiêu.

Ngày 23: Ôn Khối A

  • Mục tiêu: Chốt tư duy sản phẩm.

  • Lý thuyết: rà persona → pain → value → roadmap.

  • Thực hành: Chuẩn bị vision doc.

Ngày 24: Platform Vision & Strategy doc

  • Mục tiêu: Kim chỉ nam.

  • Lý thuyết: vision, principles, roadmap, metrics gói vào một doc.

  • Thực hành: Viết "Platform Vision & Strategy" (dùng xuyên layer).

KHỐI B - Developer Experience & Golden Paths (Ngày 25-54) → P1

Ngày 25: DevEx framework

  • Mục tiêu: Ba trục DevEx.

  • Lý thuyết: feedback loops, cognitive load, flow state (Forsgren et al.).

  • Thực hành: Map pain đã thu về 3 trục.

Ngày 26: Feedback loops

  • Mục tiêu: Rút ngắn vòng phản hồi.

  • Lý thuyết: local dev, CI speed, deploy time, review latency.

  • Thực hành: Đo feedback loop hiện tại; tìm điểm chậm.

Ngày 27: Giảm cognitive load

  • Mục tiêu: Dev tập trung việc chính.

  • Lý thuyết: abstraction, sensible defaults, ẩn phức tạp không cần thiết.

  • Thực hành: Chọn một quy trình rườm rà → đơn giản hoá.

Ngày 28: Inner vs outer loop

  • Mục tiêu: Tối ưu đúng vòng.

  • Lý thuyết: inner (code-build-test local) vs outer (CI-deploy-release).

  • Thực hành: Vẽ hai vòng cho một service.

Ngày 29: Local dev experience

  • Mục tiêu: Inner loop mượt.

  • Lý thuyết: devcontainers, Tilt/Skaffold, hot reload, telepresence.

  • Thực hành: Dựng local dev nhanh cho một service k8s.

Ngày 30: CỘT MỐC 30

  • Mục tiêu: Chốt tư duy sản phẩm + DevEx.

  • Lý thuyết: Ôn A + đầu B; kiểm kê: vision doc + hiểu DevEx.

  • Thực hành: Đề thi #1 (platform-as-product/DevEx) + tự chấm; blog #60 ("Platform-as-Product: coi hạ tầng như một sản phẩm cho developer"); tag layer6-day030; nghỉ nửa ngày. Đã đi 30/180 (17%).

Ngày 31: Golden path - định nghĩa

  • Mục tiêu: Con đường mặc định tốt.

  • Lý thuyết: "new service to prod in minutes", opinionated.

  • Thực hành: Đặc tả golden path mục tiêu.

Ngày 32: Paved road & escape hatch

  • Mục tiêu: Mặc định tốt nhưng không cưỡng ép.

  • Lý thuyết: paved road, escape hatch khi cần khác biệt.

  • Thực hành: Xác định điểm cho phép "đi ra khỏi đường".

Ngày 33: Scaffolding concept

  • Mục tiêu: Sinh dự án chuẩn.

  • Lý thuyết: software template, scaffolder, cookiecutter-style.

  • Thực hành: Sinh một service từ template thủ công.

Ngày 34: Repo templates

  • Mục tiêu: Cấu trúc chuẩn.

  • Lý thuyết: layout, CI wired-in, deploy config sẵn.

  • Thực hành: Repo template có sẵn CI + deploy.

Ngày 35: Standardized CI

  • Mục tiêu: CI tái dùng.

  • Lý thuyết: reusable workflow/pipeline, DRY.

  • Thực hành: Reusable CI pipeline dùng chung nhiều repo.

Ngày 36: Standardized build

  • Mục tiêu: Build không cần Dockerfile thủ công.

  • Lý thuyết: Cloud Native Buildpacks, ko, BuildKit (nối Layer 4).

  • Thực hành: Build image bằng buildpacks không viết Dockerfile.

Ngày 37: Standardized deploy

  • Mục tiêu: Deploy nhất quán.

  • Lý thuyết: helm/kustomize generation, GitOps (nối Layer 4).

  • Thực hành: Sinh manifest deploy từ metadata.

Ngày 38: Service catalog thinking

  • Mục tiêu: Bắc cầu Backstage.

  • Lý thuyết: vì sao cần catalog service/ownership.

  • Thực hành: Phác mô hình catalog.

Ngày 39: Golden path - web service

  • Mục tiêu: Đường cho stateless web.

  • Lý thuyết: template + CI + deploy + observ + docs.

  • Thực hành: Thiết kế golden path web service.

Ngày 40: Golden path - worker/batch

  • Mục tiêu: Đường cho job.

  • Lý thuyết: queue consumer, cronjob (nối Layer 4).

  • Thực hành: Thiết kế golden path worker.

Ngày 41: Golden path - data pipeline

  • Mục tiêu: Đường cho data (preview Layer 9).

  • Lý thuyết: ingest → transform → store, orchestration.

  • Thực hành: Phác golden path data (khái niệm).

Ngày 42: Docs baked in

  • Mục tiêu: Tài liệu đi kèm mặc định.

  • Lý thuyết: docs-as-code trong template (TechDocs preview).

  • Thực hành: Template có sẵn khung docs.

Ngày 43: Observability baked in

  • Mục tiêu: Quan sát tự động (nối Layer 7).

  • Lý thuyết: auto metrics/logs/traces, dashboard mặc định.

  • Thực hành: Template tự nối observability.

Ngày 44: Security baked in

  • Mục tiêu: An toàn mặc định (nối Layer 8).

  • Lý thuyết: secure defaults, scan trong CI, secret injection (nối Layer 5).

  • Thực hành: Template có scan + secure defaults.

Ngày 45: Cost visibility baked in

  • Mục tiêu: Thấy chi phí (nối Layer 11).

  • Lý thuyết: tagging tự động, cost estimate.

  • Thực hành: Template gắn tag cost chuẩn.

Ngày 46: P1 - thiết kế golden path

  • Mục tiêu: Đóng khung P1.

  • Lý thuyết: end-to-end: create → build → deploy → observe.

  • Thực hách: golden-path-design.md.

Ngày 47: P1 - template + scaffolding

  • Mục tiêu: Sinh service chuẩn.

  • Lý thuyết: parameterized template.

  • Thực hành: Scaffolder sinh repo service đầy đủ.

Ngày 48: P1 - CI pipeline

  • Mục tiêu: Build/test/scan tự động.

  • Lý thuyết: reusable CI + quality gate.

  • Thực hành: CI hoạt động ngay khi sinh service.

Ngày 49: P1 - deploy (GitOps)

  • Mục tiêu: Ra prod an toàn.

  • Lý thuyết: GitOps (nối Layer 4), env promotion.

  • Thực hành: Deploy tự động qua GitOps.

Ngày 50: P1 - observability + docs

  • Mục tiêu: Vận hành được ngay.

  • Lý thuyết: metrics/logs/traces + docs auto.

  • Thực hành: Service mới có sẵn dashboard + docs.

Ngày 51: P1 - đo time-to-first-deploy

  • Mục tiêu: Chứng minh giá trị.

  • Lý thuyết: đo từ "tạo" tới "chạy prod".

  • Thực hành: Đo thời gian; đặt mục tiêu (ví dụ < 30 phút).

Ngày 52: P1 - đo ma sát & lặp

  • Mục tiêu: Cải thiện liên tục.

  • Lý thuyết: friction log, dev feedback.

  • Thực hành: Sửa 3 điểm ma sát lớn nhất.

Ngày 53: P1 - docs & examples

  • Mục tiêu: Dev tự dùng được.

  • Lý thuyết: getting-started, ví dụ.

  • Thực hành: Viết docs golden path.

Ngày 54: P1 - Golden Path template

  • Mục tiêu: Release P1.

  • Lý thuyết: rà "done": create→prod tự động, có observ/docs/security.

  • Thực hành: Đóng gói + blog #61 ("Golden path: đưa một service ra prod trong vài phút"). P1 done.

KHỐI C - Internal Developer Platform (Ngày 55-108) → P2

Ngày 55: IDP - khái niệm

  • Mục tiêu: Bức tranh IDP.

  • Lý thuyết: portal + orchestrator + platform API, một cửa cho dev.

  • Thực hành: Vẽ kiến trúc IDP mục tiêu.

Ngày 56: IDP building blocks

  • Mục tiêu: Thành phần cốt lõi.

  • Lý thuyết: software catalog, scaffolder, TechDocs, scorecards.

  • Thực hành: Map building blocks vào nhu cầu.

Ngày 57: Backstage - kiến trúc

  • Mục tiêu: Portal phổ biến nhất.

  • Lý thuyết: plugin architecture, frontend/backend, catalog.

  • Thực hành: Đọc kiến trúc Backstage.

Ngày 58: Backstage - setup

  • Mục tiêu: Dựng portal.

  • Lý thuyết: app structure, config, DB.

  • Thực hành: Chạy Backstage local.

Ngày 59: Software Catalog

  • Mục tiêu: Bản đồ hệ thống.

  • Lý thuyết: entity model (Component/System/API/Resource/Group).

  • Thực hành: Thêm entity đầu tiên vào catalog.

Ngày 60: CỘT MỐC 60

  • Mục tiêu: Chốt golden path + vào IDP.

  • Lý thuyết: Ôn B + đầu C; kiểm kê: golden path (P1) + Backstage chạy.

  • Thực hành: Đề thi #2 (golden path/DevEx/catalog) + tự chấm; blog #62 ("Từ golden path tới một Internal Developer Platform"); tag layer6-day060; nghỉ nửa ngày. Đã đi 60/180 (33%).

Ngày 61: Catalog - ownership & relations

  • Mục tiêu: Ai sở hữu gì.

  • Lý thuyết: catalog-info.yaml, owner, dependsOn/partOf relations.

  • Thực hành: Mô hình hoá quan hệ giữa services.

Ngày 62: Catalog - discovery

  • Mục tiêu: Tự động cập nhật.

  • Lý thuyết: auto-ingest từ repo/annotation, providers.

  • Thực hành: Auto-discover services từ nhiều repo.

Ngày 63: TechDocs

  • Mục tiêu: Docs-as-code trong portal.

  • Lý thuyết: TechDocs, mkdocs, docs cạnh code.

  • Thực hành: Publish docs một service lên portal.

Ngày 64: Scaffolder

  • Mục tiêu: Golden path trong portal.

  • Lý thuyết: software templates, form → action.

  • Thực hành: Tạo template Backstage sinh service.

Ngày 65: Scaffolder - actions

  • Mục tiêu: Tùy biến sinh dự án.

  • Lý thuyết: built-in actions, custom action.

  • Thực hành: Viết custom action (ví dụ tạo repo + register catalog).

Ngày 66: Scaffolder - wire golden path

  • Mục tiêu: Ghép P1 vào IDP.

  • Lý thuyết: template gọi golden path template (P1).

  • Thực hành: Dev bấm nút → sinh service golden path.

Ngày 67: Plugin ecosystem

  • Mục tiêu: Không làm lại từ đầu.

  • Lý thuyết: plugin có sẵn (CI/CD, k8s, cost, incident).

  • Thực hành: Cài + cấu hình 2 plugin hữu ích.

Ngày 68: Custom plugin - frontend

  • Mục tiêu: Mở rộng portal.

  • Lý thuyết: frontend plugin, card, page.

  • Thực hành: Viết plugin hiển thị deploy status.

Ngày 69: Custom plugin - backend

  • Mục tiêu: Tích hợp hệ ngoài.

  • Lý thuyết: backend plugin, gọi API ngoài.

  • Thực hành: Backend plugin lấy dữ liệu từ một hệ nội bộ.

Ngày 70: Permissions

  • Mục tiêu: Kiểm soát trong portal.

  • Lý thuyết: permission framework, policy.

  • Thực hành: Giới hạn ai được dùng scaffolder nào.

Ngày 71: Auth & identity

  • Mục tiêu: Đăng nhập (nối Layer 5).

  • Lý thuyết: OIDC/SSO integration, user→group.

  • Thực hành: SSO + map group vào ownership.

Ngày 72: CI/CD view

  • Mục tiêu: Thấy pipeline trong portal.

  • Lý thuyết: integrate CI status vào catalog entity.

  • Thực hành: Hiển thị CI/CD của service trong portal.

Ngày 73: k8s plugin

  • Mục tiêu: Thấy workload (nối Layer 4).

  • Lý thuyết: Backstage k8s plugin, map entity → workload.

  • Thực hành: Xem pod/deploy của service trong portal.

Ngày 74: Cost & observability view

  • Mục tiêu: Một cửa vận hành.

  • Lý thuyết: nhúng dashboard/cost (nối Layer 7/11).

  • Thực hành: Nhúng metrics + cost vào trang service.

Ngày 75: Platform API

  • Mục tiêu: Capability là API.

  • Lý thuyết: expose capability qua API/CRD (nối Layer 4 operator).

  • Thực hành: Thiết kế một platform API (ví dụ "provision database").

Ngày 76: Platform orchestrator

  • Mục tiêu: Điều phối provisioning.

  • Lý thuyết: Score/Kratix/Humanitec - tách workload khỏi platform.

  • Thực hành: Đọc mô hình orchestrator; chọn hướng.

Ngày 77: Score

  • Mục tiêu: Workload spec trung lập.

  • Lý thuyết: Score spec, abstract khỏi platform cụ thể.

  • Thực hành: Viết một Score file cho service.

Ngày 78: Kratix

  • Mục tiêu: Platform theo "promise".

  • Lý thuyết: Kratix promise, pipeline (nối Layer 4 operators).

  • Thực hành: Đọc promise-based platform; ý tưởng áp dụng.

Ngày 79: Crossplane làm backend

  • Mục tiêu: Provisioning thật (nối Layer 4/5).

  • Lý thuyết: IDP request → Crossplane XR → tài nguyên cloud.

  • Thực hành: Nối một self-service request tới Crossplane.

Ngày 80: Self-service - flow

  • Mục tiêu: Request → provisioned tự động.

  • Lý thuyết: portal form → orchestrator → provision, không ticket.

  • Thực hành: Thiết kế một self-service flow đầu-cuối.

Ngày 81: Self-service - environment

  • Mục tiêu: Env theo yêu cầu.

  • Lý thuyết: ephemeral/preview environments, TTL.

  • Thực hành: Self-service tạo preview env cho PR.

Ngày 82: Self-service - resource

  • Mục tiêu: DB/bucket theo yêu cầu.

  • Lý thuyết: golden defaults (encryption/backup), Crossplane.

  • Thực hành: Self-service provision một database an toàn.

Ngày 83: Self-service + guardrails

  • Mục tiêu: Tự do trong khuôn khổ (nối Layer 5).

  • Lý thuyết: policy auto-áp (OPA/Kyverno), quota.

  • Thực hành: Guardrail tự động áp khi provision.

Ngày 84: Multi-tenancy trong IDP

  • Mục tiêu: Nhiều team dùng chung (nối Layer 4).

  • Lý thuyết: tenant model, isolation, ownership.

  • Thực hành: Thiết kế tenancy cho portal.

Ngày 85: RBAC & ownership

  • Mục tiêu: Đúng người đúng quyền.

  • Lý thuyết: ownership → quyền, team scoping.

  • Thực hành: Gắn quyền theo ownership catalog.

Ngày 86: Scorecards - khái niệm

  • Mục tiêu: Đo sức khoẻ kỹ thuật.

  • Lý thuyết: tech health, standards, maturity check.

  • Thực hành: Chọn bộ tiêu chí scorecard.

Ngày 87: Scorecards - định nghĩa chuẩn

  • Mục tiêu: Chuẩn hoá kỳ vọng.

  • Lý thuyết: has-docs/has-oncall/has-tests/has-slo (nối Layer 11).

  • Thực hành: Viết bộ standard cho service.

Ngày 88: Scorecards - tự động & gamify

  • Mục tiêu: Cải thiện tự nguyện.

  • Lý thuyết: automated check, leaderboard, nudge.

  • Thực hành: Chấm điểm tự động cho các service.

Ngày 89: Golden path adoption qua portal

  • Mục tiêu: Đẩy adoption.

  • Lý thuyết: làm golden path là đường dễ nhất.

  • Thực hành: Đo tỉ lệ service dùng golden path.

Ngày 90: CỘT MỐC 90

  • Mục tiêu: Chốt nửa IDP.

  • Lý thuyết: Ôn C tới giờ; kiểm kê: catalog + scaffolder + plugin + self-service khởi đầu.

  • Thực hành: Đề thi #3 (Backstage/catalog/scaffolder/self-service) + tự chấm; blog #63 ("Backstage: catalog, scaffolder và self-service cho developer"); tag layer6-day090; nghỉ nửa ngày. Đã đi 90/180 (50%).

Ngày 91: Onboarding experience

  • Mục tiêu: Dev mới productive nhanh.

  • Lý thuyết: onboarding path, "day-1 to first commit".

  • Thực hành: Thiết kế onboarding flow trong portal.

Ngày 92: Day-2 self-service

  • Mục tiêu: Vận hành cũng self-service.

  • Lý thuyết: scale/rotate secret/rollback qua portal (nối Layer 5/11).

  • Thực hành: Thêm day-2 action vào portal.

Ngày 93: P2 - thiết kế IDP

  • Mục tiêu: Đóng khung P2.

  • Lý thuyết: catalog + scaffolder + self-service + scorecards + auth.

  • Thực hách: idp-design.md.

Ngày 94: P2 - catalog & ownership

  • Mục tiêu: Nền IDP.

  • Lý thuyết: auto-discovery + ownership.

  • Thực hành: Catalog đầy đủ service + owner.

Ngày 95: P2 - scaffolder + golden path

  • Mục tiêu: Self-service tạo service.

  • Lý thuyết: wire P1 golden path.

  • Thực hành: Bấm nút → service golden path chạy prod.

Ngày 96: P2 - TechDocs

  • Mục tiêu: Docs tập trung.

  • Lý thuyết: docs-as-code cho mọi service.

  • Thực hành: TechDocs cho các service.

Ngày 97: P2 - custom plugin

  • Mục tiêu: Giá trị riêng.

  • Lý thuyết: plugin phù hợp nhu cầu (deploy/incident).

  • Thực hành: Viết một custom plugin hữu ích.

Ngày 98: P2 - self-service provisioning

  • Mục tiêu: Provision qua portal.

  • Lý thuyết: Crossplane backend (nối Layer 4/5).

  • Thực hành: Self-service provision resource với guardrail.

Ngày 99: P2 - scorecards

  • Mục tiêu: Đo chuẩn kỹ thuật.

  • Lý thuyết: automated scorecard.

  • Thực hành: Scorecard chạy cho toàn catalog.

Ngày 100:

  • Mục tiêu: Kiểm kê lớn giữa Layer 6.

  • Lý thuyết: Ôn A→C; kiểm kê lớn: vision + golden path (P1) + IDP đang thành hình; đối chiếu "Sâu".

  • Thực hành: Đề thi #4 tích lũy (product/DevEx/golden path/IDP) + tự chấm theo rubric; blog #64 ("100 ngày platform engineering: từ tư duy sản phẩm tới một IDP self-service"); tag layer6-day100; nghỉ nửa ngày. Đã đi 100/180 (56%).

Ngày 101: P2 - auth & permissions

  • Mục tiêu: An toàn portal.

  • Lý thuyết: SSO + permission theo ownership.

  • Thực hành: Áp auth + permission.

Ngày 102: P2 - multi-tenancy

  • Mục tiêu: Nhiều team.

  • Lý thuyết: tenant isolation trong portal.

  • Thực hành: Cấu hình tenancy.

Ngày 103: P2 - observability/cost views

  • Mục tiêu: Một cửa vận hành.

  • Lý thuyết: nhúng metrics/cost (nối Layer 7/11).

  • Thực hành: Trang service có metrics + cost.

Ngày 104: P2 - self-service guardrails

  • Mục tiêu: An toàn tự động.

  • Lý thuyết: policy áp khi self-service (nối Layer 5).

  • Thực hành: Guardrail hoạt động trên mọi request.

Ngày 105: P2 - onboarding flow

  • Mục tiêu: Trải nghiệm dev mới.

  • Lý thuyết: getting-started tích hợp.

  • Thực hành: Test onboarding với "dev mới".

Ngày 106: P2 - đo self-service success

  • Mục tiêu: Chứng minh giá trị.

  • Lý thuyết: lead time provisioning, ticket giảm.

  • Thực hành: Đo trước/sau self-service.

Ngày 107: P2 - docs & demo

  • Mục tiêu: Sẵn sàng release.

  • Lý thuyết: docs portal + demo.

  • Thực hành: Viết docs + demo E2E.

Ngày 108: P2 - Backstage IDP

  • Mục tiêu: Release P2.

  • Lý thuyết: rà "done": catalog + scaffolder + self-service + scorecards + auth.

  • Thực hành: Đóng gói + blog #65 ("Một IDP hoàn chỉnh trên Backstage"). P2 done.

KHỐI D - Release Engineering / Progressive Delivery (Ngày 109-144) → P3

Ngày 109: Release engineering

  • Mục tiêu: Release an toàn, lặp lại.

  • Lý thuyết: reproducible build, versioning, artifact promotion.

  • Thực hành: Định nghĩa quy trình release chuẩn.

Ngày 110: Deployment strategies

  • Mục tiêu: Bản đồ chiến lược.

  • Lý thuyết: recreate, rolling, blue-green, canary - đánh đổi.

  • Thực hành: Bảng chọn strategy theo bối cảnh.

Ngày 111: Rolling update

  • Mục tiêu: Chiến lược mặc định k8s (nối Layer 4).

  • Lý thuyết: maxSurge/maxUnavailable, readiness gate.

  • Thực hách: Rolling update không downtime.

Ngày 112: Blue-green

  • Mục tiêu: Chuyển đổi tức thì.

  • Lý thuyết: hai môi trường, switch, rollback nhanh.

  • Thực hành: Blue-green cho một service.

Ngày 113: Canary

  • Mục tiêu: Rủi ro thấp.

  • Lý thuyết: dịch traffic dần, quan sát, promote.

  • Thực hành: Canary thủ công theo % traffic.

Ngày 114: Traffic shifting

  • Mục tiêu: Cơ chế điều hướng.

  • Lý thuyết: mesh (nối Layer 4), ingress/Gateway API, LB weight.

  • Thực hành: Dịch traffic qua mesh/gateway.

Ngày 115: Progressive delivery

  • Mục tiêu: Tự động hoá canary.

  • Lý thuyết: deploy tách release, analysis-driven promotion, auto-rollback.

  • Thực hành: Vẽ vòng progressive delivery.

Ngày 116: Argo Rollouts - nền

  • Mục tiêu: Công cụ progressive delivery.

  • Lý thuyết: Rollout CRD, replaces Deployment.

  • Thực hành: Chuyển một Deployment sang Rollout.

Ngày 117: Argo Rollouts - canary steps

  • Mục tiêu: Điều khiển từng bước.

  • Lý thuyết: steps, setWeight, pause, promote.

  • Thực hành: Canary nhiều bước có pause.

Ngày 118: Argo Rollouts - analysis

  • Mục tiêu: Promote theo số liệu.

  • Lý thuyết: AnalysisTemplate, metric provider (Prometheus, nối Layer 7).

  • Thực hành: Analysis dựa trên error rate/latency.

Ngày 119: Argo Rollouts - auto-rollback

  • Mục tiêu: Tự lùi khi xấu.

  • Lý thuyết: abort khi metric vi phạm, rollback.

  • Thực hành: Deploy tệ → tự rollback.

Ngày 120: CỘT MỐC 120

  • Mục tiêu: Chốt canary tự động.

  • Lý thuyết: Ôn D tới giờ; kiểm kê: Argo Rollouts canary + analysis + rollback.

  • Thực hành: Đề thi #5 (deployment strategies/progressive delivery) + tự chấm; blog #66 ("Progressive delivery: canary tự động với promote/rollback theo số liệu"); tag layer6-day120; nghỉ nửa ngày. Đã đi 120/180 (67%).

Ngày 121: Flagger

  • Mục tiêu: Lựa chọn khác.

  • Lý thuyết: Flagger, mesh/ingress integration, canary analysis.

  • Thực hành: Canary bằng Flagger.

Ngày 122: Flagger - webhooks & analysis

  • Mục tiêu: Kiểm thử trong canary.

  • Lý thuyết: pre/post-rollout webhook, load test, metric check.

  • Thực hành: Thêm smoke test vào canary.

Ngày 123: Argo Rollouts vs Flagger

  • Mục tiêu: Chọn công cụ.

  • Lý thuyết: so sánh mô hình, integration.

  • Thực hành: Bảng đánh đổi.

Ngày 124: SLO-based promotion

  • Mục tiêu: Gắn với độ tin cậy (nối Layer 7/11).

  • Lý thuyết: promote theo SLO/error budget, không chỉ metric thô.

  • Thực hành: Analysis theo SLO.

Ngày 125: Feature flags - nền

  • Mục tiêu: Tách deploy khỏi release.

  • Lý thuyết: flag, dark launch, kill switch.

  • Thực hành: Bọc một tính năng sau flag.

Ngày 126: OpenFeature

  • Mục tiêu: Chuẩn trung lập.

  • Lý thuyết: OpenFeature API, provider, evaluation.

  • Thực hành: Tích hợp OpenFeature SDK.

Ngày 127: Flag providers

  • Mục tiêu: Backend flag.

  • Lý thuyết: Unleash/Flagsmith/LaunchDarkly.

  • Thực hành: Dựng Unleash; đánh giá flag.

Ngày 128: Flags - targeting & rollout

  • Mục tiêu: Bật dần có kiểm soát.

  • Lý thuyết: percentage rollout, targeting rules, kill switch.

  • Thực hành: Rollout tính năng 1%→100% theo segment.

Ngày 129: Flags - lifecycle & debt

  • Mục tiêu: Tránh nợ flag.

  • Lý thuyết: flag lifecycle, cleanup, ownership.

  • Thực hành: Quy trình dọn flag chết.

Ngày 130: Experimentation

  • Mục tiêu: Quyết định bằng dữ liệu.

  • Lý thuyết: A/B test trên flag, metric quyết định.

  • Thực hành: Thiết kế một A/B experiment.

Ngày 131: Release orchestration

  • Mục tiêu: Nhiều service cùng release.

  • Lý thuyết: coordination, dependency ordering.

  • Thực hành: Phối hợp release 2 service phụ thuộc.

Ngày 132: Rollback & DB migration

  • Mục tiêu: Lùi an toàn (nối Layer 3).

  • Lý thuyết: backward-compatible migration, expand-contract.

  • Thực hành: Migration an toàn cho rollback.

Ngày 133: Deployment safety

  • Mục tiêu: Chặn deploy tệ sớm.

  • Lý thuyết: pre/post check, smoke test, health gate.

  • Thực hành: Thêm safety gate vào pipeline.

Ngày 134: GitOps + progressive delivery

  • Mục tiêu: Ghép với GitOps (nối Layer 4).

  • Lý thuyết: Rollout qua GitOps, drift.

  • Thực hành: Progressive delivery điều khiển bằng Git.

Ngày 135: Release governance

  • Mục tiêu: Kiểm soát mà không cản.

  • Lý thuyết: approval, change window, freeze, audit.

  • Thực hành: Thiết kế governance nhẹ.

Ngày 136: Incident-driven rollback

  • Mục tiêu: Nối vận hành (nối Layer 11).

  • Lý thuyết: rollback trong incident, runbook.

  • Thực hành: Runbook rollback nhanh.

Ngày 137: P3 - thiết kế pipeline

  • Mục tiêu: Đóng khung P3.

  • Lý thuyết: canary + analysis + flags + auto-rollback + GitOps.

  • Thực hách: progressive-delivery-design.md.

Ngày 138: P3 - Argo Rollouts + mesh

  • Mục tiêu: Canary thật.

  • Lý thuyết: Rollout + traffic qua mesh (nối Layer 4).

  • Thực hành: Canary theo % traffic.

Ngày 139: P3 - SLO analysis + rollback

  • Mục tiêu: An toàn tự động.

  • Lý thuyết: promote/abort theo SLO.

  • Thực hành: Auto-rollback khi SLO vi phạm.

Ngày 140: P3 - feature flags

  • Mục tiêu: Tách release.

  • Lý thuyết: OpenFeature + provider.

  • Thực hành: Kết hợp canary + flag targeting.

Ngày 141: P3 - wire vào golden path/IDP

  • Mục tiêu: Mọi service được progressive delivery mặc định.

  • Lý thuyết: tích hợp P1/P2.

  • Thực hành: Golden path tự có canary + flags.

Ngày 142: P3 - game-day

  • Mục tiêu: Chứng minh an toàn (nối Layer 11).

  • Lý thuyết: deploy lỗi cố ý → tự rollback.

  • Thực hành: Game-day; xác nhận auto-rollback.

Ngày 143: P3 - docs & runbook

  • Mục tiêu: Vận hành được.

  • Lý thuyết: runbook release/rollback.

  • Thực hành: Viết runbook.

Ngày 144: P3 - Progressive delivery pipeline

  • Mục tiêu: Release P3.

  • Lý thuyết: rà "done": canary + analysis + flags + auto-rollback + docs.

  • Thực hành: Đóng gói + blog #67 ("Deploy an toàn: canary theo SLO + feature flags + tự rollback"). P3 done.

KHỐI E - Metrics (Ngày 145-162) → P4

Ngày 145: Vì sao đo

  • Mục tiêu: Outcome không phải output.

  • Lý thuyết: đo để cải thiện, tránh vanity metric.

  • Thực hành: Phân biệt outcome vs output cho platform.

Ngày 146: DORA - 4 metric

  • Mục tiêu: Chuẩn công nghiệp.

  • Lý thuyết: deploy frequency, lead time for changes, change failure rate, time-to-restore.

  • Thực hành: Định nghĩa 4 metric cho tổ chức giả định.

Ngày 147: DORA - nghiên cứu & reliability

  • Mục tiêu: Hiểu khoa học phía sau.

  • Lý thuyết: Accelerate, elite vs low performer, metric thứ 5 (reliability).

  • Thực hành: Đọc DORA report; rút insight.

Ngày 148: Đo DORA

  • Mục tiêu: Lấy số thật.

  • Lý thuyết: instrument pipeline, nguồn dữ liệu (CI/CD, incident).

  • Thực hành: Thiết kế cách thu 4 metric.

Ngày 149: Lead time for changes

  • Mục tiêu: Commit → prod.

  • Lý thuyết: đo lead time, batch size ảnh hưởng.

  • Thực hành: Đo lead time cho một service.

Ngày 150: CỘT MỐC 150

  • Mục tiêu: Chốt release engineering + vào metrics.

  • Lý thuyết: Ôn D + đầu E; kiểm kê: progressive delivery (P3) + hiểu DORA.

  • Thực hành: Đề thi #6 (progressive delivery/DORA) + tự chấm; blog #68 ("Đo platform bằng DORA: deploy frequency, lead time, CFR, MTTR"); tag layer6-day150; nghỉ nửa ngày. Đã đi 150/180 (83%).

Ngày 151: Deploy frequency & batch size

  • Mục tiêu: Ship nhỏ, thường xuyên.

  • Lý thuyết: small batch, giảm rủi ro.

  • Thực hành: Đo tần suất deploy; đề xuất giảm batch.

Ngày 152: CFR & MTTR

  • Mục tiêu: Chất lượng & phục hồi (nối Layer 11).

  • Lý thuyết: change failure rate, time-to-restore, quan hệ với progressive delivery.

  • Thực hành: Đo CFR/MTTR; nối vào incident.

Ngày 153: SPACE framework

  • Mục tiêu: Vượt DORA.

  • Lý thuyết: Satisfaction/Performance/Activity/Communication/Efficiency.

  • Thực hành: Chọn metric SPACE bổ sung.

Ngày 154: DevEx metrics

  • Mục tiêu: Đo trải nghiệm.

  • Lý thuyết: feedback loop/cognitive load/flow - đo thế nào.

  • Thực hành: Bộ metric DevEx.

Ngày 155: Developer surveys

  • Mục tiêu: Định tính đi kèm định lượng.

  • Lý thuyết: thiết kế survey, cadence, hành động.

  • Thực hành: Chạy + phân tích một survey (mô phỏng).

Ngày 156: Scorecards ở quy mô

  • Mục tiêu: Sức khoẻ toàn hệ.

  • Lý thuyết: tech health scorecard aggregate.

  • Thực hành: Dashboard scorecard toàn catalog.

Ngày 157: Tránh gaming metric

  • Mục tiêu: Đo lành mạnh.

  • Lý thuyết: Goodhart's law, balance metric, không xếp hạng cá nhân.

  • Thực hành: Rà bộ metric tránh bị "lách".

Ngày 158: Adoption metrics

  • Mục tiêu: Đo giá trị platform.

  • Lý thuyết: usage, NPS nội bộ, time-to-value, ticket giảm.

  • Thực hành: Định nghĩa adoption metric.

Ngày 159: P4 - thiết kế dashboard

  • Mục tiêu: Đóng khung P4.

  • Lý thuyết: DORA + DevEx + adoption trên một dashboard.

  • Thực hách: metrics-dashboard-design.md.

Ngày 160: P4 - instrument DORA

  • Mục tiêu: Số tự động.

  • Lý thuyết: thu từ pipeline/incident (nối Layer 7).

  • Thực hành: Pipeline emit 4 DORA metric.

Ngày 161: P4 - dashboard + surveys

  • Mục tiêu: Nhìn được toàn cảnh.

  • Lý thuyết: dashboard (nối Layer 7) + kết quả survey.

  • Thực hành: Dashboard DORA/DevEx/adoption sống.

Ngày 162: P4 - Metrics dashboard

  • Mục tiêu: Release P4.

  • Lý thuyết: rà "done": DORA tự động + DevEx + adoption.

  • Thực hành: Đóng gói + blog #69 ("Dashboard đo sức khoẻ platform: DORA, DevEx, adoption"). P4 done.

KHỐI F - Documentation & Technical Communication (Ngày 163-174)

Ngày 163: Docs-as-code

  • Mục tiêu: Docs versioned, review được.

  • Lý thuyết: docs cạnh code, review, publish (TechDocs, nối Khối C).

  • Thực hành: Quy trình docs-as-code.

Ngày 164: Diataxis

  • Mục tiêu: Cấu trúc docs đúng.

  • Lý thuyết: tutorial/how-to/reference/explanation.

  • Thực hành: Phân loại docs hiện có theo Diataxis.

Ngày 165: RFC process

  • Mục tiêu: Đề xuất & đồng thuận.

  • Lý thuyết: RFC lifecycle, review culture (nối Leadership).

  • Thực hành: Viết một RFC platform.

Ngày 166: ADR

  • Mục tiêu: Ghi lại quyết định.

  • Lý thuyết: Architecture Decision Record, context/decision/consequence.

  • Thực hành: Viết 2 ADR cho platform.

Ngày 167: Runbook

  • Mục tiêu: Vận hành khi có sự cố (nối Layer 11).

  • Lý thuyết: runbook chuẩn, actionable step.

  • Thực hành: Viết runbook cho một failure mode.

Ngày 168: API documentation

  • Mục tiêu: Platform tự tài liệu.

  • Lý thuyết: OpenAPI, self-documenting, ví dụ sống.

  • Thực hành: Docs cho một platform API.

Ngày 169: Onboarding docs

  • Mục tiêu: Dev mới tự đi.

  • Lý thuyết: getting-started, "golden path in docs".

  • Thực hành: Viết onboarding guide.

Ngày 170: Viết cho developer

  • Mục tiêu: Rõ ràng, dùng được.

  • Lý thuyết: clarity, ví dụ, ngắn gọn.

  • Thực hành: Rewrite một trang docs rối.

Ngày 171: Discoverability

  • Mục tiêu: Tìm được docs.

  • Lý thuyết: search, navigation, single source.

  • Thực hành: Cải thiện tìm kiếm docs portal.

Ngày 172: Giữ docs sống

  • Mục tiêu: Chống docs cũ.

  • Lý thuyết: ownership, staleness check (scorecard).

  • Thực hành: Scorecard "docs freshness".

Ngày 173: Internal comms

  • Mục tiêu: Cập nhật cho dev.

  • Lý thuyết: changelog, platform update, viral internal doc (nối Leadership).

  • Thực hành: Viết một changelog/update mẫu.

Ngày 174: Ôn Khối F

  • Mục tiêu: Chốt communication.

  • Lý thuyết: rà RFC/ADR/runbook/docs-as-code.

  • Thực hành: Chuẩn bị capstone.

KHỐI G - Platform Product capstone (Ngày 175-180) → P5 flagship

Ngày 175: P5 - tích hợp

  • Mục tiêu: Ghép mọi mảnh thành sản phẩm.

  • Lý thuyết: IDP (P2) + golden path (P1) + progressive delivery (P3) + metrics (P4).

  • Thực hành: Nối tất cả vào một platform.

Ngày 176: P5 - hành trình self-service E2E

  • Mục tiêu: Trải nghiệm đầu-cuối.

  • Lý thuyết: từ "tạo service" → build → canary → prod → observ, tất cả self-service.

  • Thực hành: Chạy trọn hành trình cho một service mới.

Ngày 177: P5 - đo golden path bằng DORA

  • Mục tiêu: Chứng minh tác động.

  • Lý thuyết: DORA cho service qua golden path vs không.

  • Thực hành: Đo & so sánh DORA.

Ngày 178: P5 - platform như sản phẩm thật

  • Mục tiêu: Vận hành chuyên nghiệp.

  • Lý thuyết: docs/RFC/ADR/roadmap/runbook như OSS (nối Khối F).

  • Thực hành: Bộ tài liệu platform hoàn chỉnh.

Ngày 179: P5 - adoption & feedback; ôn Layer 6

  • Mục tiêu: Vòng cải thiện.

  • Lý thuyết: adoption metric, feedback loop, iterate.

  • Thực hành: Thiết lập feedback loop; rà toàn layer.

Ngày 180: HOÀN THÀNH LAYER 6

  • Mục tiêu: Chốt Platform Engineering ở mức Sâu.

  • Lý thuyết: Ôn toàn layer; kiểm kê tổng: P1 golden path + P2 IDP + P3 progressive delivery + P4 metrics + P5 Platform Product tích hợp đo bằng DORA.

  • Thực hành: P5 done; đề thi #7 tích lũy (toàn layer) + tự chấm theo rubric; blog #70 ("Nhìn lại 180 ngày platform engineering: một Platform Product self-service đo bằng DORA"); tag layer6-complete; nghỉ nửa ngày.

LAYER 7 - OBSERVABILITY ENGINEERING

Tài nguyên: Observability Engineering (Majors/Fong-Jones/Miranda), Google SRE Book/Workbook (SLO/alerting), OpenTelemetry docs, Prometheus docs, Grafana docs (Loki/Tempo/Mimir/Pyroscope), Brendan Gregg (profiling), Distributed Tracing in Practice.

KHỐI A - Fundamentals & Instrumentation (OpenTelemetry) (Ngày 1-30) → P1

Ngày 1: Khởi động Layer 7

  • Mục tiêu: Phân biệt monitoring vs observability + dựng lab.

  • Lý thuyết: monitoring (known-unknowns) vs observability (unknown-unknowns).

  • Thực hành: Repo observability/; dựng lab (app mẫu multi-service + Grafana stack).

Ngày 2: Ba trụ → bốn tín hiệu

  • Mục tiêu: Bản đồ tín hiệu.

  • Lý thuyết: metrics/logs/traces + profiles (trụ thứ tư), điểm mạnh/yếu từng loại.

  • Thực hành: Bảng: câu hỏi nào tín hiệu nào trả lời.

Ngày 3: Vì sao observability

  • Mục tiêu: Giá trị thật.

  • Lý thuyết: high-cardinality, debug hệ phân tán, hỏi câu chưa lường trước.

  • Thực hành: Liệt kê 5 câu hỏi "unknown-unknown".

Ngày 4: REDUSEGolden Signals

  • Mục tiêu: Khung tín hiệu chuẩn.

  • Lý thuyết: RED (Rate/Errors/Duration) cho service, USE (Utilization/Saturation/Errors) cho tài nguyên, Four Golden Signals.

  • Thực hành: Áp RED + USE cho một service.

Ngày 5: SLI/SLO/error budget

  • Mục tiêu: Đo độ tin cậy (sâu ở Layer 11).

  • Lý thuyết: SLI (chỉ số), SLO (mục tiêu), error budget.

  • Thực hành: Phác SLI/SLO cho một service.

Ngày 6: Cardinality

  • Mục tiêu: Bài toán trung tâm của observability.

  • Lý thuyết: dimensionality, cardinality explosion, chi phí.

  • Thực hành: Ước lượng cardinality một tập label.

Ngày 7: Sampling vs full-fidelity

  • Mục tiêu: Đánh đổi cốt lõi.

  • Lý thuyết: khi nào sample, mất gì, giữ gì.

  • Thực hành: Kịch bản chọn sampling.

Ngày 8: Chi phí observability

  • Mục tiêu: Không phá ngân sách (nối Layer 11).

  • Lý thuyết: ingest/storage/query cost, cost per signal.

  • Thực hành: Ước tính chi phí một stack.

Ngày 9: OpenTelemetry - vì sao

  • Mục tiêu: Chuẩn hoá instrumentation.

  • Lý thuyết: vendor-neutral, tránh lock-in, hợp nhất tín hiệu.

  • Thực hành: Đọc kiến trúc OTel.

Ngày 10: OTel - API/SDK/Collector

  • Mục tiêu: Ba lớp.

  • Lý thuyết: API (instrument), SDK (xử lý), Collector (thu/biến đổi/xuất).

  • Thực hành: Vẽ luồng dữ liệu OTel.

Ngày 11: OTel signals

  • Mục tiêu: Bốn tín hiệu trong OTel.

  • Lý thuyết: traces/metrics/logs/profiles trong một mô hình.

  • Thực hành: Map tín hiệu → tài nguyên chung.

Ngày 12: OTLP

  • Mục tiêu: Giao thức truyền.

  • Lý thuyết: OTLP gRPC/HTTP, resource/scope/data.

  • Thực hành: Bắt một payload OTLP; đọc cấu trúc.

Ngày 13: Semantic conventions

  • Mục tiêu: Nhất quán tên/attribute.

  • Lý thuyết: semantic conventions (http/db/messaging), keo dán correlation.

  • Thực hành: Áp semantic conventions cho một service.

Ngày 14: Context propagation

  • Mục tiêu: Nối tín hiệu qua service.

  • Lý thuyết: W3C Trace Context (traceparent), baggage.

  • Thực hành: Propagate context qua 2 service.

Ngày 15: Auto-instrumentation

  • Mục tiêu: Nhanh, ít công.

  • Lý thuyết: agent/auto-instrument theo ngôn ngữ.

  • Thực hành: Auto-instrument app; xem tín hiệu ra.

Ngày 16: Manual instrumentation

  • Mục tiêu: Kiểm soát sâu.

  • Lý thuyết: span/metric thủ công, khi nào cần.

  • Thực hành: Thêm span + metric custom cho logic quan trọng.

Ngày 17: OTel Collector

  • Mục tiêu: Trung tâm xử lý.

  • Lý thuyết: receivers/processors/exporters, pipeline.

  • Thực hành: Dựng collector nhận OTLP → xuất backend.

Ngày 18: Collector - pipeline

  • Mục tiêu: Xử lý tin cậy.

  • Lý thuyết: batching, retry, queue, memory limiter.

  • Thực hành: Cấu hình batching + retry.

Ngày 19: Collector - deployment

  • Mục tiêu: Mô hình triển khai.

  • Lý thuyết: agent (per-node) vs gateway (tập trung).

  • Thực hành: Dựng agent + gateway (nối Layer 4).

Ngày 20: Collector - transform/redact

  • Mục tiêu: Sạch & an toàn (nối Layer 8).

  • Lý thuyết: filter/transform, redact PII, drop noise.

  • Thực hành: Loại PII + giảm cardinality tại collector.

Ngày 21: Instrument app mẫu

  • Mục tiêu: Có hệ để quan sát.

  • Lý thuyết: app multi-service (web + worker + db).

  • Thực hành: Dựng app mẫu sinh traffic.

Ngày 22: Instrument - metrics

  • Mục tiêu: Số đo.

  • Lý thuyết: counter/histogram cho RED.

  • Thực hành: Metric RED cho app mẫu.

Ngày 23: Instrument - traces

  • Mục tiêu: Dấu vết request.

  • Lý thuyết: span xuyên service.

  • Thực hành: Trace một request end-to-end.

Ngày 24: Instrument - logs

  • Mục tiêu: Log có correlation.

  • Lý thuyết: structured log + trace_id.

  • Thực hành: Log JSON gắn trace_id.

Ngày 25: Resource attributes

  • Mục tiêu: Ngữ cảnh chung.

  • Lý thuyết: service.name/version/namespace, k8s attributes.

  • Thực hành: Chuẩn hoá resource attributes.

Ngày 26: P1 - thiết kế

  • Mục tiêu: Đóng khung P1.

  • Lý thuyết: instrumentation + collector pipeline cho mọi tín hiệu.

  • Thực hách: instrumentation-design.md.

Ngày 27: P1 - instrument

  • Mục tiêu: App phát đủ tín hiệu.

  • Lý thuyết: auto + manual kết hợp.

  • Thực hành: App mẫu phát metrics/logs/traces.

Ngày 28: P1 - collector pipeline

  • Mục tiêu: Thu & định tuyến.

  • Lý thuyết: pipeline → backend từng tín hiệu.

  • Thực hành: Collector xuất về các backend (tạm).

Ngày 29: P1 - verify

  • Mục tiêu: Đảm bảo đúng.

  • Lý thuyết: kiểm resource attribute + correlation cơ bản.

  • Thực hành: Xác nhận trace_id nhất quán across signals.

Ngày 30: CỘT MỐC 30

  • Mục tiêu: Chốt instrumentation; release P1.

  • Lý thuyết: Ôn A; kiểm kê: OTel instrument + collector đủ 3 tín hiệu.

  • Thực hành: P1 done; đề thi #1 (OTel/signals/RED-USE) + tự chấm; blog #71 ("OpenTelemetry: một lớp instrumentation cho mọi tín hiệu"); tag layer7-day030; nghỉ nửa ngày. Đã đi 30/180 (17%).

KHỐI B - Metrics (Ngày 31-72) → P2

Ngày 31: Loại metric

  • Mục tiêu: Chọn đúng kiểu.

  • Lý thuyết: counter/gauge/histogram/summary, ý nghĩa.

  • Thực hành: Chọn kiểu cho các chỉ số RED/USE.

Ngày 32: Prometheus - kiến trúc

  • Mục tiêu: Hệ metric chủ đạo.

  • Lý thuyết: pull model, scrape, service discovery, TSDB.

  • Thực hành: Dựng Prometheus scrape app mẫu.

Ngày 33: Prometheus TSDB

  • Mục tiêu: Bên trong store (nối Layer 3).

  • Lý thuyết: head/block, WAL, compaction, chunk.

  • Thực hành: Quan sát block/WAL trên đĩa.

Ngày 34: Labels & cardinality

  • Mục tiêu: Kiểm soát nổ metric.

  • Lý thuyết: label = dimension, cardinality control.

  • Thực hành: Tìm + giảm metric cardinality cao.

Ngày 35: PromQL - selector

  • Mục tiêu: Truy vấn cơ bản.

  • Lý thuyết: instant/range vector, matcher.

  • Thực hành: Query cơ bản trên app mẫu.

Ngày 36: PromQL - rate

  • Mục tiêu: Tốc độ thay đổi.

  • Lý thuyết: rate/irate/increase, counter reset.

  • Thực hành: Tính request rate + error rate.

Ngày 37: PromQL - aggregation

  • Mục tiêu: Gộp theo chiều.

  • Lý thuyết: sum/avg/max by/without.

  • Thực hành: Aggregate theo service/endpoint.

Ngày 38: PromQL - histogram

  • Mục tiêu: Latency percentile.

  • Lý thuyết: histogram_quantile, bucket, native histogram.

  • Thực hành: Tính p50/p95/p99 latency.

Ngày 39: PromQL - nâng cao

  • Mục tiêu: Truy vấn phức tạp.

  • Lý thuyết: subquery, offset, functions.

  • Thực hành: Query so sánh tuần này vs tuần trước.

Ngày 40: Recording rules

  • Mục tiêu: Tăng tốc & tái dùng.

  • Lý thuyết: precompute, đặt tên rule.

  • Thực hành: Recording rule cho RED metrics.

Ngày 41: Exporters

  • Mục tiêu: Lấy metric từ hệ có sẵn.

  • Lý thuyết: node_exporter/blackbox/custom exporter.

  • Thực hành: node_exporter + một exporter custom.

Ngày 42: App metrics

  • Mục tiêu: Metric từ code.

  • Lý thuyết: client lib vs OTel metrics.

  • Thực hành: Expose metric app qua OTel.

Ngày 43: Service discovery

  • Mục tiêu: Scrape động (nối Layer 4).

  • Lý thuyết: k8s SD, relabeling.

  • Thực hành: Prometheus tự phát hiện pod scrape.

Ngày 44: k8s metrics

  • Mục tiêu: Đo cluster.

  • Lý thuyết: kube-state-metrics, cAdvisor.

  • Thực hành: Dashboard cluster + workload.

Ngày 45: Prometheus Operator

  • Mục tiêu: Vận hành khai báo (nối Layer 4).

  • Lý thuyết: ServiceMonitor/PodMonitor/PrometheusRule.

  • Thực hành: Cấu hình scrape qua ServiceMonitor.

Ngày 46: Alerting rules

  • Mục tiêu: Phát hiện vấn đề.

  • Lý thuyết: alert rule, for, labels/annotations.

  • Thực hành: Alert cho error rate cao.

Ngày 47: Alertmanager

  • Mục tiêu: Định tuyến báo động.

  • Lý thuyết: routing tree, grouping, silence, inhibition.

  • Thực hành: Route theo severity + gộp alert.

Ngày 48: Triết lý alert

  • Mục tiêu: Alert đáng phản hồi.

  • Lý thuyết: symptom-based, actionable, chống fatigue.

  • Thực hành: Rà + xoá alert nhiễu.

Ngày 49: SLO burn-rate alert

  • Mục tiêu: Cảnh báo theo error budget (SRE).

  • Lý thuyết: multi-window multi-burn-rate.

  • Thực hành: Cài burn-rate alert cho một SLO.

Ngày 50: Grafana

  • Mục tiêu: Trực quan hoá.

  • Lý thuyết: panel, variable, datasource.

  • Thực hành: Dashboard đầu tiên cho app mẫu.

Ngày 51: Dashboard design

  • Mục tiêu: Dashboard hữu ích.

  • Lý thuyết: RED/USE layout, signal not noise.

  • Thực hành: Dashboard RED cho service + USE cho node.

Ngày 52: Exemplars

  • Mục tiêu: Metric → trace (correlation preview).

  • Lý thuyết: exemplar gắn trace_id vào histogram.

  • Thực hành: Bật exemplars; nhảy từ metric sang trace.

Ngày 53: Prometheus HA

  • Mục tiêu: Không mất metric.

  • Lý thuyết: replica, dedup.

  • Thực hành: Chạy 2 Prometheus HA.

Ngày 54: Thanos

  • Mục tiêu: Lưu trữ dài hạn.

  • Lý thuyết: sidecar, store, compactor, query, object storage (nối Layer 3).

  • Thực hành: Dựng Thanos trên object storage.

Ngày 55: Thanos - thành phần

  • Mục tiêu: Hiểu từng phần.

  • Lý thuyết: global query, downsampling, dedup.

  • Thực hành: Query xuyên nhiều Prometheus qua Thanos.

Ngày 56: Mimir/Cortex

  • Mục tiêu: Metric multi-tenant scale.

  • Lý thuyết: horizontally scalable, multi-tenant.

  • Thực hành: Đọc kiến trúc; so với Thanos.

Ngày 57: VictoriaMetrics

  • Mục tiêu: Lựa chọn hiệu năng.

  • Lý thuyết: compression tốt, MetricsQL, single-binary.

  • Thực hành: Dựng VictoriaMetrics; đo dung lượng.

Ngày 58: So sánh hệ metric

  • Mục tiêu: Chọn theo bối cảnh.

  • Lý thuyết: Prometheus vs Thanos/Mimir vs VictoriaMetrics.

  • Thực hành: Bảng đánh đổi.

Ngày 59: Cardinality ở quy mô

  • Mục tiêu: Sống với hàng triệu series.

  • Lý thuyết: limit, drop, aggregation, cardinality analyzer.

  • Thực hành: Phân tích + cắt cardinality.

Ngày 60: CỘT MỐC 60

  • Mục tiêu: Chốt PromQL + kiến trúc metric.

  • Lý thuyết: Ôn B tới giờ; kiểm kê: Prometheus/PromQL/alert/Grafana/long-term store.

  • Thực hành: Đề thi #2 (PromQL/alerting/scale) + tự chấm; blog #72 ("Prometheus & PromQL: từ scrape tới alert theo error budget"); tag layer7-day060; nghỉ nửa ngày. Đã đi 60/180 (33%).

Ngày 61: Remote writeOTLP metrics

  • Mục tiêu: Đẩy metric.

  • Lý thuyết: remote write, OTLP metrics ingest.

  • Thực hành: Push metric qua OTLP/remote write.

Ngày 62: Pushgateway

  • Mục tiêu: Metric cho batch job.

  • Lý thuyết: Pushgateway, cảnh báo dùng sai.

  • Thực hành: Batch job đẩy metric.

Ngày 63: Metrics cho k8s

  • Mục tiêu: Đo hệ container (nối Layer 4).

  • Lý thuyết: cluster/workload/HPA metrics.

  • Thực hành: Dashboard k8s + custom metric cho HPA.

Ngày 64: Metrics cho mesh

  • Mục tiêu: Đo mạng dịch vụ (nối Layer 4).

  • Lý thuyết: Envoy/Istio telemetry, RED tự động từ mesh.

  • Thực hành: Dashboard RED từ mesh.

Ngày 65: Downsampling & retention

  • Mục tiêu: Cân bằng lịch sử/chi phí.

  • Lý thuyết: downsampling, retention tiers.

  • Thực hành: Cấu hình retention + downsample.

Ngày 66: Testing metrics

  • Mục tiêu: Rule đúng.

  • Lý thuyết: promtool, unit test alert/recording rule.

  • Thực hành: Test rule bằng promtool.

Ngày 67: P2 - thiết kế

  • Mục tiêu: Đóng khung P2.

  • Lý thuyết: Prometheus + long-term + alert + dashboard.

  • Thực hách: metrics-platform-design.md.

Ngày 68: P2 - scrape & exporters

  • Mục tiêu: Thu metric đầy đủ.

  • Lý thuyết: SD + exporters + app metrics.

  • Thực hành: Prometheus scrape toàn hệ.

Ngày 69: P2 - long-term + HA

  • Mục tiêu: Bền & lâu.

  • Lý thuyết: Thanos/Mimir + HA.

  • Thực hành: Metric lưu dài hạn, query global.

Ngày 70: P2 - alerting

  • Mục tiêu: Cảnh báo tốt.

  • Lý thuyết: SLO burn-rate + Alertmanager routing.

  • Thực hành: Bộ alert actionable + routing.

Ngày 71: P2 - dashboards + exemplars

  • Mục tiêu: Nhìn + nhảy sang trace.

  • Lý thuyết: RED/USE + exemplars.

  • Thực hành: Dashboard + exemplar link.

Ngày 72: P2 - Metrics platform

  • Mục tiêu: Release P2.

  • Lý thuyết: rà "done": scrape + store + alert + dashboard + exemplar.

  • Thực hành: Đóng gói + blog #73 ("Một metrics platform production: Prometheus, Thanos, alert theo SLO"). P2 done.

KHỐI C - Logs (Ngày 73-102) → P3

Ngày 73: Logging fundamentals

  • Mục tiêu: Log đúng cách.

  • Lý thuyết: structured vs unstructured, khi nào log.

  • Thực hành: Rà log app mẫu; chuẩn hoá.

Ngày 74: Structured logging

  • Mục tiêu: Log máy đọc được.

  • Lý thuyết: JSON, level, field chuẩn.

  • Thực hành: Chuyển app sang structured log.

Ngày 75: Correlation IDtrace_id

  • Mục tiêu: Nối log với trace.

  • Lý thuyết: trace_id/span_id trong mọi log line.

  • Thực hành: Đảm bảo log gắn trace_id.

Ngày 76: Log pipeline

  • Mục tiêu: Từ app tới store.

  • Lý thuyết: collect → parse → enrich → store.

  • Thực hành: Vẽ pipeline mục tiêu.

Ngày 77: Collectors

  • Mục tiêu: Thu log.

  • Lý thuyết: Fluent BitFluentdVector, so sánh.

  • Thực hành: Dựng collector thu log app mẫu.

Ngày 78: Vector

  • Mục tiêu: Collector mạnh, linh hoạt.

  • Lý thuyết: source/transform/sink, VRL.

  • Thực hành: Transform + route log bằng Vector.

Ngày 79: Loki - kiến trúc

  • Mục tiêu: "Prometheus cho log".

  • Lý thuyết: label-based index, không index full-text.

  • Thực hành: Dựng Loki; đẩy log vào.

Ngày 80: LogQL

  • Mục tiêu: Truy vấn log.

  • Lý thuyết: stream selector, filter, metric queries từ log.

  • Thực hành: Query log + sinh metric từ log bằng LogQL.

Ngày 81: Loki - storage

  • Mục tiêu: Lưu rẻ.

  • Lý thuyết: chunk + object storage (nối Layer 3), index.

  • Thực hành: Cấu hình object storage backend.

Ngày 82: Loki vs ELK

  • Mục tiêu: Hai triết lý.

  • Lý thuyết: index-everything (ELK) vs label-only (Loki), chi phí/truy vấn.

  • Thực hành: Bảng đánh đổi.

Ngày 83: Elasticsearch/OpenSearch

  • Mục tiêu: Full-text search log.

  • Lý thuyết: inverted index (nối Layer 3), analyzer.

  • Thực hành: Dựng OpenSearch; index log.

Ngày 84: OpenSearch - vận hành

  • Mục tiêu: Scale & tin cậy.

  • Lý thuyết: mapping, sharding, ILM.

  • Thực hành: Mapping + index lifecycle.

Ngày 85: Ingest pipelines

  • Mục tiêu: Xử lý trước lưu.

  • Lý thuyết: Logstash/ingest pipeline, enrich.

  • Thực hành: Pipeline parse + enrich log.

Ngày 86: KibanaDashboards

  • Mục tiêu: Khám phá log.

  • Lý thuyết: discover, visualize, saved search.

  • Thực hành: Dashboard log + query.

Ngày 87: Log parsing

  • Mục tiêu: Bóc trường từ log thô.

  • Lý thuyết: grok, regex, structured extraction.

  • Thực hành: Parse một log format phức tạp.

Ngày 88: Log-based metrics

  • Mục tiêu: Metric từ log.

  • Lý thuyết: count/rate từ log, khi nào nên.

  • Thực hành: Sinh metric từ log (LogQL/pipeline).

Ngày 89: Retention & cost

  • Mục tiêu: Log không phá ngân sách (nối Layer 11).

  • Lý thuyết: tiering, hot/cold, retention policy.

  • Thực hành: Cấu hình retention theo tier.

Ngày 90: CỘT MỐC 90

  • Mục tiêu: Chốt logs.

  • Lý thuyết: Ôn C tới giờ; kiểm kê: pipeline + Loki/OpenSearch + query.

  • Thực hành: Đề thi #3 (logging/LogQL/pipeline) + tự chấm; blog #74 ("Logs ở quy mô: Loki vs ELK và một pipeline collector"); tag layer7-day090; nghỉ nửa ngày. Đã đi 90/180 (50%).

Ngày 91: PII & redaction

  • Mục tiêu: Log an toàn (nối Layer 8).

  • Lý thuyết: redact PII, compliance, không log secret.

  • Thực hành: Redact PII ở collector.

Ngày 92: Sampling & volume control

  • Mục tiêu: Giảm nhiễu/chi phí.

  • Lý thuyết: log sampling, drop debug ở prod.

  • Thực hành: Sample/drop log ít giá trị.

Ngày 93: Audit logs

  • Mục tiêu: Log cho tuân thủ (nối Layer 4/5/8).

  • Lý thuyết: audit log riêng, immutability.

  • Thực hành: Tách + bảo vệ audit log.

Ngày 94: Query ở quy mô

  • Mục tiêu: Debug nhanh.

  • Lý thuyết: query hiệu quả, workflow từ triệu chứng.

  • Thực hành: Điều tra một sự cố qua log.

Ngày 95: Alert trên log

  • Mục tiêu: Phát hiện qua log.

  • Lý thuyết: log-based alert, khi nào dùng thay metric.

  • Thực hành: Alert khi xuất hiện pattern lỗi.

Ngày 96: k8s logging

  • Mục tiêu: Log container (nối Layer 4).

  • Lý thuyết: stdout, DaemonSet collector, metadata enrichment.

  • Thực hành: Thu log toàn cluster + gắn metadata pod.

Ngày 97: OTel logs

  • Mục tiêu: Log qua OTel.

  • Lý thuyết: OTel logs pipeline, hợp nhất với trace.

  • Thực hành: Đẩy log qua collector OTel.

Ngày 98: P3 - thiết kế

  • Mục tiêu: Đóng khung P3.

  • Lý thuyết: collector + store + query + correlation.

  • Thực hách: logs-platform-design.md.

Ngày 99: P3 - collector pipeline

  • Mục tiêu: Thu + xử lý log.

  • Lý thuyết: Vector/Fluent Bit + parse + redact.

  • Thực hành: Pipeline log hoàn chỉnh.

Ngày 100:

  • Mục tiêu: Kiểm kê lớn giữa Layer 7.

  • Lý thuyết: Ôn A→C; kiểm kê lớn: OTel + metrics platform (P2) + logs đang thành hình; đối chiếu "Sâu".

  • Thực hành: Đề thi #4 tích lũy (instrument + metrics + logs) + tự chấm theo rubric; blog #75 ("100 ngày observability: metrics và logs hợp nhất bằng OpenTelemetry"); tag layer7-day100; nghỉ nửa ngày. Đã đi 100/180 (56%).

Ngày 101: P3 - store + query + correlation

  • Mục tiêu: Log truy được & nối trace.

  • Lý thuyết: Loki/OpenSearch + query + trace_id link.

  • Thực hành: Từ trace nhảy sang log liên quan.

Ngày 102: P3 - Logs platform

  • Mục tiêu: Release P3.

  • Lý thuyết: rà "done": pipeline + store + query + redaction + correlation.

  • Thực hành: Đóng gói + blog #76 ("Một logs platform với correlation tới trace"). P3 done.

KHỐI D - Tracing (Ngày 103-132) → P4

Ngày 103: Distributed tracing - nền

  • Mục tiêu: Theo dấu request phân tán.

  • Lý thuyết: trace = cây span, vì sao cần.

  • Thực hành: Đọc một trace; nhận ra critical path.

Ngày 104: Span

  • Mục tiêu: Đơn vị trace.

  • Lý thuyết: attributes, events, status, links, parent/child.

  • Thực hành: Thêm attribute/event vào span.

Ngày 105: Context propagation

  • Mục tiêu: Nối span qua service.

  • Lý thuyết: W3C Trace Context (recap), inject/extract.

  • Thực hành: Propagate qua HTTP + async.

Ngày 106: OTel tracing SDK

  • Mục tiêu: Sinh trace.

  • Lý thuyết: tracer, span processor, exporter.

  • Thực hành: Cấu hình tracer + export.

Ngày 107: Instrument traces

  • Mục tiêu: Phủ trace.

  • Lý thuyết: auto + manual span cho logic quan trọng.

  • Thực hành: Trace đầy đủ app mẫu.

Ngày 108: Propagation across boundaries

  • Mục tiêu: Không đứt trace.

  • Lý thuyết: async, queue, thread pool.

  • Thực hành: Giữ context qua worker/queue.

Ngày 109: Head-based sampling

  • Mục tiêu: Giảm khối lượng.

  • Lý thuyết: quyết định sample tại nguồn, ưu/nhược.

  • Thực hành: Head sampling theo tỉ lệ.

Ngày 110: Tail-based sampling

  • Mục tiêu: Giữ trace "thú vị".

  • Lý thuyết: quyết định sau khi thấy cả trace (collector), giữ lỗi/latency cao.

  • Thực hành: Tail sampling ở collector.

Ngày 111: Sampling strategy

  • Mục tiêu: Chọn đúng.

  • Lý thuyết: head vs tail, cost vs fidelity (nối Layer 11).

  • Thực hành: Thiết kế chiến lược sampling.

Ngày 112: Jaeger

  • Mục tiêu: Backend trace kinh điển.

  • Lý thuyết: kiến trúc, storage.

  • Thực hành: Dựng Jaeger; xem trace.

Ngày 113: Grafana Tempo

  • Mục tiêu: Trace lưu rẻ.

  • Lý thuyết: object-storage-backed, không index tốn kém.

  • Thực hành: Dựng Tempo trên object storage.

Ngày 114: TraceQL

  • Mục tiêu: Truy vấn trace.

  • Lý thuyết: TraceQL, tìm theo attribute/latency.

  • Thực hành: Tìm trace lỗi/latency cao.

Ngày 115: Span metrics

  • Mục tiêu: RED từ trace.

  • Lý thuyết: span metrics connector sinh RED tự động.

  • Thực hành: Sinh RED từ trace.

Ngày 116: Service graph

  • Mục tiêu: Bản đồ phụ thuộc.

  • Lý thuyết: service graph từ trace.

  • Thực hành: Vẽ service graph app mẫu.

Ngày 117: Trace analysis

  • Mục tiêu: Đọc trace để tìm chậm.

  • Lý thuyết: latency breakdown, critical path, N+1.

  • Thực hành: Tìm nút cổ chai từ trace.

Ngày 118: Trace-based debugging

  • Mục tiêu: Quy trình điều tra.

  • Lý thuyết: từ trace lỗi → nguyên nhân.

  • Thực hành: Debug một request chậm bằng trace.

Ngày 119: Traces cho mesh

  • Mục tiêu: Trace tự động (nối Layer 4).

  • Lý thuyết: Envoy/Istio tracing, propagation qua mesh.

  • Thực hành: Bật tracing mesh; đọc trace.

Ngày 120: CỘT MỐC 120

  • Mục tiêu: Chốt tracing nền.

  • Lý thuyết: Ôn D tới giờ; kiểm kê: OTel tracing + sampling + Tempo/Jaeger + TraceQL.

  • Thực hành: Đề thi #5 (tracing/sampling/TraceQL) + tự chấm; blog #77 ("Distributed tracing: từ span tới service graph, và tail sampling"); tag layer7-day120; nghỉ nửa ngày. Đã đi 120/180 (67%).

Ngày 121: Traces ↔ logs

  • Mục tiêu: Correlation.

  • Lý thuyết: trace_id nối log ↔ trace.

  • Thực hành: Từ span nhảy sang log của span đó.

Ngày 122: Traces ↔ metrics

  • Mục tiêu: Correlation.

  • Lý thuyết: exemplars (metric → trace).

  • Thực hành: Từ latency spike nhảy vào trace mẫu.

Ngày 123: Baggage

  • Mục tiêu: Ngữ cảnh xuyên suốt.

  • Lý thuyết: baggage cho cross-cutting (tenant, user).

  • Thực hành: Truyền baggage; dùng để lọc.

Ngày 124: Async/messaging tracing

  • Mục tiêu: Trace qua queue (nối Layer 9).

  • Lý thuyết: producer/consumer span, link.

  • Thực hành: Trace qua một message queue.

Ngày 125: DB/query tracing

  • Mục tiêu: Thấy DB trong trace (nối Layer 3).

  • Lý thuyết: span cho query, semantic conventions db.

  • Thực hành: Trace một query chậm.

Ngày 126: Sampling cost vs fidelity

  • Mục tiêu: Cân bằng.

  • Lý thuyết: giữ đủ để debug, cắt chi phí (nối Layer 11).

  • Thực hành: Tinh chỉnh tail sampling.

Ngày 127: Tail sampling config

  • Mục tiêu: Cấu hình thực chiến.

  • Lý thuyết: policies (latency/status/rate) trong collector.

  • Thực hành: Tail sampling giữ lỗi + latency cao.

Ngày 128: P4 - thiết kế

  • Mục tiêu: Đóng khung P4.

  • Lý thuyết: OTel traces + collector tail sampling + Tempo.

  • Thực hách: tracing-platform-design.md.

Ngày 129: P4 - traces + sampling

  • Mục tiêu: Thu trace thông minh.

  • Lý thuyết: instrument + tail sampling.

  • Thực hành: Pipeline trace + tail sampling.

Ngày 130: P4 - store + TraceQL

  • Mục tiêu: Trace truy được.

  • Lý thuyết: Tempo/Jaeger + query.

  • Thực hành: Lưu + query trace hiệu quả.

Ngày 131: P4 - span metrics + graph + correlation

  • Mục tiêu: Trace nối tín hiệu khác.

  • Lý thuyết: span metrics + service graph + trace↔log↔metric.

  • Thực hành: Correlation trace↔log↔metric hoạt động.

Ngày 132: P4 - Tracing platform

  • Mục tiêu: Release P4.

  • Lý thuyết: rà "done": trace + sampling + store + span metrics + correlation.

  • Thực hành: Đóng gói + blog #78 ("Một tracing platform với tail sampling và correlation"). P4 done.

KHỐI E - Profiling (Ngày 133-150) → P5

Ngày 133: Continuous profiling - vì sao

  • Mục tiêu: Trụ thứ tư.

  • Lý thuyết: profiling liên tục ở prod, tìm CPU/mem hot ở mức dòng code.

  • Thực hành: So profiling vs metrics/traces trong debug hiệu năng.

Ngày 134: Profiling recap

  • Mục tiêu: Nối Layer 2.

  • Lý thuyết: perf, flame graph, on/off-CPU.

  • Thực hành: Ôn flame graph một workload.

Ngày 135: pprof

  • Mục tiêu: Profile chuẩn.

  • Lý thuyết: CPU/heap/goroutine/block profile.

  • Thực hành: Thu + đọc pprof một app.

Ngày 136: Flame graph & diff

  • Mục tiêu: Đọc & so profile.

  • Lý thuyết: flame graph, differential (trước/sau).

  • Thực hành: So profile trước/sau một thay đổi.

Ngày 137: Pyroscope

  • Mục tiêu: Continuous profiling backend.

  • Lý thuyết: kiến trúc, storage, query.

  • Thực hành: Dựng Pyroscope; profile liên tục app.

Ngày 138: Parca

  • Mục tiêu: Profiling toàn hệ.

  • Lý thuyết: eBPF-based, không cần instrument.

  • Thực hành: Dựng Parca; profile cả node.

Ngày 139: eBPF profiling

  • Mục tiêu: Chi phí thấp (nối Layer 2).

  • Lý thuyết: whole-system, low overhead, no code change.

  • Thực hành: Profile bằng eBPF; đo overhead.

Ngày 140: Language profilers

  • Mục tiêu: Sâu theo ngôn ngữ.

  • Lý thuyết: Go/Java/Python/Rust profiling đặc thù.

  • Thực hành: Profile một app theo ngôn ngữ.

Ngày 141: Memory profiling

  • Mục tiêu: Tìm rò rỉ.

  • Lý thuyết: heap profile, leak detection.

  • Thực hành: Tìm memory leak bằng profile.

Ngày 142: Off-CPU profiling

  • Mục tiêu: Vì sao chờ (nối Layer 2).

  • Lý thuyết: off-CPU analysis, blocking.

  • Thực hành: Tìm nguyên nhân chờ.

Ngày 143: Profiling ở prod

  • Mục tiêu: An toàn khi chạy thật.

  • Lý thuyết: overhead budget, sampling profile.

  • Thực hành: Bật continuous profiling an toàn ở prod.

Ngày 144: Profile ↔ trace

  • Mục tiêu: Correlation trụ 4.

  • Lý thuyết: span profiling, nối profile với span.

  • Thực hành: Từ span chậm mở profile CPU của nó.

Ngày 145: Optimization workflow

  • Mục tiêu: Từ profile ra cải thiện.

  • Lý thuyết: profile → hotspot → tối ưu → đo lại.

  • Thực hành: Một vòng tối ưu có số liệu.

Ngày 146: Profiling cho k8s

  • Mục tiêu: Workload container (nối Layer 4).

  • Lý thuyết: profile pod, gắn metadata.

  • Thực hành: Continuous profiling toàn cluster.

Ngày 147: P5 - thiết kế

  • Mục tiêu: Đóng khung P5.

  • Lý thuyết: Pyroscope/Parca + eBPF + correlation.

  • Thực hách: profiling-design.md.

Ngày 148: P5 - profiler

  • Mục tiêu: Thu profile liên tục.

  • Lý thuyết: eBPF + language profiler.

  • Thực hành: Continuous profiling hoạt động.

Ngày 149: P5 - correlation + case

  • Mục tiêu: Chứng minh giá trị.

  • Lý thuyết: profile ↔ trace, tối ưu thật.

  • Thực hành: Case tối ưu từ profile + correlation.

Ngày 150: CỘT MỐC 150

  • Mục tiêu: Chốt profiling; release P5.

  • Lý thuyết: Ôn E; kiểm kê: continuous profiling + eBPF + correlation profile↔trace.

  • Thực hành: P5 done; đề thi #6 (profiling/eBPF/flame graph) + tự chấm; blog #79 ("Continuous profiling: trụ thứ tư và tối ưu dựa trên profile"); tag layer7-day150; nghỉ nửa ngày. Đã đi 150/180 (83%).

KHỐI F - Correlation (Ngày 151-162)

Ngày 151: Bài toán correlation

  • Mục tiêu: Một sự cố, bốn tín hiệu.

  • Lý thuyết: vì sao rời rạc là chậm; mục tiêu single-pane.

  • Thực hành: Vẽ luồng điều tra lý tưởng.

Ngày 152: Exemplars (sâu)

  • Mục tiêu: Metric → trace.

  • Lý thuyết: exemplar end-to-end.

  • Thực hành: Từ dashboard latency → trace cụ thể.

Ngày 153: trace_id everywhere

  • Mục tiêu: Logs ↔ traces.

  • Lý thuyết: trace_id trong mọi log.

  • Thực hành: Nhảy hai chiều log ↔ trace.

Ngày 154: Span → profile

  • Mục tiêu: Traces ↔ profiles.

  • Lý thuyết: span profiling link.

  • Thực hành: Từ span mở profile.

Ngày 155: Semantic conventions = keo dán

  • Mục tiêu: Nhất quán mới correlate được.

  • Lý thuyết: OTel semantic conventions xuyên tín hiệu.

  • Thực hành: Chuẩn hoá attribute toàn hệ.

Ngày 156: Single pane

  • Mục tiêu: Một nơi điều tra.

  • Lý thuyết: Grafana correlations, datalinks.

  • Thực hành: Cấu hình correlations nối 4 tín hiệu.

Ngày 157: Correlation-driven debugging

  • Mục tiêu: Quy trình chuẩn.

  • Lý thuyết: alert → metric → trace → log → profile.

  • Thực hành: Đi trọn một điều tra qua 4 tín hiệu.

Ngày 158: Correlation trong incident

  • Mục tiêu: Thực chiến (nối Layer 11).

  • Lý thuyết: correlate nhanh dưới áp lực.

  • Thực hành: Điều tra một incident mô phỏng.

Ngày 159: Data model unification

  • Mục tiêu: Cùng chiều dữ liệu.

  • Lý thuyết: resource attributes thống nhất mọi tín hiệu.

  • Thực hành: Chuẩn resource attributes toàn stack.

Ngày 160: Sampling coherence

  • Mục tiêu: Correlate được sau sampling.

  • Lý thuyết: giữ nhất quán khi các tín hiệu sample khác nhau.

  • Thực hành: Đảm bảo trace được sample có log/profile tương ứng.

Ngày 161: Correlation pitfalls

  • Mục tiêu: Tránh sai lệch.

  • Lý thuyết: clock skew, missing context, đứt propagation.

  • Thực hành: Phát hiện + sửa một correlation gãy.

Ngày 162: Ôn Khối F

  • Mục tiêu: Chốt correlation.

  • Lý thuyết: rà exemplars/trace_id/span-profile/semantic conv.

  • Thực hành: Chuẩn bị alerting & SLO.

KHỐI G - Alerting, Dashboards, SLI/SLO (Ngày 163-174)

Ngày 163: Triết lý alert (sâu)

  • Mục tiêu: Alert không gây mệt.

  • Lý thuyết: symptom vs cause, alert fatigue, giảm noise.

  • Thực hành: Audit toàn bộ alert; cắt nhiễu.

Ngày 164: Actionable alerts

  • Mục tiêu: Alert dẫn tới hành động.

  • Lý thuyết: runbook link (nối Layer 6/11), severity rõ.

  • Thực hành: Gắn runbook vào alert.

Ngày 165: SLI

  • Mục tiêu: Chọn đúng chỉ số.

  • Lý thuyết: availability/latency/quality SLI, đo từ đâu.

  • Thực hành: Định nghĩa SLI cho một service.

Ngày 166: SLO

  • Mục tiêu: Đặt mục tiêu.

  • Lý thuyết: SLO target, window (rolling), realistic.

  • Thực hành: Đặt SLO + đo tuân thủ.

Ngày 167: Error budget (giới thiệu)

  • Mục tiêu: Ngân sách lỗi (policy ở Layer 11).

  • Lý thuyết: error budget = 1 − SLO, ý nghĩa.

  • Thực hành: Tính error budget hiện tại.

Ngày 168: Burn-rate alerting (sâu)

  • Mục tiêu: Cảnh báo đúng lúc.

  • Lý thuyết: multi-window multi-burn-rate (SRE workbook).

  • Thực hành: Cài bộ alert burn-rate hoàn chỉnh.

Ngày 169: Dashboard principles

  • Mục tiêu: Tín hiệu, không nhiễu.

  • Lý thuyết: mục đích rõ, ít panel đúng chỗ.

  • Thực hành: Refactor một dashboard rối.

Ngày 170: RED/USE/Golden dashboards

  • Mục tiêu: Dashboard chuẩn.

  • Lý thuyết: service (RED) + resource (USE) + golden signals.

  • Thực hành: Bộ dashboard chuẩn cho app mẫu.

Ngày 171: Executive vs debug dashboards

  • Mục tiêu: Đúng đối tượng.

  • Lý thuyết: cấp cao (SLO) vs điều tra (chi tiết).

  • Thực hành: Một dashboard SLO + một dashboard debug.

Ngày 172: On-call & routing

  • Mục tiêu: Đúng người, đúng lúc (nối Layer 11).

  • Lý thuyết: routing theo team/severity, escalation.

  • Thực hành: Route alert theo ownership (nối Layer 6 catalog).

Ngày 173: Observability-driven dev

  • Mục tiêu: Quan sát từ đầu.

  • Lý thuyết: testing in prod, feature-flag + observ (nối Layer 6).

  • Thực hành: Thêm observability vào định nghĩa "done".

Ngày 174: Ôn Khối G

  • Mục tiêu: Chốt alert/SLO/dashboard.

  • Lý thuyết: rà triết lý alert + SLI/SLO + dashboard.

  • Thực hành: Chuẩn bị capstone.

KHỐI H - Enterprise Observability Platform capstone (Ngày 175-180) → P6 flagship

Ngày 175: P6 - tích hợp 4 tín hiệu

  • Mục tiêu: Một platform, đủ tín hiệu.

  • Lý thuyết: metrics (P2) + logs (P3) + traces (P4) + profiles (P5).

  • Thực hành: Ghép 4 platform vào một stack.

Ngày 176: P6 - correlation

  • Mục tiêu: Nối mọi thứ.

  • Lý thuyết: exemplars + trace_id + span profiles + single pane.

  • Thực hành: Correlation 4 tín hiệu hoạt động end-to-end.

Ngày 177: P6 - SLO + alerting + dashboards

  • Mục tiêu: Vận hành được.

  • Lý thuyết: SLO + burn-rate alert + bộ dashboard.

  • Thực hành: SLO dashboard + alert cho app mẫu.

Ngày 178: P6 - multi-tenant + cost + retention

  • Mục tiêu: Dùng chung, bền vững (nối Layer 11).

  • Lý thuyết: multi-tenant, cost control, retention theo tín hiệu.

  • Thực hành: Cấu hình tenancy + retention + cost guardrail.

Ngày 179: P6 - incident drill; ôn Layer 7

  • Mục tiêu: Chứng minh giá trị.

  • Lý thuyết: alert → correlate 4 tín hiệu → nguyên nhân gốc.

  • Thực hành: Game-day: gieo lỗi → điều tra tới root cause; rà toàn layer.

Ngày 180: HOÀN THÀNH LAYER 7

  • Mục tiêu: Chốt Observability Engineering ở mức Sâu.

  • Lý thuyết: Ôn toàn layer; kiểm kê tổng: OTel (P1) + metrics (P2) + logs (P3) + traces (P4) + profiling (P5) + Enterprise Observability Platform tích hợp + correlation (P6).

  • Thực hành: P6 done; đề thi #7 tích lũy (toàn layer) + tự chấm theo rubric; blog #80 ("Nhìn lại 180 ngày observability: bốn tín hiệu và correlation trong một platform"); tag layer7-complete; nghỉ nửa ngày.