Kiến Trúc Hệ Thống Thực Dụng - Bản Dễ Hiểu

Hiểu đúng vấn đề, chọn đúng công cụ, tránh phức tạp vô ích

Cuốn này không dạy cú pháp. AI, tài liệu chính thức và framework đã làm phần đó rất tốt. Cuốn này tập trung vào những thứ khó hơn: hiểu bản chất, biết khi nào dùng, khi nào không dùng, so sánh các lựa chọn, nhận ra dấu hiệu hệ thống sắp nghẽn, và đưa ra quyết định kiến trúc hợp lý.

Mỗi chương nên trả lời 5 câu hỏi:

  • Nó là gì?
  • Nó giải quyết vấn đề gì?
  • Khi nào nên dùng?
  • Khi nào không nên dùng?
  • Nếu dùng sai thì hỏng ở đâu?

---

Chương 0. Tấm Bản Đồ Chung

0.1. Vì sao cần một bản đồ trước khi học chi tiết?

  • Kiến trúc hệ thống có quá nhiều khái niệm dễ làm người học bị ngợp
  • Không nên học rời rạc từng công nghệ như Redis, Kafka, Docker, Kubernetes
  • Phải biết mỗi công nghệ nằm ở tầng nào của hệ thống
  • Một vấn đề có thể được giải bằng nhiều cách, nhưng mỗi cách có cái giá riêng
  • Bản đồ giúp biết mình đang học cái gì và vì sao cần học nó

0.2. Hệ thống hiện đại gồm những tầng nào?

  • Tầng người dùng: browser, mobile app, client
  • Tầng biên: DNS, CDN, firewall, WAF, reverse proxy, load balancer
  • Tầng giao tiếp: HTTP API, gRPC, WebSocket, webhook
  • Tầng ứng dụng: backend, monolith, modular monolith, microservices
  • Tầng xử lý nền: queue, worker, scheduler, workflow
  • Tầng dữ liệu: database, cache, search, object storage, warehouse
  • Tầng vận hành: deploy, container, CI/CD, cloud
  • Tầng quan sát: logs, metrics, traces, alerts
  • Tầng bảo vệ: authentication, authorization, secret, audit

0.3. Một request đi qua bản đồ như thế nào?

  • Người dùng gửi request từ browser/mobile
  • Request đi qua DNS/CDN/proxy/load balancer
  • Backend nhận request và xử lý nghiệp vụ
  • Backend có thể đọc cache, query database, gọi service khác
  • Việc lâu có thể được đẩy sang queue cho worker xử lý
  • Kết quả có thể trả ngay, báo sau bằng event, hoặc cập nhật realtime
  • Logs, metrics, traces ghi lại toàn bộ đường đi

0.4. Ba loại việc trong hệ thống

  • Việc cần trả lời ngay: đọc dữ liệu, xác thực, xem trang, lấy danh sách
  • Việc có thể xử lý sau: gửi email, tạo báo cáo, xử lý file, gọi AI lâu
  • Việc cần phát cho nhiều nơi biết: thông báo, cập nhật trạng thái, analytics event
  • Chọn sai kiểu xử lý sẽ làm hệ thống chậm, nghẽn hoặc khó debug

0.5. Bản đồ chọn công cụ nhanh

  • Cần trả lời ngay: API
  • Việc lâu: queue và worker
  • Cần realtime: WebSocket, SSE hoặc polling
  • Cần nhiều bên cùng nghe: Pub/Sub hoặc event bus
  • Cần lưu lịch sử sự kiện và replay: Kafka/event streaming
  • Cần tăng tốc đọc: cache
  • Cần tìm kiếm tốt: search engine
  • Cần giao file lớn: object storage và CDN
  • Cần scale nhiều service: API Gateway, service discovery, observability

0.6. Bản đồ tiến hóa kiến trúc

  • Giai đoạn 1: một monolith rõ ràng, database tốt, deploy đơn giản
  • Giai đoạn 2: modular monolith, service layer, job queue, cache, observability
  • Giai đoạn 3: tách vài service thật sự cần tách
  • Giai đoạn 4: event-driven, analytics pipeline, autoscaling, reliability nghiêm túc
  • Giai đoạn 5: microservices nhiều hơn, platform team, managed infrastructure
  • Không nhảy sang giai đoạn sau nếu giai đoạn hiện tại chưa có áp lực thật

0.7. Bản đồ đọc lỗi hệ thống

  • Chậm một request: xem latency, database query, external API, trace
  • Chậm toàn hệ thống: xem CPU, RAM, connection pool, load balancer, queue
  • Job chờ lâu: xem queue length, queue age, worker concurrency, provider latency
  • Dữ liệu sai: xem transaction, race condition, retry, idempotency, event ordering
  • Service chết dây chuyền: xem timeout, retry storm, circuit breaker, bulkhead
  • Khó debug: xem structured logs, correlation ID, tracing, metrics

0.8. Những nguyên tắc xuyên suốt cuốn sách

  • Đơn giản trước, phức tạp sau
  • Đo trước, tối ưu sau
  • Tách logic trước, tách service sau
  • Timeout mọi thứ có thể chờ
  • Retry phải đi cùng idempotency
  • Queue giúp chống nghẽn nhưng làm hệ thống bất đồng bộ hơn
  • Cache giúp nhanh hơn nhưng có thể làm sai dữ liệu
  • Microservices tăng tự do nhưng cũng tăng chi phí vận hành
  • Không có công nghệ tốt nhất, chỉ có lựa chọn phù hợp nhất với vấn đề

