HARRY-18 — Glossary — thuật ngữ Backend EN ↔ VN
Glossary — thuật ngữ Backend EN ↔ VN
Tra cứu nhanh. Thuật ngữ giữ tiếng Anh (đó là cách chúng xuất hiện trong docs, log, và phỏng vấn), giải thích ngắn bằng tiếng Việt + con trỏ tới giai đoạn học sâu. Ưu tiên các từ mà FE engineer chưa từng gặp hoặc hiểu khác ở phía client.
Cách dùng: Ctrl+F từ khoá. Cột cuối là nơi đào sâu.
A. HTTP & API
| Thuật ngữ | Nghĩa ngắn | Học ở |
|---|---|---|
| Idempotent | Gọi 1 lần hay 10 lần cho cùng kết quả trên server. GET/PUT/DELETE có, POST thì không (trừ khi tự làm) | GĐ2, GĐ8 |
| Idempotency key | Khoá client gửi kèm POST để server nhận ra request lặp và không xử lý hai lần | GĐ8 |
| Safe method | Method không đổi trạng thái server (GET, HEAD) | GĐ2 |
| Preflight | Request OPTIONS trình duyệt tự gửi trước request "không đơn giản", để hỏi CORS | GĐ2 |
| Content negotiation | Client và server thoả thuận định dạng qua Accept / Content-Type | GĐ2 |
| ETag | "Vân tay" của response; client gửi lại If-None-Match → server trả 304 nếu chưa đổi | GĐ8 |
| Cursor pagination | Phân trang bằng con trỏ tới bản ghi cuối, thay vì OFFSET. Ổn định khi dữ liệu đang thay đổi | GĐ8 |
| Rate limiting | Giới hạn số request trong một khoảng thời gian | GĐ8 |
| Token bucket | Thuật toán rate limit: xô token đầy dần theo thời gian, mỗi request tiêu 1 token | GĐ8 |
| Backpressure | Tín hiệu "tôi đang quá tải, chậm lại" từ bên nhận tới bên gửi | GĐ2, GĐ18 |
| Webhook | API ngược chiều: bên thứ ba gọi vào server bạn khi có sự kiện | GĐ8 |
| HMAC signature | Chữ ký bằng khoá bí mật chung, dùng để xác minh webhook đến thật sự từ provider | GĐ8 |
| DTO (Data Transfer Object) | Object định nghĩa hình dạng dữ liệu vào/ra ở biên API | GĐ6 |
| OpenAPI / Swagger | Đặc tả contract của REST API dưới dạng máy đọc được | GĐ6 |
| SSE (Server-Sent Events) | Server đẩy dữ liệu một chiều qua HTTP giữ mở — dùng cho streaming LLM | GĐ19 |
B. Node.js runtime
| Thuật ngữ | Nghĩa ngắn | Học ở |
|---|---|---|
| Event loop | Vòng lặp Node dùng để xử lý I/O bất đồng bộ trên một luồng | GĐ2 |
| Microtask / macrotask | Hai hàng đợi khác nhau; Promise (micro) luôn chạy trước setTimeout (macro) | GĐ2 |
| libuv | Thư viện C đứng sau event loop và thread pool của Node | GĐ2 |
| Thread pool | Nhóm luồng nền cho việc chặn (fs, crypto, dns). Mặc định 4 | GĐ2 |
| I/O-bound vs CPU-bound | Chờ đợi bên ngoài vs tính toán. Node giỏi cái đầu, tệ cái sau | GĐ2 |
| Blocking | Code chiếm event loop, làm mọi request khác đứng chờ | GĐ2 |
| Stream | Xử lý dữ liệu theo từng mảnh, bộ nhớ không đổi bất kể kích thước | GĐ2, GĐ11 |
| Buffer | Vùng nhớ nhị phân thô của Node | GĐ2 |
| Worker threads | Luồng thật, để đẩy việc CPU-bound ra khỏi event loop | GĐ2 |
| Graceful shutdown | Thoát process có trật tự: ngừng nhận việc mới, xử nốt việc đang chạy, đóng tài nguyên | GĐ8, GĐ18 |
| ESM / CJS | Hai hệ module của Node (import vs require) — không trộn tự do được | GĐ1 |
| Transpile vs type-check | Xoá type để chạy vs kiểm tra type. esbuild/tsx chỉ làm cái đầu | GĐ1 |
C. Database
| Thuật ngữ | Nghĩa ngắn | Học ở |
|---|---|---|
| ACID | Atomicity, Consistency, Isolation, Durability — 4 đảm bảo của transaction | GĐ4 |
| Transaction | Nhóm thao tác "được ăn cả, ngã về không" | GĐ4 |
| Isolation level | Mức cách ly giữa các transaction chạy song song (Read Committed, Serializable...) | GĐ4 |
| Normalization | Tổ chức dữ liệu để mỗi sự thật chỉ lưu một chỗ | GĐ4 |
| Denormalization | Cố ý sao chép dữ liệu để đọc nhanh hơn | GĐ4 |
| Foreign key | Ràng buộc trỏ tới khoá chính bảng khác | GĐ4 |
| Index | Cấu trúc phụ giúp tìm hàng mà không quét toàn bảng | GĐ4 |
| B-tree / GIN / HNSW | Ba loại index: giá trị thông thường / tìm trong mảng-text / vector | GĐ4, GĐ20 |
| Partial index | Index chỉ trên tập con hàng (WHERE deleted_at IS NULL) — nhỏ và nhanh hơn | GĐ13 |
| Seq scan | Quét tuần tự toàn bảng — dấu hiệu thiếu index (trên bảng lớn) | GĐ4 |
| EXPLAIN ANALYZE | Lệnh cho biết Postgres thực sự chạy query thế nào | GĐ4 |
| Query planner | Bộ phận quyết định cách thực thi query | GĐ4 |
| N+1 problem | 1 query lấy danh sách + N query lấy chi tiết từng phần tử | GĐ4 |
| Migration | Thay đổi schema có phiên bản, commit vào git | GĐ4, GĐ13 |
| Expand-contract | Kỹ thuật đổi schema không downtime qua 3 lần deploy | GĐ13 |
| Connection pool | Tập connection dùng lại; mỗi connection Postgres là một process tốn RAM | GĐ4, GĐ18 |
| PgBouncer | Proxy gom connection, cho phép nghìn client dùng chung vài chục connection thật | GĐ18 |
| Read replica | Bản sao chỉ đọc, giảm tải cho primary | GĐ18 |
| Replication lag | Độ trễ replica so với primary — nguồn bug "read-after-write" | GĐ18 |
| Sharding | Chia dữ liệu theo khoá sang nhiều DB. Biện pháp cuối cùng | GĐ18 |
| Partitioning | Chia một bảng thành nhiều bảng vật lý theo khoảng (thường theo thời gian) | GĐ13 |
| Soft delete | Đánh dấu đã xoá thay vì xoá thật | GĐ13 |
| Optimistic / pessimistic locking | Kiểm tra xung đột lúc ghi (version) vs khoá trước khi đọc (FOR UPDATE) | GĐ4 |
| SKIP LOCKED | Bỏ qua hàng đang bị khoá — nền tảng của hàng đợi trên SQL | GĐ8 |
| VACUUM / bloat | Dọn hàng chết của Postgres; không dọn thì bảng phình và chậm | GĐ13 |
| PITR | Point-In-Time Recovery — khôi phục về đúng một thời điểm | GĐ13 |
| RPO / RTO | Mất tối đa bao nhiêu dữ liệu / mất tối đa bao lâu để khôi phục | GĐ13 |
| tsvector / tsquery | Kiểu dữ liệu full-text search của Postgres | GĐ4 |
| pgvector | Extension lưu và tìm kiếm vector embedding trong Postgres | GĐ20 |
D. Security & Auth
| Thuật ngữ | Nghĩa ngắn | Học ở |
|---|---|---|
| Authentication (authN) | Bạn là ai | GĐ6 |
| Authorization (authZ) | Bạn được làm gì | GĐ6, GĐ8 |
| JWT | Token tự chứa thông tin, có chữ ký, server không cần lưu | GĐ6, GĐ8 |
| Claim | Một trường dữ liệu bên trong JWT (sub, exp, role) | GĐ6 |
| Access / refresh token | Token ngắn hạn để gọi API / token dài hạn để lấy access token mới | GĐ6, GĐ8 |
| Token rotation | Mỗi lần refresh cấp token mới và huỷ token cũ; phát hiện được token bị đánh cắp | GĐ8 |
| Session (stateful) | Server lưu phiên; thu hồi tức thì được, đổi lại phải tra store mỗi request | GĐ8 |
| OAuth 2.0 / OIDC | Giao thức uỷ quyền / lớp định danh xây trên nó (đăng nhập Google, GitHub) | GĐ6 |
| Authorization Code Flow | Luồng OAuth chuẩn cho web server | GĐ6 |
| PKCE | Phần mở rộng OAuth chống chặn mã uỷ quyền, bắt buộc cho SPA/mobile | GĐ6 |
| RBAC / ABAC | Phân quyền theo vai trò / theo thuộc tính | GĐ6 |
| Hashing vs encryption | Một chiều (mật khẩu) vs hai chiều (token cần đọc lại) | GĐ8, GĐ13 |
| argon2 / bcrypt | Hàm băm mật khẩu chậm có chủ đích để chống dò | GĐ8 |
| Salt | Chuỗi ngẫu nhiên trộn vào mật khẩu trước khi băm, chống rainbow table | GĐ8 |
| XSS | Chèn script chạy trong trang của bạn | GĐ8, GĐ11 |
| CSRF | Lừa trình duyệt người dùng gửi request kèm cookie của họ | GĐ8 |
| SameSite | Thuộc tính cookie kiểm soát việc gửi cookie khi request từ site khác | GĐ8 |
| SQL Injection | Chèn SQL qua dữ liệu người dùng — chống bằng parameterized query | GĐ8 |
| SSRF | Lừa server gọi tới địa chỉ nội bộ (metadata endpoint của cloud) | GĐ8 |
| Path traversal | Dùng ../ để thoát khỏi thư mục cho phép | GĐ11 |
| Magic bytes | Chữ ký nhị phân đầu file — cách duy nhất biết kiểu file thật | GĐ11 |
| Timing attack | Suy ra bí mật từ thời gian xử lý; chống bằng timingSafeEqual | GĐ8 |
| User enumeration | Suy ra ai có tài khoản qua khác biệt của response | GĐ11 |
| PII | Personally Identifiable Information — dữ liệu định danh cá nhân | GĐ13 |
| Prompt injection | Dữ liệu chèn vào prompt làm LLM đi chệch chỉ dẫn ban đầu | GĐ19 |
| OWASP Top 10 | Danh sách 10 nhóm lỗ hổng web phổ biến nhất | GĐ8 |
E. Kiến trúc & vận hành
| Thuật ngữ | Nghĩa ngắn | Học ở |
|---|---|---|
| Stateless | Instance không giữ trạng thái riêng → scale ngang được | GĐ18 |
| Vertical / horizontal scaling | Máy to hơn / nhiều máy hơn | GĐ18 |
| Load balancer | Phân phối request, loại bỏ instance hỏng | GĐ18 |
| Sticky session | Ghim người dùng vào một instance — dấu hiệu app chưa stateless | GĐ18 |
| Liveness / readiness | Còn sống không (fail → restart) / sẵn sàng nhận traffic chưa (fail → ngừng gửi) | GĐ14, GĐ18 |
| Blue-green / canary | Hai chiến lược deploy: đổi toàn bộ sang môi trường mới / thả dần % traffic | GĐ14 |
| Zero-downtime deploy | Deploy không rớt request | GĐ14, GĐ18 |
| Cache-aside | Đọc cache trước; miss thì đọc DB rồi ghi vào cache | GĐ8 |
| Cache stampede | Nhiều request cùng miss một lúc, đồng loạt đánh vào DB | GĐ8 |
| TTL | Thời gian sống của một mục cache | GĐ8 |
| Queue / worker / job | Hàng đợi việc / tiến trình xử lý / một đơn vị việc | GĐ9 |
| DLQ (Dead Letter Queue) | Nơi chứa job lỗi hết số lần retry, để điều tra thủ công | GĐ9 |
| Outbox pattern | Ghi "ý định gửi việc" trong cùng transaction DB, relay đẩy sang queue sau | GĐ9, GĐ10, GĐ17 |
| At-least-once / exactly-once | Giao ít nhất một lần (phổ biến, cần idempotent) / đúng một lần (không tồn tại ở tầng giao nhận) | GĐ9, GĐ16 |
| Circuit breaker | Sau N lỗi thì ngừng gọi dependency một khoảng thời gian, fail nhanh | GĐ8, GĐ18 |
| Bulkhead | Chia tài nguyên theo ngăn để một phần hỏng không kéo cả hệ thống | GĐ18 |
| Load shedding | Chủ động từ chối bớt request khi quá tải, để phần còn lại thành công | GĐ18 |
| Jitter | Thêm ngẫu nhiên vào thời gian retry, chống "thundering herd" | GĐ18 |
| Thundering herd | Nhiều client cùng retry một lúc, đánh sập service vừa hồi phục | GĐ18 |
| Graceful degradation | Tính năng phụ chết nhưng tính năng chính vẫn chạy | GĐ18 |
| Noisy neighbor | Một tenant ngốn tài nguyên chung, làm ảnh hưởng các tenant khác | GĐ18 |
| Multi-tenancy | Một hệ thống phục vụ nhiều khách hàng, dữ liệu phải cách ly | GĐ22 |
| Strong / eventual consistency | Đọc luôn thấy mới nhất / cuối cùng sẽ thấy | GĐ18 |
| CAP theorem | Khi mạng bị chia cắt, phải chọn giữa nhất quán và khả dụng | GĐ16, GĐ18 |
| Saga | Chuỗi transaction cục bộ + hành động bù trừ, thay cho transaction phân tán | GĐ16, GĐ17 |
| Modular monolith | Một tiến trình nhưng có ranh giới module rõ ràng — thường là lựa chọn đúng | GĐ17, GĐ18 |
| 12-factor app | Bộ nguyên tắc viết app dễ deploy (config qua env, log ra stdout, stateless...) | GĐ14 |
| IaC | Infrastructure as Code — mô tả hạ tầng bằng file (Terraform) | GĐ14, GĐ15 |
F. Observability & Testing
| Thuật ngữ | Nghĩa ngắn | Học ở |
|---|---|---|
| Structured logging | Log dạng JSON có trường, máy truy vấn được — không phải chuỗi tự do | GĐ8 |
| Correlation / request id | Một id xuyên suốt để nối mọi log của cùng một request | GĐ8 |
| Distributed tracing | Theo dấu một request qua nhiều service, thấy thời gian tiêu ở đâu | GĐ16, GĐ18 |
| Span | Một đoạn công việc trong trace | GĐ18 |
| p50 / p95 / p99 | Phân vị độ trễ. Luôn dùng thay cho trung bình | GĐ18 |
| RED / USE | Rate-Errors-Duration cho service / Utilization-Saturation-Errors cho tài nguyên | GĐ18 |
| Saturation | Mức xếp hàng chờ tài nguyên — cảnh báo sớm hơn utilization | GĐ18 |
| SLI / SLO / SLA | Chỉ số đo / mục tiêu nội bộ / cam kết với khách hàng | GĐ18 |
| Dead man's switch | Cảnh báo khi không nhận được tín hiệu (phát hiện cron chết im lặng) | GĐ13 |
| Test double | Vật thay thế dependency: stub / fake / spy / mock | GĐ12 |
| Testcontainers | Thư viện tự bật container DB thật cho test rồi dọn sạch | GĐ12 |
| Fixture / factory | Dữ liệu test dựng sẵn / hàm tạo dữ liệu test có mặc định hợp lệ | GĐ12 |
| Flaky test | Test lúc pass lúc đỏ mà code không đổi | GĐ12 |
| Coverage | Tỉ lệ code được chạy qua khi test — không đo chất lượng test | GĐ12 |
| Load test | Bắn tải có kịch bản để tìm nút thắt (k6) | GĐ12 |
G. AI Engineering
| Thuật ngữ | Nghĩa ngắn | Học ở |
|---|---|---|
| Token | Đơn vị văn bản LLM xử lý (~0,75 từ tiếng Anh); đơn vị tính tiền | GĐ19 |
| Context window | Số token tối đa model nhận được trong một lần gọi | GĐ19 |
| Temperature / top_p | Tham số điều chỉnh độ ngẫu nhiên của output | GĐ19 |
| System / user / assistant | Ba vai trò của message trong chat completion | GĐ19 |
| Structured output | Ép model trả JSON đúng schema | GĐ19 |
| Function / tool calling | Model đề xuất gọi hàm bạn khai báo, kèm tham số | GĐ21 |
| Embedding | Vector số biểu diễn ngữ nghĩa của một đoạn text | GĐ20 |
| Cosine similarity | Độ đo mức giống nhau giữa hai vector | GĐ20 |
| Chunking | Cắt tài liệu thành đoạn vừa đủ để embed và truy hồi | GĐ20 |
| RAG | Retrieval-Augmented Generation: tìm ngữ cảnh liên quan rồi mới hỏi LLM | GĐ20 |
| Hybrid search | Kết hợp tìm theo từ khoá và tìm theo vector | GĐ20 |
| Reranking | Dùng model mạnh hơn xếp lại kết quả sau bước truy hồi thô | GĐ20 |
| HNSW / IVFFlat | Hai loại index vector: chính xác hơn-tốn RAM / nhẹ hơn-kém chính xác | GĐ20 |
| Agent / ReAct loop | LLM lặp: suy nghĩ → gọi tool → quan sát → lặp lại | GĐ21 |
| MCP | Model Context Protocol — chuẩn để LLM kết nối tool và nguồn dữ liệu | GĐ21 |
| Eval | Chấm điểm output LLM theo tiêu chí, thay cho assert cứng | GĐ19, GĐ12 |
| Guardrails | Lớp kiểm soát input/output của LLM (chặn prompt injection, lọc nội dung) | GĐ19 |
H. NoSQL & Search
| Thuật ngữ | Nghĩa ngắn | Học ở |
|---|---|---|
| Document / key-value / wide-column / graph | Bốn họ NoSQL, mỗi họ hợp một hình dạng dữ liệu | GĐ5 |
| Embed vs reference | Nhúng dữ liệu con vào document cha vs lưu id rồi ghép sau | GĐ5 |
| ObjectId | Khoá chính 12 byte của Mongo: timestamp + random + counter. Lộ thời gian tạo | GĐ5 |
| Aggregation pipeline | Chuỗi stage biến đổi dữ liệu của Mongo — tương đương SQL | GĐ5 |
| Quy tắc ESR | Thứ tự cột trong compound index Mongo: Equality → Sort → Range | GĐ5 |
| TTL index | Index tự xoá document hết hạn (chạy mỗi ~60s, không chính xác tới giây) | GĐ5 |
| Write / read concern | Ghi xong nghĩa là bao nhiêu node đã nhận / đọc thấy dữ liệu ở mức đảm bảo nào | GĐ5 |
| Change stream | Luồng sự kiện thay đổi collection, đọc từ oplog. Cần lưu resume token | GĐ5 |
| Inverted index | Ánh xạ term → danh sách document — nền tảng của mọi search engine | GĐ10 |
| Analyzer / tokenizer / stemming | Chuỗi biến văn bản thành term. Index và query phải dùng cùng analyzer | GĐ10 |
| BM25 | Thuật toán chấm relevance mặc định của ES: TF bão hoà + IDF + độ dài field | GĐ10 |
text vs keyword | Được analyze (để match) vs lưu nguyên (để filter/aggregate/sort) | GĐ10 |
| Query vs filter context | Có chấm điểm, không cache vs không chấm điểm, có cache | GĐ10 |
search_after | Cursor pagination của ES, thay cho from/size bị chặn ở 10.000 | GĐ10 |
| Alias | Tên trỏ tới index thật — cho phép reindex và đổi mapping không downtime | GĐ10 |
| Index drift | Độ lệch giữa search index và nguồn sự thật. Phải đo và đối soát | GĐ10 |
| RRF (Reciprocal Rank Fusion) | Gộp nhiều bảng xếp hạng bằng thứ hạng, né việc chuẩn hoá điểm | GĐ10, GĐ20 |
I. Jobs, Cron & xử lý nền
| Thuật ngữ | Nghĩa ngắn | Học ở |
|---|---|---|
| Queue vs log | Job tiêu thụ rồi biến mất (BullMQ) vs sự kiện giữ lại, replay được (Kafka) | GĐ9 |
SKIP LOCKED | Bỏ qua hàng đang bị khoá thay vì chờ — nền tảng của queue trên SQL | GĐ9 |
| Idempotency key | Khoá để nhận ra "việc này đã làm rồi" và không làm lại | GĐ8, GĐ9 |
| Backoff + jitter | Giãn thời gian retry theo cấp số nhân + ngẫu nhiên hoá, chống thundering herd | GĐ9 |
lockDuration / stalled job | Thời gian queue giữ job; quá hạn thì giao cho worker khác → chạy trùng | GĐ9 |
| Grace period | Khoảng orchestrator chờ giữa SIGTERM và SIGKILL | GĐ9, GĐ15 |
| Queue depth / job age | Số job chờ / tuổi job cũ nhất — hai chỉ số cảnh báo sớm quan trọng nhất | GĐ9 |
| Leader election | Chọn đúng một instance chạy một việc. Khoá Redis không đảm bảo tuyệt đối | GĐ9, GĐ16 |
| Advisory lock | Khoá cấp ứng dụng của Postgres, tự nhả khi session chết | GĐ9 |
| Missed run / catch-up | Cron bị bỏ lỡ do downtime và chính sách chạy bù | GĐ9 |
| Job theo con trỏ | Job biết mình xử lý tới đâu, tự bù — bền hơn job theo lịch | GĐ9 |
J. Kiến trúc, phân tán & Kubernetes
| Thuật ngữ | Nghĩa ngắn | Học ở |
|---|---|---|
| Dependency Rule | Mã nguồn chỉ được phụ thuộc vào phía trong, không bao giờ ngược lại | GĐ7 |
| Port / adapter | Interface do tầng trong sở hữu / hiện thực của nó ở tầng ngoài | GĐ7 |
| Anemic vs rich domain model | Class chỉ có field, logic ở ngoài vs object tự bảo vệ bất biến của mình | GĐ7 |
| Value Object | Kiểu nhỏ, bất biến, tự validate, so sánh theo giá trị (Email, Money) | GĐ7 |
| Aggregate (root) | Cụm object thay đổi cùng nhau, có một lối vào. Một transaction = một aggregate | GĐ7 |
| Invariant | Điều luôn phải đúng về mặt nghiệp vụ, bất kể trạng thái nào | GĐ7 |
| Bounded Context | Ranh giới nơi một từ có một nghĩa xác định — công cụ tìm ranh giới service | GĐ17 |
| Luật Conway | Kiến trúc hệ thống sao chép cấu trúc giao tiếp của tổ chức | GĐ17 |
| Monolith phân tán | Nhiều service nhưng phải deploy cùng lúc — tệ hơn cả monolith lẫn microservice | GĐ17 |
| Strangler Fig | Thay thế dần hệ cũ bằng hệ mới qua proxy, không có ngày "chuyển đổi lớn" | GĐ17 |
| Contract testing | Consumer mô tả thứ mình cần; CI của provider chạy mọi contract trước khi deploy | GĐ17 |
| BFF (Backend for Frontend) | Service riêng cho mỗi loại client — thường là lần tách đầu tiên hợp lý nhất | GĐ17 |
| Tám ngộ nhận | Tám giả định sai về mạng mà mọi lập trình viên đều mắc | GĐ16 |
| PACELC | Partition → A hay C; Else → Latency hay Consistency (nửa bạn sống cùng mỗi ngày) | GĐ16 |
| Linearizability | Mức nhất quán mạnh nhất: mọi thao tác như xảy ra tức thời tại một điểm | GĐ16 |
| Read-your-writes | Bạn luôn thấy được cái mình vừa ghi — mức tối thiểu người dùng chấp nhận | GĐ16 |
| Clock skew | Đồng hồ hai máy lệch nhau; wall clock không dùng để sắp thứ tự được | GĐ16 |
| Monotonic clock | Đồng hồ chỉ tăng, dùng để đo khoảng, không so được giữa máy | GĐ16 |
| Lamport / vector clock | Đồng hồ logic ghi lại quan hệ nhân quả thay vì thời gian thật | GĐ16 |
| Quorum | Đa số node. Hai nhóm không thể cùng có đa số → chống split-brain | GĐ16 |
| Raft / consensus | Thuật toán để N node đồng ý về một giá trị dù có node chết | GĐ16 |
| Split-brain | Hai node cùng tưởng mình là leader, dữ liệu phân kỳ | GĐ16 |
| Fencing token | Số tăng dần kèm khoá; tài nguyên phía sau từ chối token cũ hơn | GĐ16 |
| Gray failure | Health check pass nhưng dịch vụ thực tế hỏng — chế độ hỏng khó phát hiện nhất | GĐ16 |
| Cascading failure | Một sự cố nhỏ lan thành sập toàn hệ qua retry và tồn đọng | GĐ16, GĐ18 |
| Retry amplification | 3 tầng × 3 lần retry = 27 request cho một request gốc | GĐ16 |
| 2PC | Two-Phase Commit — transaction phân tán blocking, gần như không dùng | GĐ16 |
| CDC | Change Data Capture — đọc WAL/oplog để phát sự kiện thay đổi dữ liệu | GĐ10, GĐ17 |
| Reconciliation loop | Vòng lặp so trạng thái thực với trạng thái mong muốn — triết lý cốt lõi của K8s | GĐ15 |
| Pod / Deployment / Service / Ingress | Đơn vị lập lịch / quản N bản sao / địa chỉ ổn định / cửa vào HTTP | GĐ15 |
| Startup / liveness / readiness probe | Boot xong chưa / có treo không (→ restart) / nhận traffic được chưa (→ rút khỏi LB) | GĐ15 |
| requests vs limits | Tài nguyên dành trước khi lập lịch vs trần cứng lúc chạy | GĐ15 |
| OOMKilled / CPU throttling | Vượt memory limit → bị giết / vượt CPU limit → bị bóp, âm thầm | GĐ15 |
preStop hook | Chạy trước SIGTERM; sleep vài giây để việc gỡ endpoint lan xong, tránh 502 | GĐ15 |
| HPA / KEDA | Tự scale theo CPU / theo metric tuỳ ý như độ sâu hàng đợi | GĐ15 |
| PodDisruptionBudget | Số pod tối thiểu phải sống khi cluster tự bảo trì | GĐ15 |
| GitOps | Repo git là nguồn sự thật; ArgoCD/Flux đồng bộ cluster theo repo | GĐ15 |
| Service mesh | Sidecar proxy lo mTLS/retry/circuit breaker ở tầng hạ tầng | GĐ15, GĐ17 |
Ba từ dễ nhầm nhất khi từ FE sang
- "Cache" — ở FE là bộ nhớ trong tab, mất khi reload. Ở BE là hạ tầng chia sẻ giữa mọi người dùng và mọi instance; cache sai một chỗ là rò rỉ dữ liệu người này sang người khác.
- "State" — ở FE là
useState, thuộc về một người dùng, sống vài phút. Ở BE là hàng trong DB, thuộc về mọi người, sống nhiều năm, bị nhiều tiến trình sửa đồng thời. - "Validation" — ở FE là trải nghiệm người dùng (báo lỗi sớm cho thân thiện). Ở BE là ranh giới bảo mật — kẻ tấn công không dùng form của bạn, họ dùng
curl.
