Bài 0 — Giới Thiệu Series

Infrastructure Handbook — Từ First Principles đến Production Bộ tài liệu chuyên sâu về hạ tầng cho hệ thống backend, viết cho Software/Backend/Senior Engineer, Tech Lead và Architect. Mục tiêu không phải liệt kê khái niệm — mà là giúp bạn hiểu tại sao mỗi công nghệ tồn tại, nó đánh đổi điều gì, và làm sao thiết kế/vận hành/debug hệ thống production. Cấu trúc Module Nội dung Vì sao đọc 01 — Networking Fundamentals OSI/TCP-IP, IP/CIDR/NAT, TCP, UDP, DNS, HTTP 1.1→3, QUIC, TLS Nền của mọi thứ; 80% sự cố “bí ẩn” nằm ở đây 02 — Backend Networking Connection pooling, LB, CDN, WebSocket, gRPC, service discovery, timeout/retry/circuit breaker Cách service nói chuyện với nhau cho đáng tin cậy 03 — Linux Internals Process/thread/scheduler, memory, fd, epoll, signal, cgroup/namespace, OOM Mọi thứ deploy đều là process Linux; hiểu nó = debug được mọi tầng trên 04 — Container Docker/containerd/runc, image/layer/overlayfs, networking, storage, security Container = process được cách ly, không phải VM nhẹ 05 — Kubernetes Reconciliation model, Pod/probe, controllers, Service/Ingress, scheduler, autoscaling, volume Hệ điều khiển hội tụ trạng thái — nắm mô hình, chi tiết tự sáng 06 — CI/CD Pipeline, artifact bất biến, rolling/blue-green/canary, rollback, feature flag, GitOps Quản lý rủi ro thay đổi — nguồn sự cố số 1 07 — Cloud Infrastructure VPC/subnet/routing, SG, NAT, managed services, autoscaling, multi-region, cost Topology và kinh tế học của cloud 08 — Observability Logging, metrics/Prometheus, tracing/OTel, SLI/SLO/SLA, alerting Không đo được thì không vận hành được 09 — Reliability Engineering HA, DR/RTO/RPO, bulkhead, degradation, load shedding, chaos engineering, postmortem Thiết kế để phục vụ user khi mọi thứ đang hỏng 10 — Security TLS/mTLS, JWT/OAuth2, secret management, WAF/DDoS, container & K8s security Defense in depth + least privilege như thuộc tính kiến trúc 11 — Kiến trúc thực tế E-commerce, FinTech, Social, SaaS, Video, Messaging, Blockchain, AI Platform Bài tập tổng hợp: từ workload suy ra kiến trúc Cách đọc Đọc tuần tự lần đầu: các module xây trên nhau có chủ đích (TCP slow start ở module 01 giải thích connection pooling ở module 02; cgroup ở module 03 giải thích CPU throttling ở module 05; retry ở module 02 quay lại trong FinTech ở module 11). Lộ trình theo vai trò: Backend Engineer: 01 → 02 → 03 → 08, rồi phần còn lại. Tiếp quản vận hành Kubernetes: 03 → 04 → 05 → 08 → 09. Chuẩn bị lên Architect: đọc hết, dừng lâu ở mọi bảng trade-off và module 11. Dùng làm tài liệu tra cứu sự cố: mỗi module có bảng troubleshooting/lệnh Linux; module 03 có bảng “triệu chứng → lệnh đầu tiên” đáng in ra. Triết lý của bộ tài liệu Mỗi chủ đề đi theo mạch: vấn đề gì → vì sao giải pháp cũ không đủ → công nghệ này hoạt động thế nào bên trong → đánh đổi cái gì → dùng ở production ra sao → khi nào KHÔNG dùng → hỏng thì debug thế nào. Mọi kết luận kỹ thuật đều phải trả lời được: tại sao, đánh đổi gì, và điều gì xảy ra nếu làm ngược lại. ...

February 1, 2026 · 3 min

Bloom filter là gì và trường hợp sử dụng

Chào mọi người, hôm nay trong lúc mình ôn tập kiến thức thì nhớ đến Bloom Filter, thế là mình lại phải viết thêm một bài nói về cái này nữa rồi =)) Bloom Filter là một cấu trúc dữ liệu xác suất được thiết kế để kiểm tra nhanh chóng xem một phần tử có thuộc tập hợp hay không. Công dụng của nó là kiểm tra nhanh xem “Cái này có chưa nhỉ?” ...

May 24, 2025 · 4 min

So sánh Node.js và Golang trong Backend

Xin chào mọi người, Trong quá trình làm việc ở vị trí Backend Engineer, mình đã trải qua nhiều ngôn ngữ lập trình, trong đó có Node.js và Golang. Vậy trường hợp nào nên dùng Node.js, trường hợp nào nên dùng Golang? Bài viết này chia sẻ kinh nghiệm thực chiến cá nhân và quan sát thực tế từ đồng nghiệp xung quanh. Let’s start! 1. Hiệu năng và Đa luồng Golang có hiệu năng tốt hơn nhờ là compiled language và mô hình goroutine rất nhẹ (lightweight thread do Go runtime quản lý), dễ dàng xử lý hàng nghìn concurrent connections mà tốn rất ít tài nguyên. ...

May 17, 2025 · 4 min

Re-org là gì? Backend Developer cần xử lý thế nào khi Blockchain "đổi ý"

1. Cơ bản về cách blockchain thêm block Các blockchain như Ethereum, Bitcoin hoạt động như sau: Mỗi node trong mạng sẽ giữ một bản sao của blockchain hiện tại. Khi một miner (hoặc validator) tìm được block mới hợp lệ, nó sẽ broadcast block đó cho mạng. Các node nhận block mới sẽ xác minh, nếu hợp lệ thì thêm vào chain của mình. Vấn đề xảy ra khi nhiều miner có thể tìm được block mới gần như cùng một lúc. Giả sử mạng lưới đang dừng ở block thứ 99. Miner A tìm ra block 100A và broadcast nó. Ở một nơi khác, Miner B cũng tìm ra một block 100B và broadcast. Do độ trễ mạng, các node khác nhau có thể nhận và thêm vào chuỗi khác nhau: 100A hoặc 100B. ...

May 10, 2025 · 3 min