---

Phần I. Tư Duy Nền Tảng

Chương 1. Học kiến trúc để làm gì?

  • Kiến trúc không phải để dùng nhiều công nghệ
  • Kiến trúc là cách kiểm soát độ phức tạp
  • Hệ thống tốt là hệ thống đủ đơn giản để vận hành
  • Công nghệ chỉ có ý nghĩa khi gắn với vấn đề thật
  • Cách đọc một quyết định kiến trúc: lợi ích, cái giá, rủi ro

Chương 2. Một hệ thống web nhìn từ trên cao

  • Người dùng gửi request, hệ thống xử lý, dữ liệu được lưu ở đâu
  • Frontend, backend, database, cache, queue, storage, worker
  • Vì sao cùng một app nhỏ nhưng production lại phức tạp hơn localhost
  • Những điểm thường gây nghẽn trong hệ thống thật
  • Cách vẽ sơ đồ hệ thống đơn giản mà dễ hiểu

Chương 3. Ba con số phải luôn nghĩ đến

  • Latency: một việc mất bao lâu
  • Throughput: mỗi giây/phút xử lý được bao nhiêu việc
  • Concurrency: cùng lúc có bao nhiêu việc đang diễn ra
  • Vì sao latency cao không đáng sợ bằng concurrency thấp
  • Cách tính nhanh để khỏi đoán mò

Chương 4. Workload quyết định kiến trúc

  • Việc chờ mạng khác việc tính toán nặng
  • Gọi API ngoài, query database, xử lý video, gửi email, chạy AI khác nhau thế nào
  • I/O-bound và CPU-bound bằng ngôn ngữ đời thường
  • Vì sao không nên dùng một cách xử lý cho mọi loại việc
  • Bảng chọn nhanh: request thường, job nền, async, worker, queue

Chương 5. Đừng tối ưu khi chưa biết nghẽn ở đâu

  • Bottleneck là gì
  • Dấu hiệu nghẽn CPU, RAM, database, queue, API ngoài
  • Vì sao đổi framework thường không phải bước đầu tiên
  • Cách đặt câu hỏi trước khi sửa kiến trúc
  • Checklist đo đạc tối thiểu

---

Phần II. Monolith, Modular Monolith Và Microservices

Chương 6. Monolith không xấu

  • Monolith là gì theo cách dễ hiểu
  • Vì sao monolith thường là lựa chọn tốt lúc đầu
  • Monolith tốt khác monolith rối ở đâu
  • Khi nào monolith bắt đầu đau
  • Những hiểu lầm phổ biến về monolith

Chương 7. Modular Monolith: tách trong đầu trước khi tách server

  • Modular monolith là gì
  • Vì sao nó thực dụng hơn microservices quá sớm
  • Module boundary là gì
  • Cách chia module theo nghiệp vụ
  • Khi nào module có thể tách thành service

Chương 8. Microservices thật ra giải quyết vấn đề gì?

  • Microservices không phải để app tự động nhanh hơn
  • Tách deploy, tách scale, tách lỗi, tách team
  • Cái giá: network, dữ liệu phân tán, debug khó, vận hành khó
  • Khi nào microservices đáng tiền
  • Khi nào microservices là tự làm khổ mình

Chương 9. So sánh Monolith, Modular Monolith và Microservices

  • Khác nhau về code
  • Khác nhau về database
  • Khác nhau về deploy
  • Khác nhau về lỗi và debug
  • Khác nhau về tốc độ phát triển
  • Bảng chọn theo giai đoạn sản phẩm

Chương 10. Khi nào nên tách một service?

  • Tách vì tải quá khác nhau
  • Tách vì lỗi một phần không được làm chết toàn hệ thống
  • Tách vì cần deploy độc lập
  • Tách vì dữ liệu và quyền sở hữu rõ ràng
  • Không tách chỉ vì "service này nhìn có vẻ riêng"
  • Checklist trước khi tách

Chương 11. Tách sai sẽ thành distributed monolith

  • Distributed monolith là gì
  • Service gọi nhau quá nhiều
  • Database vẫn dùng chung lung tung
  • Deploy tưởng độc lập nhưng thật ra dính nhau
  • Debug còn khổ hơn monolith
  • Cách tránh tách hình thức

---

Phần III. Chia Hệ Thống Theo Nghiệp Vụ

Chương 12. Domain là gì?

  • Domain không phải database schema
  • Domain là thế giới nghiệp vụ mà hệ thống đang phục vụ
  • Vì sao bắt đầu từ bảng dữ liệu dễ làm sai kiến trúc
  • Cách hỏi để tìm domain chính
  • Ví dụ: bán hàng, đặt lịch, thanh toán, học tập, thông báo

Chương 13. Bounded Context bằng ngôn ngữ dễ hiểu

  • Một khái niệm có thể mang nhiều nghĩa trong nhiều ngữ cảnh
  • Vì sao "user", "course", "order" không phải lúc nào cũng là một object duy nhất
  • Khi nào nên tách ngữ cảnh
  • Khi nào vẫn nên giữ chung
  • Cách dùng bounded context để chia module/service

