Golang & Node.js — Tài liệu chuyên sâu cho Backend Engineer

Bộ tài liệu 15 chương, viết theo tư duy Problem → Tại sao tồn tại → Cơ chế bên trong → Trade-off → Production → Anti-pattern → Khi nào không dùng. Mục tiêu không phải dạy cú pháp — mà giúp bạn hiểu bản chất, phân tích bottleneck và tự đưa ra quyết định kỹ thuật có cơ sở.

Đối tượng: Software/Backend Engineer, Senior Engineer, Tech Lead, Solution Architect.


Mục lục

Phần I — Golang

#ChươngNội dung chính
01Triết lý thiết kế Go và nền tảngTại sao Go tồn tại · Compilation model · Packages/Modules (MVS) · Stack vs Heap · Escape analysis · Garbage Collector · GOGC/GOMEMLIMIT
02Concurrency: Goroutine, Scheduler, GPMBài toán C10K/C10M · GPM model · Work stealing · Netpoller vs syscall · Channel internals · Mutex/RWMutex/Atomic · WaitGroup · Context
03Concurrency PatternsWorker Pool · Pipeline · Fan-in/Fan-out · Backpressure & load shedding · singleflight · errgroup · sizing theo Little’s Law
04Runtime InternalsMemory allocator (mcache/mcentral/mheap) · GC pacer & mark assist · Write barrier · Netpoller · Sysmon · Chẩn đoán RSS vs heap
05Performance EngineeringBenchmark & benchstat · pprof (CPU/heap/goroutine/mutex/trace) · Tối ưu theo tầng · Latency percentile · Case study GC assist
06Production Engineering — ResilienceGraceful shutdown · Retry & retry storm · Circuit breaker · Rate limiter · Idempotency · Distributed lock & fencing token
07Software ArchitectureDependency Injection kiểu Go · Clean/Hexagonal · DDD (bounded context, aggregate) · Event-driven & Transactional Outbox · Error handling như kiến trúc

Phần II — Node.js

#ChươngNội dung chính
08Tại sao Node tồn tại, V8, RuntimeBối cảnh 2009 · V8 JIT (hidden class, inline caching, deopt) · libuv & thread pool 4 luồng · Single thread nghĩa là gì
09Event Loop InternalsCác phase libuv · Microtask/Macrotask · nextTick vs setImmediate · Callback → Promise → Async/Await · AbortController · Event loop blocking
10Concurrency: Worker, Cluster, StreamCluster vs nhiều pod · Worker threads & piscina · Child process · Stream & backpressure · pipeline · for await
11Memory: V8 Heap, GC, LeakNew/Old space · Generational GC (so với Go) · max-old-space-size · 5 loại memory leak · Điều tra bằng heap snapshot
12Performance EngineeringEvent loop lag & ELU · CPU profiling (0x, clinic) · Tối ưu I/O (keep-alive, DataLoader) · Case study p99
13Production EngineeringError handling & crash-fast · Graceful shutdown (bẫy keep-alive) · Logging (pino, AsyncLocalStorage) · Scaling · npm supply chain

Phần III — So sánh và quyết định kiến trúc

#ChươngNội dung chính
14So sánh toàn diện Go vs Node14 tiêu chí: runtime, concurrency, throughput, latency, memory, scale, productivity, ecosystem, vận hành · Decision heuristics · Phân tích chi phí
15Kiến trúc thực tế — 11 loại hệ thốngAPI Gateway · Auth · Payment · Notification · Chat · Social · E-commerce · FinTech · Streaming · Blockchain · AI Platform

Cách đọc

  • Đọc tuần tự nếu muốn xây nền: 01→07 (Go), 08→13 (Node), rồi 14-15.
  • Đọc theo nhu cầu:
    • Chuẩn bị phỏng vấn senior → 02, 04, 09, 11, 14.
    • Đang chữa cháy hiệu năng → 05 (Go) hoặc 12 (Node), kèm 04/11.
    • Thiết kế hệ thống mới → 14, 15, rồi 06, 07.
    • Sự cố production lặp lại → 06, 13.
  • Các chương tham chiếu chéo nhau; pattern chung (retry, idempotency, outbox…) viết chi tiết một lần ở phần Go (chương 6-7) và được phần Node tham chiếu — nguyên lý giống nhau, khác thư viện.

Quy ước

  • Thuật ngữ chuyên ngành (Goroutine, Event Loop, Backpressure, Idempotency…) giữ nguyên tiếng Anh — đây là ngôn ngữ làm việc thực tế.
  • Con số hiệu năng trong tài liệu là bậc độ lớn để định hướng trực giác, không phải cam kết — luôn benchmark trên workload và hardware của bạn.
  • Code ví dụ tối giản để làm rõ ý — production cần bổ sung đầy đủ error handling, config, test.

Kiến thức nền dựa trên Go 1.2x và Node.js 20/22 LTS.