Chương 14. Aggregate: chỗ nào cần chặt, chỗ nào nên lỏng

  • Aggregate là cụm dữ liệu phải đúng cùng nhau
  • Khi nào dùng transaction mạnh
  • Khi nào chỉ lưu ID tham chiếu
  • Khi nào chấp nhận dữ liệu đồng bộ chậm
  • Cách tránh foreign key chéo làm khó tách service sau này

Chương 15. Service layer và use case

  • Vì sao không nên nhét hết logic vào controller/view
  • Use case là gì
  • Service layer giúp code dễ đổi kiến trúc hơn thế nào
  • Service layer khác "god service" ở đâu
  • Khi nào service layer là quá mức

Chương 16. Domain event

  • "Đơn hàng đã thanh toán" quan trọng hơn "gọi hàm gửi email"
  • Event giúp module bớt dính nhau
  • Event nội bộ khác event gửi sang service khác
  • Khi nào event làm hệ thống sạch hơn
  • Khi nào event làm hệ thống khó lần theo hơn

---

Phần IV. Các Cách Giao Tiếp Trong Hệ Thống

Chương 17. Gọi trực tiếp: HTTP/API

  • API là cách hỏi và trả lời ngay
  • Khi nào HTTP là lựa chọn tốt nhất
  • Timeout và retry phải có
  • Vì sao không nên chờ việc 90 giây trong request
  • REST, gRPC, GraphQL nên hiểu ở mức nào

Chương 18. Giao việc rồi xử lý sau: Queue

  • Queue giống hàng đợi công việc
  • Producer, broker, consumer theo cách dễ hiểu
  • Vì sao queue cứu hệ thống khỏi nghẽn request
  • Khi nào cần queue
  • Khi nào queue làm hệ thống phức tạp không cần thiết

Chương 19. Phát sự kiện cho nhiều bên nghe: Pub/Sub

  • Pub/Sub khác queue ở đâu
  • Khi nào dùng Pub/Sub cho realtime notification
  • Khi nào dùng Pub/Sub cho event broadcasting
  • Vì sao không nên dùng Pub/Sub không bền cho job quan trọng
  • Durable subscription là gì

Chương 20. Lưu lịch sử sự kiện: Event Streaming

  • Event streaming khác message queue thế nào
  • Kafka giải quyết vấn đề gì
  • Replay là gì và vì sao quan trọng
  • Khi nào cần event log
  • Khi nào Kafka là quá sớm

Chương 21. Webhook, Polling, SSE, WebSocket

  • Webhook: làm xong thì gọi báo lại
  • Polling: hỏi định kỳ, đơn giản nhưng tốn request
  • SSE: server đẩy một chiều
  • WebSocket: kết nối hai chiều realtime
  • So sánh theo độ đơn giản, realtime, chi phí vận hành

Chương 22. Chọn cách giao tiếp đúng

  • Cần kết quả ngay: API
  • Việc lâu: queue
  • Nhiều bên cần biết: event/pubsub
  • Cần lưu lịch sử/replay: event streaming
  • Cần realtime UI: SSE/WebSocket/polling
  • Bảng quyết định nhanh

---

Phần V. Worker, Job Nền Và Việc Lâu

Chương 23. Vì sao không xử lý việc lâu trong request?

  • Request cần trả nhanh
  • Người dùng không nên chờ tác vụ dài
  • Server web không nên bị giữ bởi việc nền
  • Job nền là cách tách trải nghiệm khỏi xử lý nặng
  • Ví dụ: email, video, report, AI, import/export

Chương 24. Worker là gì?

  • Worker là người bốc việc khỏi queue
  • Worker khác web server ở đâu
  • Một worker xử lý một loại việc hay nhiều loại việc?
  • Khi nào cần nhiều queue
  • Khi nào cần nhiều nhóm worker

Chương 25. Concurrency trong worker

  • Concurrency là số việc đang xử lý cùng lúc
  • Process, thread, greenlet, async là các cách đạt concurrency
  • Vì sao workload I/O-bound cần concurrency cao
  • Vì sao workload CPU-bound cần cách khác
  • Tính nhanh số worker/concurrency cần có

Chương 26. Retry, timeout và idempotency

  • Việc gì cũng có thể lỗi
  • Retry giúp phục hồi lỗi tạm thời
  • Retry sai có thể phá dữ liệu
  • Idempotency là gì theo cách dễ hiểu
  • Timeout là dây an toàn bắt buộc
  • Dead letter queue để giữ việc xử lý thất bại

Chương 27. Rate limit và quota

  • API bên ngoài luôn có giới hạn
  • Rate limit theo phút, theo ngày, theo token, theo user
  • Vì sao concurrency cao có thể vượt quota
  • Cách dùng limiter để bảo vệ hệ thống
  • Backoff khi bị giới hạn

Chương 28. Theo dõi job nền

  • Queue dài bao nhiêu là nguy hiểm
  • Một job chờ bao lâu
  • Một job chạy bao lâu
  • Tỉ lệ lỗi và retry
  • Worker đang rảnh hay bận
  • Dashboard tối thiểu cho job system

---

Phần VI. Dữ Liệu: Nơi Hệ Thống Thường Đau Nhất

Chương 29. Database quan hệ vẫn là nền tảng

  • Vì sao PostgreSQL/MySQL vẫn là lựa chọn mạnh
  • Transaction, constraint, index giúp hệ thống đúng hơn
  • Khi nào database bắt đầu nghẽn
  • Tối ưu query trước khi đổi database
  • Sai lầm khi dùng NoSQL để né thiết kế dữ liệu

Chương 30. Transaction và tính đúng

  • Khi nào cần tất cả cùng đúng hoặc cùng hủy
  • Khi nào chấp nhận xử lý sau
  • Lock là gì
  • Race condition là gì
  • Tính đúng quan trọng hơn tốc độ ở những nghiệp vụ nào

Chương 31. Cache

  • Cache giúp nhanh hơn bằng cách nhớ tạm
  • Cache nằm ở đâu: browser, CDN, app, database
  • Khi nào nên cache
  • Khi nào cache làm dữ liệu sai
  • Cache invalidation là cái khó nhất

Chương 32. Search

  • Database search khác search engine
  • Khi nào cần Elasticsearch/OpenSearch
  • Search index không phải source of truth
  • Đồng bộ dữ liệu sang search như thế nào
  • Vì sao search có thể chậm đồng bộ vài giây

Chương 33. File và object storage

  • Vì sao không nên lưu file lớn trong database
  • Object storage là gì
  • Presigned URL
  • CDN
  • Xử lý upload lớn
  • Metadata và lifecycle

Chương 34. Analytics và dữ liệu hành vi

  • Dữ liệu vận hành khác dữ liệu phân tích
  • Vì sao không nên nhét mọi event hành vi vào database chính
  • Batch analytics và streaming analytics
  • Data warehouse/data lake dùng để làm gì
  • Khi nào mới cần pipeline dữ liệu riêng

Chương 35. Replication, sharding và những thứ chưa nên vội

  • Read replica là gì
  • Replication lag là gì
  • Sharding là gì
  • Vì sao sharding rất đau
  • Khi nào chỉ cần tối ưu database hiện tại
  • Khi nào mới nên nghĩ đến chia dữ liệu

---

Phần VII. Bảo Mật Và Phân Quyền

Chương 36. Authentication

  • Đăng nhập là xác nhận người dùng là ai
  • Session và cookie
  • JWT
  • OAuth2 và OpenID Connect ở mức dễ hiểu
  • Access token và refresh token
  • Khi nào dùng dịch vụ auth có sẵn

Chương 37. Authorization

  • Phân quyền là quyết định ai được làm gì
  • RBAC, ABAC, ACL
  • Object-level permission
  • Multi-tenant permission
  • Vì sao phân quyền thường phức tạp hơn đăng nhập
  • Cách nghĩ về permission trước khi code

Chương 38. Service-to-service security

  • Service gọi service có cần xác thực không?
  • API key, JWT, mTLS
  • Internal network không có nghĩa là an toàn
  • Secret management
  • Key rotation
  • Khi nào cần zero trust nghiêm túc

Chương 39. Web security thực dụng

  • HTTPS
  • CORS
  • CSRF
  • XSS
  • SQL injection
  • SSRF
  • File upload attack
  • Rate limiting
  • Audit log

---

Phần VIII. Vận Hành, Deploy Và Hạ Tầng

Chương 40. Production khác localhost như thế nào?

  • Nhiều người dùng cùng lúc
  • Lỗi mạng
  • Server restart
  • Database quá tải
  • File bị mất
  • Deploy làm hỏng dữ liệu
  • Tại sao hệ thống chạy được chưa đủ

Chương 41. Reverse proxy và load balancer

  • Reverse proxy làm gì
  • Load balancer làm gì
  • Health check
  • TLS termination
  • Timeout ở proxy
  • Khi nào một server là đủ
  • Khi nào cần scale ngang

Chương 42. API Gateway

  • API Gateway khác reverse proxy ở đâu
  • Routing request đến nhiều service
  • Authentication và rate limit ở gateway
  • Request aggregation
  • Backend for Frontend
  • Khi nào API Gateway giúp hệ thống gọn hơn
  • Khi nào API Gateway trở thành điểm nghẽn

Chương 43. CDN và edge

  • CDN giải quyết vấn đề gì
  • Static asset, image, video, file download
  • Cache ở edge
  • Cache invalidation
  • Origin server
  • Signed URL và protected content
  • Khi nào cần CDN
  • Khi nào CDN không giúp được gì

Chương 44. Firewall, WAF và network boundary

  • Firewall là gì
  • Security group là gì
  • WAF khác firewall ở đâu
  • Public network và private network
  • Allowlist, blocklist
  • DDoS protection
  • Không để database/worker lộ public
  • Network security vừa đủ cho web app

Chương 45. Docker và container

  • Container giải quyết vấn đề "máy tôi chạy được"
  • Image, container, volume, network
  • Docker Compose dùng khi nào
  • Container không làm app tự scale
  • Những lỗi thường gặp khi đưa container lên production

Chương 46. CI/CD

  • Vì sao deploy tay dễ lỗi
  • Pipeline build, test, deploy
  • Rolling deploy
  • Blue-green deploy
  • Canary deploy
  • Rollback
  • Database migration trong lúc deploy

Chương 47. Kubernetes

  • Kubernetes giải quyết orchestration
  • Pod, service, deployment theo cách dễ hiểu
  • Khi nào Kubernetes đáng dùng
  • Khi nào Kubernetes là quá nặng
  • Kubernetes không thay thế hiểu biết về app

Chương 48. Managed service hay tự host?

  • Tự host rẻ hơn nhưng tốn vận hành
  • Managed service đắt hơn nhưng giảm rủi ro
  • Database managed
  • Queue managed
  • Object storage managed
  • Khi nào nên mua thay vì tự dựng

---

Phần IX. Observability Và Reliability

Chương 49. Vì sao cần quan sát hệ thống?

  • Không đo thì chỉ đoán
  • Log, metrics, trace khác nhau thế nào
  • Quan sát để debug
  • Quan sát để biết sắp nghẽn
  • Quan sát để ra quyết định kiến trúc

Chương 50. Logging

  • Log tốt phải giúp trả lời chuyện gì đã xảy ra
  • Structured log
  • Log level
  • Correlation ID
  • Không log dữ liệu nhạy cảm
  • Log quá nhiều cũng là vấn đề

Chương 51. Metrics

  • Counter, gauge, histogram
  • p50, p95, p99
  • Latency, traffic, error, saturation
  • Metrics cho web server
  • Metrics cho database
  • Metrics cho queue/worker

Chương 52. Tracing

  • Trace là đường đi của một request
  • Span là từng bước trong đường đi đó
  • Vì sao tracing quan trọng khi có nhiều service
  • Trace qua queue khó hơn trace qua HTTP
  • OpenTelemetry ở mức khái niệm

Chương 53. Alerting và SLO

  • Alert tốt là alert cần hành động
  • Alert fatigue
  • SLI, SLO, SLA
  • Error budget
  • Báo động theo triệu chứng thay vì theo từng lỗi nhỏ
  • Runbook cho sự cố

Chương 54. Failure modes

  • Retry storm
  • Thundering herd
  • Cascading failure
  • Queue overload
  • Database overload
  • External provider outage
  • Partial outage
  • Graceful degradation

Chương 55. Backup và restore

  • Backup chưa đủ, phải test restore
  • RPO và RTO
  • Point-in-time recovery
  • Disaster recovery
  • Dữ liệu nào cần bảo vệ nhất
  • Sai lầm khi chỉ backup code mà quên database/file

---

Phần X. Testing Và Thay Đổi An Toàn

Chương 56. Test để tự tin đổi hệ thống

  • Unit test, integration test, end-to-end test
  • Test nào rẻ, test nào đắt
  • Vì sao quá nhiều end-to-end test làm team chậm
  • Test phần nghiệp vụ quan trọng trước
  • Test không thay thế monitoring

Chương 57. Contract testing

  • Service đổi API có thể làm service khác chết
  • API contract là gì
  • Consumer-driven contract
  • Schema compatibility
  • Backward compatibility
  • Breaking change
  • Khi nào contract test đáng dùng

Chương 58. Testing event-driven systems

  • Event có thể đến trùng
  • Event có thể đến muộn
  • Event có thể mất nếu dùng sai broker
  • Test retry
  • Test idempotency
  • Test eventual consistency
  • Test consumer độc lập

Chương 59. Deploy an toàn

  • Feature flag
  • Canary
  • Shadow traffic
  • Parallel run
  • Rollback
  • Migration có quan sát
  • Không deploy lớn khi không có đường quay lại

---

Phần XI. Các Ranh Giới Kiến Trúc Hiện Đại

Chương 60. AI Application Architecture

  • AI app khác app truyền thống ở đâu
  • Output không deterministic và cách kiểm soát chất lượng
  • Model provider và model gateway
  • Prompt versioning như một phần của release management
  • Context engineering và giới hạn context
  • RAG, embedding, retrieval và knowledge layer
  • Evaluation thay cho cảm tính
  • Cost, latency, token budget
  • Safety filtering và guardrails
  • Observability cho prompt, retrieval, model response và cost
  • Khi nào AI là feature, khi nào AI là core workflow

Chương 61. AI Agent App Architecture

  • Agent khác chatbot thường ở đâu
  • Tool calling và function calling
  • Planner, executor, critic, memory
  • Agent workflow: tuyến tính, phân nhánh, vòng lặp, human-in-the-loop
  • Context engineering và quản lý giới hạn context
  • Short-term memory, long-term memory, conversation state
  • Permission, sandbox, approval và giới hạn hành động
  • Evaluation cho agent: task success, reliability, cost, latency
  • Observability cho agent: trace, tool call log, reasoning audit
  • Khi nào agent đáng dùng, khi nào workflow thường là đủ

Chương 62. Multi-tenancy

  • Tenant là gì
  • Shared database, separate schema, database per tenant
  • Tenant isolation trong dữ liệu và quyền truy cập
  • Tenant-aware permission
  • Noisy neighbor
  • Billing, quota và plan theo tenant
  • Audit log theo tenant
  • Backup, restore và export theo tenant
  • Khi nào multi-tenancy làm hệ thống phức tạp hơn tưởng tượng

Chương 63. Privacy, Compliance và Data Governance

  • Dữ liệu nhạy cảm và PII
  • Consent, purpose và data minimization
  • Data retention và quyền xóa dữ liệu
  • Data export và portability
  • Audit trail cho truy cập dữ liệu
  • Data residency
  • Masking, encryption và secret separation
  • Governance cho analytics và AI training data
  • Khi nào compliance phải ảnh hưởng đến kiến trúc từ đầu

Chương 64. Money, Ledger và Reconciliation

  • Dữ liệu nào không được sai
  • Payment intent, authorization, capture, refund
  • Ledger và double-entry thinking
  • Idempotency mạnh cho giao dịch tiền
  • State machine cho payment/booking/order
  • Webhook từ payment provider
  • Reconciliation và đối soát
  • Audit trail và immutable history
  • Khi nào không được chỉ update một cột balance

Chương 65. Realtime State Synchronization

  • Trạng thái chung là gì
  • Presence, typing, delivery receipt
  • Fan-out và ordering
  • Online/offline sync
  • Event ordering và duplicate event
  • Conflict resolution
  • Operational Transform và CRDT ở mức khái niệm
  • Persistence cho realtime message/state
  • Khi nào realtime thật sự cần, khi nào polling đủ tốt

Chương 66. Extensibility và Integration Boundary

  • Public API, private API và partner API
  • Webhook cho bên thứ ba
  • Plugin và extension point
  • API versioning và backward compatibility
  • Rate limit, quota và abuse theo partner
  • Sandbox environment cho integration
  • Contract, schema và breaking change
  • Khi bên thứ ba lỗi thì hệ thống của mình nên phản ứng thế nào
  • Khi nào mở platform là quá sớm

Chương 67. Abuse Prevention và Trust Boundary

  • Không mặc định user, bot, file upload và traffic là an toàn
  • Anti-spam và anti-bot
  • Rate limit, quota và fairness
  • Abuse prevention cho URL/file/search/comment
  • Moderation và trust and safety
  • Fraud signal và risk scoring
  • File safety và content scanning
  • Graceful degradation khi bị tấn công hoặc traffic bất thường
  • Cân bằng giữa bảo vệ hệ thống và không chặn nhầm user tốt

---

Phần XII. Kiến Trúc Theo Bài Toán

Chương 68. Ứng dụng CRUD/SaaS

  • User, organization, role
  • Admin
  • Billing
  • Audit log
  • Background job
  • Multi-tenancy
  • Khi nào CRUD app vẫn cần kiến trúc tốt

Chương 69. Marketplace

  • Listing
  • Booking/order
  • Payment
  • Payout
  • Review
  • Dispute
  • Search
  • Notification
  • Trust and safety

Chương 70. Hệ thống realtime

  • Chat
  • Presence
  • WebSocket
  • Pub/Sub backend
  • Message persistence
  • Offline message
  • Push notification
  • Scaling realtime

Chương 71. Hệ thống xử lý media

  • Upload
  • Transcode
  • Thumbnail
  • Queue worker
  • CDN
  • Progress update
  • Retry failed job
  • Chi phí xử lý file lớn

Chương 72. Hệ thống nhiều job dài

  • Long-running job
  • Worker concurrency
  • Queue capacity
  • Progress update
  • Job cancellation
  • Result storage
  • Retry và partial failure
  • Khi nào cần workflow engine

Chương 73. Analytics pipeline

  • Event tracking
  • Batch processing
  • Stream processing
  • Warehouse
  • Dashboard
  • Backfill
  • Replay
  • Data quality

---

Phần XIII. Chọn Công Nghệ Hiện Đại

Chương 74. Decision framework: chọn công nghệ theo constraint

  • Bắt đầu từ constraint, không bắt đầu từ trend
  • Team size, năng lực vận hành và khả năng tuyển dụng
  • Workload, latency, throughput và data size
  • Maturity của sản phẩm và giai đoạn công ty
  • Managed service hay self-host
  • Cost hiện tại, cost khi scale và hidden cost
  • Lock-in, portability và exit plan
  • Ecosystem, community, security và long-term support
  • Failure mode và khả năng quan sát
  • Khi nào công nghệ nhàm chán là lựa chọn tốt nhất

Chương 75. Chọn backend framework

  • Django/DRF
  • FastAPI
  • Spring Boot
  • ASP.NET Core
  • NestJS
  • Express/Fastify
  • Go
  • Rails/Laravel
  • So sánh theo team, domain, tốc độ phát triển, vận hành

Chương 76. Chọn message broker

  • Redis Queue/Streams
  • RabbitMQ
  • Kafka
  • NATS
  • SQS/SNS/EventBridge
  • So sánh theo độ bền, retry, throughput, replay, độ phức tạp
  • Broker nào cho MVP, broker nào cho scale

Chương 77. Chọn database

  • PostgreSQL/MySQL
  • MongoDB
  • Redis
  • Elasticsearch/OpenSearch
  • ClickHouse
  • Cassandra
  • Neo4j
  • Chọn theo cách truy cập dữ liệu, không chọn theo trend

Chương 78. Chọn hạ tầng deploy

  • VPS
  • Docker Compose
  • PaaS
  • Serverless
  • Container service
  • Kubernetes
  • Managed cloud
  • So sánh theo chi phí, độ kiểm soát, độ phức tạp

Chương 79. Chọn observability stack

  • Logs
  • Metrics
  • Traces
  • Sentry
  • Prometheus/Grafana
  • ELK/OpenSearch
  • Datadog/New Relic
  • Self-host vs managed

---

Phần XIV. Quy Trình Thiết Kế Một Hệ Thống

Chương 80. Bắt đầu từ yêu cầu thật

  • Người dùng là ai
  • Hành động chính là gì
  • Dữ liệu nào quan trọng
  • Việc nào cần realtime
  • Việc nào có thể xử lý sau
  • Điều gì không được sai

Chương 81. Ước lượng nhanh trước khi thiết kế

  • Bao nhiêu request
  • Bao nhiêu user đồng thời
  • Dữ liệu tăng bao nhiêu
  • Job mất bao lâu
  • Cần bao nhiêu worker
  • API ngoài giới hạn thế nào
  • Chi phí có thể phình ở đâu

Chương 82. Chọn kiến trúc theo giai đoạn

  • Prototype
  • MVP
  • Có khách hàng thật
  • Scale-up
  • Enterprise
  • Kiến trúc nên tiến hóa theo áp lực thật
  • Đừng dùng kiến trúc của công ty lớn cho sản phẩm chưa có người dùng

Chương 83. Checklist thiết kế

  • Request path
  • Data model
  • Transaction boundary
  • Queue/job
  • Cache
  • Failure handling
  • Security
  • Observability
  • Deploy
  • Cost

Chương 84. Checklist production

  • Timeout
  • Retry
  • Idempotency
  • Rate limit
  • Logs
  • Metrics
  • Alerts
  • Backup
  • Rollback
  • Load test
  • Documentation vừa đủ

Chương 85. Những lỗi kiến trúc phổ biến

  • Dùng microservices quá sớm
  • Dùng Kafka khi Redis/RabbitMQ là đủ
  • Dùng Kubernetes khi Docker Compose/PaaS là đủ
  • Không có timeout
  • Retry không kiểm soát
  • Không có idempotency
  • Cache sai dữ liệu
  • Không đo p95/p99
  • Không có rollback

---

Phần XV. Atlas Kiến Trúc Hệ Thống Kinh Điển

Mỗi chương trong phần này nên được viết theo cùng một khung:

  • Bài toán là gì?
  • Tính năng cốt lõi
  • Dữ liệu chính
  • Luồng đọc và luồng ghi
  • Bottleneck
  • Kiến trúc đơn giản
  • Kiến trúc khi scale
  • Công nghệ thường dùng
  • Trade-off
  • Lỗi thiết kế phổ biến

Chương 86. URL shortener

  • Luồng đọc và ghi
  • ID generation
  • Redirect latency
  • Cache
  • Analytics
  • Abuse prevention

Chương 87. Rate limiter

  • Giới hạn theo IP, user, API key
  • Fixed window, sliding window, token bucket
  • Redis-based limiter
  • Distributed rate limit
  • Xử lý burst traffic
  • Tránh chặn nhầm user tốt

Chương 88. Pastebin / text sharing

  • Lưu text ngắn và dài
  • Expiration
  • Public/private paste
  • Read-heavy workload
  • Abuse prevention
  • Storage và cache

Chương 89. Notification system

  • Email, SMS, push
  • Queue
  • Retry
  • Provider failover
  • User preference
  • Delivery tracking
  • Rate limit

Chương 90. Realtime chat system

  • WebSocket
  • Conversation và message
  • Presence
  • Message persistence
  • Fan-out
  • Offline message
  • Delivery receipt
  • Scaling nhiều server

Chương 91. News feed / social network timeline

  • Follow graph
  • Fan-out on write
  • Fan-out on read
  • Ranking
  • Cache timeline
  • Hot user problem
  • Consistency và freshness

Chương 92. Follow graph

  • User follow user
  • Graph query
  • Celebrity account
  • Mutual friends
  • Recommendation seed
  • Storage model
  • Cache và denormalization

Chương 93. Like, comment và reaction system

  • High write volume
  • Counter consistency
  • Anti-spam
  • Pagination
  • Hot content
  • Event-driven update

Chương 94. Search autocomplete

  • Prefix search
  • Ranking suggestion
  • Trie vs search index
  • Cache hot query
  • Personalization
  • Latency thấp

Chương 95. Search engine

  • Crawl/index/query
  • Inverted index
  • Ranking
  • Sharding index
  • Freshness
  • Relevance tuning

Chương 96. CDN và static asset delivery

  • Origin server
  • Edge cache
  • Cache key
  • Cache invalidation
  • Signed URL
  • Image optimization
  • Global latency

Chương 97. API Gateway / reverse proxy platform

  • Routing
  • TLS termination
  • Authentication
  • Rate limit
  • Request/response transformation
  • Observability
  • Gateway bottleneck

Chương 98. File storage / cloud drive

  • Upload/download
  • Folder tree
  • Metadata
  • Object storage
  • Deduplication
  • Sharing permission
  • Sync nhiều thiết bị

Chương 99. Video processing system

  • Upload
  • Queue
  • Worker
  • Transcode
  • CDN
  • Progress update
  • Failed job recovery

Chương 100. Video streaming platform

  • Adaptive bitrate
  • HLS/DASH
  • CDN
  • Watch history
  • Recommendation entrypoint
  • Comment/live interaction
  • Copyright/content protection

Chương 101. Livestream system

  • Ingest
  • Transcoding
  • Low latency streaming
  • Chat realtime
  • Fan-out
  • Moderation
  • Recording

Chương 102. Collaborative editor

  • Realtime editing
  • Conflict resolution
  • Operational transform
  • CRDT
  • Presence
  • Version history
  • Offline edits

Chương 103. E-commerce system

  • Product catalog
  • Cart
  • Checkout
  • Inventory
  • Payment
  • Order
  • Promotion
  • Search

Chương 104. Flash sale system

  • Traffic spike
  • Inventory lock
  • Queue waiting room
  • Anti-bot
  • Payment timeout
  • Fairness
  • Graceful degradation

Chương 105. Booking / ticketing system

  • Availability
  • Calendar
  • Timezone
  • Reservation lock
  • Payment hold
  • Cancellation
  • Conflict handling

Chương 106. Payment workflow

  • Order
  • Payment intent
  • Webhook
  • Idempotency
  • Refund
  • Payout
  • Reconciliation

Chương 107. Wallet / ledger system

  • Balance không phải chỉ là một con số
  • Double-entry ledger
  • Transaction history
  • Idempotency
  • Reconciliation
  • Auditability
  • Consistency

Chương 108. Ride-hailing system

  • Driver location
  • Passenger matching
  • ETA
  • Pricing
  • Trip state machine
  • Realtime tracking
  • Surge traffic

Chương 109. Food delivery system

  • Restaurant, courier, customer
  • Order lifecycle
  • Dispatching
  • ETA
  • Realtime tracking
  • Cancellation/refund
  • Marketplace operations

Chương 110. Marketplace

  • Listing
  • Booking/order
  • Payment
  • Payout
  • Review
  • Dispute
  • Trust and safety

Chương 111. AI grading system

  • Submission
  • Queue
  • Worker concurrency
  • Model provider
  • Result callback
  • Evaluation
  • Cost tracking
  • Failure handling

Chương 112. RAG / AI knowledge assistant

  • Document ingestion
  • Chunking
  • Embedding
  • Vector search
  • Reranking
  • Prompt assembly
  • Evaluation
  • Cost and latency

Chương 113. Recommendation system

  • Candidate generation
  • Ranking
  • User behavior events
  • Feature store
  • Offline training
  • Online serving
  • Cold start

Chương 114. Web crawler

  • URL frontier
  • Politeness
  • Robots.txt
  • Deduplication
  • Crawl scheduling
  • Parsing
  • Indexing pipeline

Chương 115. Logging platform

  • Log ingestion
  • Buffering
  • Indexing
  • Search
  • Retention
  • Sampling
  • Cost control

Chương 116. Metrics / monitoring platform

  • Metric ingestion
  • Time-series database
  • Aggregation
  • Alerting
  • Dashboard
  • Cardinality problem
  • Retention

Chương 117. Feature flag system

  • Flag evaluation
  • Targeting
  • Rollout
  • Kill switch
  • Audit log
  • Config propagation
  • Low latency reads

Chương 118. Auth / identity system

  • Login
  • Session/token
  • OAuth/OIDC
  • Password reset
  • MFA
  • Permission
  • Account security

Chương 119. Analytics pipeline

  • Event schema
  • Ingestion
  • Batch vs stream
  • Warehouse
  • Dashboard
  • Backfill
  • Replay

---

Phụ Lục

Phụ lục A. Bảng chọn nhanh

  • API hay queue
  • Queue hay Pub/Sub
  • Redis hay RabbitMQ
  • RabbitMQ hay Kafka
  • Polling hay WebSocket
  • Monolith hay microservices
  • Self-host hay managed service

Phụ lục B. Công thức tính nhanh

  • Latency, throughput, concurrency
  • Worker count
  • Queue capacity
  • Storage growth
  • Bandwidth
  • Availability
  • Cost estimate

Phụ lục C. Câu hỏi trước khi chọn công nghệ

  • Vấn đề thật là gì?
  • Dữ liệu có cần đúng ngay không?
  • Việc này cần trả lời ngay hay xử lý sau?
  • Nếu service này chết thì chuyện gì xảy ra?
  • Nếu traffic tăng 10 lần thì nghẽn ở đâu?
  • Nếu muốn rollback thì làm thế nào?

Phụ lục D. Lộ trình học 8 tuần

  • Tuần 1: request path, latency, throughput, concurrency
  • Tuần 2: monolith, modular monolith, domain boundary
  • Tuần 3: API, queue, Pub/Sub, WebSocket
  • Tuần 4: worker, retry, timeout, idempotency
  • Tuần 5: database, cache, search, storage
  • Tuần 6: auth, security, deploy, cloud
  • Tuần 7: observability, reliability, testing
  • Tuần 8: case studies và checklist production