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Đ03, GĐ09 |
| 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Đ09 |
| Safe method | Method không đổi trạng thái server (GET, HEAD) | GĐ03 |
| Preflight | Request OPTIONS trình duyệt tự gửi trước request "không đơn giản", để hỏi CORS | GĐ03 |
| Content negotiation | Client và server thoả thuận định dạng qua Accept / Content-Type | GĐ03 |
| ETag | "Vân tay" của response; client gửi lại If-None-Match → server trả 304 nếu chưa đổi | GĐ09 |
| 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Đ09 |
| Rate limiting | Giới hạn số request trong một khoảng thời gian | GĐ09 |
| 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Đ09 |
| 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Đ03, GĐ21 |
| Webhook | API ngược chiều: bên thứ ba gọi vào server bạn khi có sự kiện | GĐ09 |
| HMAC signature | Chữ ký bằng khoá bí mật chung, dùng để xác minh webhook đến thật sự từ provider | GĐ09 |
| DTO (Data Transfer Object) | Object định nghĩa hình dạng dữ liệu vào/ra ở biên API | GĐ07 |
| OpenAPI / Swagger | Đặc tả contract của REST API dưới dạng máy đọc được | GĐ07 |
| SSE (Server-Sent Events) | Server đẩy dữ liệu một chiều qua HTTP giữ mở — dùng cho streaming LLM | GĐ22 |
| helmet | Middleware Express đặt header bảo mật mặc định (CSP, HSTS, nosniff...) và bỏ x-powered-by; bật có chủ đích, kiểm header thật | GĐ09 |
| Sliding window | Rate limit đếm request trong cửa sổ trượt, không bị đột biến ở ranh giới của cửa sổ cố định | GĐ09 |
| Throttler | Module rate limit của NestJS (@nestjs/throttler); bộ đếm mặc định nằm trong RAM của từng instance, không dùng chung giữa các pod | GĐ09 |
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Đ03 |
| Microtask / macrotask | Hai hàng đợi khác nhau; Promise (micro) luôn chạy trước setTimeout (macro) | GĐ03 |
| libuv | Thư viện C đứng sau event loop và thread pool của Node | GĐ03 |
| Thread pool | Nhóm luồng nền cho việc chặn (fs, crypto, dns). Mặc định 4 | GĐ03 |
| 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Đ03 |
| Blocking | Code chiếm event loop, làm mọi request khác đứng chờ | GĐ03 |
| Stream | Xử lý dữ liệu theo từng mảnh, bộ nhớ không đổi bất kể kích thước | GĐ03, GĐ12 |
| Buffer | Vùng nhớ nhị phân thô của Node | GĐ03 |
| Worker threads | Luồng thật, để đẩy việc CPU-bound ra khỏi event loop | GĐ03 |
| 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Đ09, GĐ21 |
| ESM / CJS | Hai hệ module của Node (import vs require) — không trộn tự do được | GĐ02 |
| Transpile vs type-check | Xoá type để chạy vs kiểm tra type. esbuild/tsx chỉ làm cái đầu | GĐ02 |
AbortSignal.timeout / AbortSignal.any | Tạo tín hiệu huỷ tự hết hạn hoặc gộp nhiều tín hiệu huỷ làm một; hết hạn ném TimeoutError, huỷ tay ném AbortError | GĐ03 |
keepAliveTimeout | Thời gian http.Server giữ kết nối rảnh; phải dài hơn idle timeout của load balancer phía trước, nếu không có cuộc đua đóng kết nối | GĐ03 |
Happy eyeballs (autoSelectFamily) | Thử IPv6 và IPv4 gần như song song để nối nhanh với host có cả hai | GĐ03 |
verbatimModuleSyntax | Cờ TypeScript bắt import type cho import chỉ dùng làm kiểu, để code còn đúng sau khi chỉ xoá type | GĐ02 |
erasableSyntaxOnly | Cờ TypeScript cấm cú pháp cần biên dịch thật (enum, namespace, parameter property) để Node chạy .ts bằng type stripping | GĐ02 |
allowScripts / min-release-age | Hygiene chuỗi cung ứng npm: duyệt install script của dependency / từ chối phiên bản mới phát hành quá ít ngày | GĐ02 |
C. Database#
| Thuật ngữ | Nghĩa ngắn | Học ở |
|---|---|---|
| ACID | Atomicity, Consistency, Isolation, Durability — 4 đảm bảo của transaction | GĐ05 |
| Transaction | Nhóm thao tác "được ăn cả, ngã về không" | GĐ05 |
| Isolation level | Mức cách ly giữa các transaction chạy song song (Read Committed, Serializable...) | GĐ05 |
| Normalization | Tổ chức dữ liệu để mỗi sự thật chỉ lưu một chỗ | GĐ05 |
| Denormalization | Cố ý sao chép dữ liệu để đọc nhanh hơn | GĐ05 |
| Foreign key | Ràng buộc trỏ tới khoá chính bảng khác | GĐ05 |
| Index | Cấu trúc phụ giúp tìm hàng mà không quét toàn bảng | GĐ05 |
| B-tree / GIN / HNSW | Ba loại index: giá trị thông thường / tìm trong mảng-text / vector | GĐ05, GĐ23 |
| Partial index | Index chỉ trên tập con hàng (WHERE deleted_at IS NULL) — nhỏ và nhanh hơn | GĐ14 |
| 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Đ05 |
| EXPLAIN ANALYZE | Lệnh cho biết Postgres thực sự chạy query thế nào | GĐ05 |
| Query planner | Bộ phận quyết định cách thực thi query | GĐ05 |
| N+1 problem | 1 query lấy danh sách + N query lấy chi tiết từng phần tử | GĐ05 |
| Migration | Thay đổi schema có phiên bản, commit vào git | GĐ05, GĐ14 |
| Expand-contract | Kỹ thuật đổi schema không downtime qua 3 lần deploy | GĐ14 |
| Connection pool | Tập connection dùng lại; mỗi connection Postgres là một process tốn RAM | GĐ05, GĐ21 |
| PgBouncer | Proxy gom connection, cho phép nghìn client dùng chung vài chục connection thật | GĐ21 |
| Read replica | Bản sao chỉ đọc, giảm tải cho primary | GĐ21 |
| Replication lag | Độ trễ replica so với primary — nguồn bug "read-after-write" | GĐ21 |
| Sharding | Chia dữ liệu theo khoá sang nhiều DB. Biện pháp cuối cùng | GĐ21 |
| 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Đ14 |
| Soft delete | Đánh dấu đã xoá thay vì xoá thật | GĐ14 |
| Optimistic / pessimistic locking | Kiểm tra xung đột lúc ghi (version) vs khoá trước khi đọc (FOR UPDATE) | GĐ05 |
| SKIP LOCKED | Bỏ qua hàng đang bị khoá — nền tảng của hàng đợi trên SQL | GĐ09 |
| VACUUM / bloat | Dọn hàng chết của Postgres; không dọn thì bảng phình và chậm | GĐ14 |
| PITR | Point-In-Time Recovery — khôi phục về đúng một thời điểm | GĐ14 |
| RPO / RTO | Mục tiêu khoảng dữ liệu có thể mất tính theo thời gian / mục tiêu thời gian khôi phục dịch vụ | GĐ14, GĐ30 |
| tsvector / tsquery | Kiểu dữ liệu full-text search của Postgres | GĐ05 |
| pgvector | Extension lưu và tìm kiếm vector embedding trong Postgres | GĐ23 |
| Lost update | Hai giao dịch cùng đọc rồi cùng ghi, ghi sau đè mất ghi trước; sửa bằng FOR UPDATE, cập nhật nguyên tử hoặc optimistic lock | GĐ01, GĐ05 |
Serialization failure (40001) | Postgres huỷ giao dịch để tránh bất thường ở REPEATABLE READ/SERIALIZABLE; ứng dụng phải thử lại cả giao dịch | GĐ05 |
pg_blocking_pids | Hàm Postgres cho biết phiên nào đang chặn một phiên khác | GĐ01 |
unaccent | Extension Postgres bỏ dấu, để full-text tiếng Việt khớp cả khi gõ không dấu | GĐ23 |
hnsw.ef_search | Số ứng viên HNSW duyệt lúc truy vấn; cao hơn thì recall tốt hơn nhưng chậm hơn | GĐ23 |
halfvec | Kiểu vector 16-bit của pgvector; index được tới số chiều lớn hơn vector | GĐ23 |
| RLS (Row-Level Security) | Postgres lọc dòng theo chính sách ngay ở tầng DB; FORCE áp dụng cả cho chủ bảng | GĐ25 |
| Sổ cái (ledger) | Bảng chỉ ghi thêm với bút toán cân bằng; sai thì ghi bút toán đảo, không sửa dòng cũ | GĐ14 |
D. Security & Auth#
| Thuật ngữ | Nghĩa ngắn | Học ở |
|---|---|---|
| Authentication (authN) | Bạn là ai | GĐ07 |
| Authorization (authZ) | Bạn được làm gì | GĐ07, GĐ09 |
| JWT | Token tự chứa thông tin, có chữ ký, server không cần lưu | GĐ07, GĐ09 |
| Claim | Một trường dữ liệu bên trong JWT (sub, exp, role) | GĐ07 |
| Access / refresh token | Token ngắn hạn để gọi API / token dài hạn để lấy access token mới | GĐ07, GĐ09 |
| 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Đ09 |
| 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Đ09 |
| 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Đ07 |
| Authorization Code Flow | Luồng OAuth chuẩn cho web server | GĐ07 |
| PKCE | Phần mở rộng OAuth chống chặn mã uỷ quyền, bắt buộc cho SPA/mobile | GĐ07 |
| RBAC / ABAC | Phân quyền theo vai trò / theo thuộc tính | GĐ07 |
| Hashing vs encryption | Một chiều (mật khẩu) vs hai chiều (token cần đọc lại) | GĐ09, GĐ14 |
| argon2 / bcrypt | Hàm băm mật khẩu chậm có chủ đích để chống dò | GĐ09 |
| 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Đ09 |
| XSS | Chèn script chạy trong trang của bạn | GĐ09, GĐ12 |
| CSRF | Lừa trình duyệt người dùng gửi request kèm cookie của họ | GĐ09 |
| SameSite | Thuộc tính cookie kiểm soát việc gửi cookie khi request từ site khác | GĐ09 |
| SQL Injection | Chèn SQL qua dữ liệu người dùng — chống bằng parameterized query | GĐ09 |
| SSRF | Lừa server gọi tới địa chỉ nội bộ (metadata endpoint của cloud) | GĐ09 |
| Path traversal | Dùng ../ để thoát khỏi thư mục cho phép | GĐ12 |
| Magic bytes | Chữ ký nhị phân đầu file — cách duy nhất biết kiểu file thật | GĐ12 |
| Timing attack | Suy ra bí mật từ thời gian xử lý; chống bằng timingSafeEqual | GĐ09 |
| User enumeration | Suy ra ai có tài khoản qua khác biệt của response | GĐ12 |
| PII | Personally Identifiable Information — dữ liệu định danh cá nhân | GĐ14 |
| Prompt injection | Dữ liệu chèn vào prompt làm LLM đi chệch chỉ dẫn ban đầu | GĐ22 |
| OWASP Top 10 | Danh sách 10 nhóm lỗ hổng web phổ biến nhất | GĐ09 |
| BOLA / BOPLA | Broken Object-Level / Object Property-Level Authorization (OWASP API Top 10 2023): truy cập object hoặc thuộc tính ngoài quyền của mình | GĐ09 |
Identity (provider, sub) | Khoá định danh OAuth/OIDC gồm nhà cung cấp và sub; không dùng email làm khoá | GĐ07 |
| DMARC alignment | SPF/DKIM chỉ tính khi tên miền xác thực khớp tên miền ở From; adkim/aspf chỉnh độ chặt | GĐ12 |
| One-click unsubscribe | Header List-Unsubscribe + List-Unsubscribe-Post (RFC 8058): huỷ đăng ký bằng một POST; GET không được huỷ | GĐ12 |
| Crypto-shredding | Xoá khoá mã hoá của một người dùng để dữ liệu của họ, kể cả trong backup, không đọc được nữa | GĐ14 |
| Protected Resource Metadata | Tài liệu MCP server công bố để client biết authorization server và resource (audience) của nó | GĐ24 |
| Token passthrough | Chuyển tiếp token của client sang API khác; MCP cấm vì phá audience và dấu vết trách nhiệm | GĐ24 |
| Confused deputy | Dịch vụ trung gian bị lừa dùng quyền của mình thay cho bên không có quyền | GĐ24 |
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Đ21 |
| Vertical / horizontal scaling | Máy to hơn / nhiều máy hơn | GĐ21 |
| Load balancer | Phân phối request, loại bỏ instance hỏng | GĐ21 |
| Sticky session | Ghim người dùng vào một instance — dấu hiệu app chưa stateless | GĐ21 |
| Amazon EC2 | Máy ảo AWS; người dùng quản OS, process và deploy | GĐ16 |
| Amazon S3 | Object storage theo bucket + key; phù hợp lưu file/blob | GĐ16 |
| IAM role / policy | Danh tính tạm của workload / quy tắc cho phép action trên resource | GĐ16 |
| Amazon RDS | Database quan hệ managed; AWS lo một phần vận hành hạ tầng | GĐ16 |
| AWS Lambda | Chạy handler theo event/request mà không quản server | GĐ16 |
| Amazon CloudWatch | Logs, metrics, dashboards và alarms cho hệ thống AWS | GĐ16 |
| VPC / subnet | Mạng riêng AWS / một dải IP trong một Availability Zone | GĐ16 |
| Security Group | Firewall allowlist gắn với resource trong VPC | GĐ16 |
| Presigned URL | URL có hạn dùng, cho phép một hành động cụ thể trên object S3 | GĐ12, GĐ16 |
| Cloudflare Worker | Compute xử lý HTTP/event trên runtime Cloudflare; cấu hình bằng Wrangler và gọi service qua binding | GĐ17 |
| Binding | Interface runtime nối Worker với D1, R2, KV, Queue, secret hoặc service khác | GĐ17 |
| Wrangler | CLI và cấu hình quản lý local development, binding, môi trường và deploy Workers | GĐ17 |
| R2 | Object storage của Cloudflare; bytes/file nằm trong bucket, metadata truy vấn thường nằm ở DB | GĐ17 |
| D1 | Database SQL serverless dựa trên SQLite, truy cập từ Worker qua binding | GĐ17 |
| Hyperdrive | Kết nối/pooling giúp Worker truy cập PostgreSQL hoặc MySQL hiện có từ mạng edge | GĐ17 |
| Workers KV | Key-value phân tán, cache tốt cho workload đọc nhiều; dữ liệu eventually consistent | GĐ17 |
| Durable Object | Worker có định danh và storage riêng, dùng điều phối trạng thái giữa request/client | GĐ17 |
| Cloudflare Queues | Hàng đợi message cho Worker; delivery at-least-once nên consumer cần idempotent | GĐ17 |
| Workers Static Assets | Static files deploy cùng Worker; request asset có thể được phục vụ mà không gọi Worker code | GĐ17 |
| DNS proxied / DNS-only | Record đi qua Cloudflare proxy edge / chỉ phân giải DNS, không qua các tính năng proxy đó | GĐ17 |
| Cache Rule | Quy tắc cache theo request/response; cần tránh cache response riêng tư hoặc theo user | GĐ17 |
| Workers Logs | Invocation, custom logs, errors và telemetry để chẩn đoán Worker | GĐ17 |
| 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Đ15, GĐ18, GĐ21 |
| 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Đ15 |
| Zero-downtime deploy | Deploy không rớt request | GĐ15, GĐ18, GĐ21 |
| Cache-aside | Đọc cache trước; miss thì đọc DB rồi ghi vào cache | GĐ09 |
| Cache stampede | Nhiều request cùng miss một lúc, đồng loạt đánh vào DB | GĐ09 |
| TTL | Thời gian sống của một mục cache | GĐ09 |
| Queue / worker / job | Hàng đợi việc / tiến trình xử lý / một đơn vị việc | GĐ10 |
| DLQ (Dead Letter Queue) | Nơi chứa job lỗi hết số lần retry, để điều tra thủ công | GĐ10 |
| Outbox pattern | Ghi "ý định gửi việc" trong cùng transaction DB, relay đẩy sang queue sau | GĐ10, GĐ11, GĐ20 |
| 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Đ10, GĐ19 |
| Circuit breaker | Sau N lỗi thì ngừng gọi dependency một khoảng thời gian, fail nhanh | GĐ09, GĐ21 |
| Bulkhead | Chia tài nguyên theo ngăn để một phần hỏng không kéo cả hệ thống | GĐ21 |
| 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Đ21 |
| Jitter | Thêm ngẫu nhiên vào thời gian retry, chống "thundering herd" | GĐ21 |
| Thundering herd | Nhiều client cùng retry một lúc, đánh sập service vừa hồi phục | GĐ21 |
| Graceful degradation | Tính năng phụ chết nhưng tính năng chính vẫn chạy | GĐ21 |
| Noisy neighbor | Một tenant ngốn tài nguyên chung, làm ảnh hưởng các tenant khác | GĐ21 |
| 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Đ25 |
| Strong / eventual consistency | Đọc luôn thấy mới nhất / cuối cùng sẽ thấy | GĐ21 |
| CAP theorem | Khi mạng bị chia cắt, phải chọn giữa nhất quán và khả dụng | GĐ19, GĐ21 |
| Saga | Chuỗi transaction cục bộ + hành động bù trừ, thay cho transaction phân tán | GĐ19, GĐ20 |
| 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Đ20, GĐ21 |
| 12-factor app | Bộ nguyên tắc viết app dễ deploy (config qua env, log ra stdout, stateless...) | GĐ15 |
| IaC | Infrastructure as Code — mô tả hạ tầng bằng file (Terraform) | GĐ15–GĐ18 |
| BuildKit cache/secret mount | RUN --mount=type=cache giữ cache giữa các lần build; --mount=type=secret đưa secret vào bước build mà không để lại trong layer | GĐ15 |
| Kustomize overlay | Một base cộng phần khác biệt cho từng môi trường, không dùng template | GĐ18 |
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Đ09 |
| Correlation / request id | Một id xuyên suốt để nối mọi log của cùng một request | GĐ09 |
| Distributed tracing | Theo dấu một request qua nhiều service, thấy thời gian tiêu ở đâu | GĐ19, GĐ21 |
| Span | Một đoạn công việc trong trace | GĐ21 |
| p50 / p95 / p99 | Phân vị độ trễ. Luôn dùng thay cho trung bình | GĐ21 |
| RED / USE | Rate-Errors-Duration cho service / Utilization-Saturation-Errors cho tài nguyên | GĐ21 |
| Saturation | Mức xếp hàng chờ tài nguyên — cảnh báo sớm hơn utilization | GĐ21 |
| SLI / SLO / SLA | Chỉ số đo / mục tiêu nội bộ / cam kết với khách hàng | GĐ21 |
| 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Đ14 |
| Test double | Vật thay thế dependency: stub / fake / spy / mock | GĐ13 |
| Testcontainers | Thư viện tự bật container DB thật cho test rồi dọn sạch | GĐ13 |
| 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Đ13 |
| Flaky test | Test lúc pass lúc đỏ mà code không đổi | GĐ13 |
| Coverage | Tỉ lệ code được chạy qua khi test — không đo chất lượng test | GĐ13 |
| Load test | Bắn tải có kịch bản để tìm nút thắt (k6) | GĐ13 |
| Property-based test | Sinh nhiều input ngẫu nhiên, kiểm một tính chất luôn đúng và thu nhỏ phản ví dụ (fast-check) | GĐ13 |
| Race test (barrier) | Chạy nhiều thao tác đồng thời để chứng minh luồng kiểm-rồi-ghi hỏng; phải đỏ trên code sai | GĐ13 |
| Mô hình đóng / mở (k6) | Đóng: số VU cố định, chậm đi khi server chậm; mở: tốc độ đến cố định, dropped_iterations báo tải không kịp chạy | GĐ13 |
| Coordinated omission | Đo thiếu độ trễ vì client chờ phản hồi chậm rồi mới gửi tiếp, nên che mất đuôi độ trễ | GĐ13 |
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Đ22 |
| Context window | Số token tối đa model nhận được trong một lần gọi | GĐ22 |
| Temperature / top_p | Tham số điều chỉnh độ ngẫu nhiên của output | GĐ22 |
| System / user / assistant | Ba vai trò của message trong chat completion | GĐ22 |
| Structured output | Ép model trả JSON đúng schema | GĐ22 |
| Function / tool calling | Model đề xuất gọi hàm bạn khai báo, kèm tham số | GĐ24 |
| Embedding | Vector số biểu diễn ngữ nghĩa của một đoạn text | GĐ23 |
| Cosine similarity | Độ đo mức giống nhau giữa hai vector | GĐ23 |
| Chunking | Cắt tài liệu thành đoạn vừa đủ để embed và truy hồi | GĐ23 |
| RAG | Retrieval-Augmented Generation: tìm ngữ cảnh liên quan rồi mới hỏi LLM | GĐ23 |
| Hybrid search | Kết hợp tìm theo từ khoá và tìm theo vector | GĐ23 |
| Reranking | Dùng model mạnh hơn xếp lại kết quả sau bước truy hồi thô | GĐ23 |
| 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Đ23 |
| Agent / ReAct loop | LLM lặp: suy nghĩ → gọi tool → quan sát → lặp lại | GĐ24 |
| MCP | Model Context Protocol — chuẩn để LLM kết nối tool và nguồn dữ liệu | GĐ24 |
| Eval | Chấm điểm output LLM theo tiêu chí, thay cho assert cứng | GĐ22, GĐ13 |
| Guardrails | Lớp kiểm soát input/output của LLM (chặn prompt injection, lọc nội dung) | GĐ22 |
Refusal / incomplete_details | Structured output có thể bị model từ chối hoặc bị cắt; phải kiểm trước khi parse | GĐ22 |
| Reasoning tokens | Token model dùng để suy luận: tính vào max_output_tokens và chi phí; trần thấp có thể ra response rỗng | GĐ22 |
| LLM-as-judge | Dùng model chấm điểm theo rubric; kết quả gắn vào cổng CI bằng mã thoát | GĐ22 |
| Golden set | Bộ câu hỏi chuẩn dùng để đo RAG và prompt bằng số, không bằng cảm tính | GĐ23, GĐ25 |
| Agent evals | Chạy lặp N lần các case, chấm trên trace và sổ cái; CI đỏ khi pass rate dưới ngưỡng | GĐ24 |
| Approval state machine | Hành động nguy hiểm đi qua bảng approvals (PENDING → APPROVED → EXECUTING → DONE/DENIED), mỗi bước một UPDATE có điều kiện | GĐ24 |
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Đ06 |
| Embed vs reference | Nhúng dữ liệu con vào document cha vs lưu id rồi ghép sau | GĐ06 |
| ObjectId | Khoá chính 12 byte của Mongo: timestamp + random + counter. Lộ thời gian tạo | GĐ06 |
| Aggregation pipeline | Chuỗi stage biến đổi dữ liệu của Mongo — tương đương SQL | GĐ06 |
| Quy tắc ESR | Thứ tự cột trong compound index Mongo: Equality → Sort → Range | GĐ06 |
| 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Đ06 |
| 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Đ06 |
| Change stream | Luồng sự kiện thay đổi collection, đọc từ oplog. Cần lưu resume token | GĐ06 |
| Inverted index | Ánh xạ term → danh sách document — nền tảng của mọi search engine | GĐ11 |
| 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Đ11 |
| BM25 | Thuật toán chấm relevance mặc định của ES: TF bão hoà + IDF + độ dài field | GĐ11 |
text vs keyword | Được analyze (để match) vs lưu nguyên (để filter/aggregate/sort) | GĐ11 |
| Query vs filter context | Có chấm điểm, không cache vs không chấm điểm, có cache | GĐ11 |
search_after | Cursor pagination của ES, thay cho from/size bị chặn ở 10.000 | GĐ11 |
| Alias | Tên trỏ tới index thật — cho phép reindex và đổi mapping không downtime | GĐ11 |
| Index drift | Độ lệch giữa search index và nguồn sự thật. Phải đo và đối soát | GĐ11 |
| 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Đ11, GĐ23 |
Tombstone / gc_deletes | Elasticsearch giữ dấu xoá một thời gian để chống ghi phiên bản cũ đè lên tài liệu đã xoá | GĐ11 |
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Đ10 |
SKIP LOCKED | Bỏ qua hàng đang bị khoá thay vì chờ — nền tảng của queue trên SQL | GĐ10 |
| Idempotency key | Khoá để nhận ra "việc này đã làm rồi" và không làm lại | GĐ09, GĐ10 |
| Backoff + jitter | Giãn thời gian retry theo cấp số nhân + ngẫu nhiên hoá, chống thundering herd | GĐ10 |
lockDuration / stalled job | Thời gian queue giữ job; quá hạn thì giao cho worker khác → chạy trùng | GĐ10 |
| Grace period | Khoảng orchestrator chờ giữa SIGTERM và SIGKILL | GĐ10, GĐ18 |
| 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Đ10 |
| 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Đ10, GĐ19 |
| Advisory lock | Khoá cấp ứng dụng của Postgres, tự nhả khi session chết | GĐ10 |
| Missed run / catch-up | Cron bị bỏ lỡ do downtime và chính sách chạy bù | GĐ10 |
| 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Đ10 |
| FlowProducer | BullMQ: tạo job cha chỉ chạy sau khi các job con xong | GĐ10 |
| Limiter (BullMQ) | Giới hạn số job worker xử lý trong một khoảng thời gian; không phải rate limit theo người dùng | GĐ10 |
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Đ08 |
| Port / adapter | Interface do tầng trong sở hữu / hiện thực của nó ở tầng ngoài | GĐ08 |
| 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Đ08 |
| Value Object | Kiểu nhỏ, bất biến, tự validate, so sánh theo giá trị (Email, Money) | GĐ08 |
| Aggregate (root) | Cụm object thay đổi cùng nhau, có một lối vào. Một transaction = một aggregate | GĐ08 |
| Invariant | Điều luôn phải đúng về mặt nghiệp vụ, bất kể trạng thái nào | GĐ08 |
| 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Đ20 |
| 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Đ20 |
| 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Đ20 |
| 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Đ20 |
| Contract testing | Consumer mô tả thứ mình cần; CI của provider chạy mọi contract trước khi deploy | GĐ20 |
| 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Đ20 |
| 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Đ19 |
| PACELC | Partition → A hay C; Else → Latency hay Consistency (nửa bạn sống cùng mỗi ngày) | GĐ19 |
| 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Đ19 |
| 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Đ19 |
| Clock skew | Đồng hồ hai máy lệch nhau; wall clock không dùng để sắp thứ tự được | GĐ19 |
| Monotonic clock | Đồng hồ chỉ tăng, dùng để đo khoảng, không so được giữa máy | GĐ19 |
| Lamport / vector clock | Đồng hồ logic ghi lại quan hệ nhân quả thay vì thời gian thật | GĐ19 |
| Quorum | Đa số node. Hai nhóm không thể cùng có đa số → chống split-brain | GĐ19 |
| Raft / consensus | Thuật toán để N node đồng ý về một giá trị dù có node chết | GĐ19 |
| Split-brain | Hai node cùng tưởng mình là leader, dữ liệu phân kỳ | GĐ19 |
| 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Đ19 |
| 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Đ19 |
| Cascading failure | Một sự cố nhỏ lan thành sập toàn hệ qua retry và tồn đọng | GĐ19, GĐ21 |
| Retry amplification | 3 tầng × 3 lần retry = 27 request cho một request gốc | GĐ19 |
| 2PC | Two-Phase Commit — transaction phân tán blocking, gần như không dùng | GĐ19 |
| CDC | Change Data Capture — đọc WAL/oplog để phát sự kiện thay đổi dữ liệu | GĐ11, GĐ20 |
| 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Đ18 |
| 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Đ18 |
| 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Đ18 |
| 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Đ18 |
| OOMKilled / CPU throttling | Vượt memory limit → bị giết / vượt CPU limit → bị bóp, âm thầm | GĐ18 |
preStop hook | Chạy trước SIGTERM; sleep vài giây để việc gỡ endpoint lan xong, tránh 502 | GĐ18 |
| HPA / KEDA | Tự scale theo CPU / theo metric tuỳ ý như độ sâu hàng đợi | GĐ18 |
| PodDisruptionBudget | Số pod tối thiểu phải sống khi cluster tự bảo trì | GĐ18 |
| GitOps | Repo git là nguồn sự thật; ArgoCD/Flux đồng bộ cluster theo repo | GĐ18 |
| Service mesh | Sidecar proxy lo mTLS/retry/circuit breaker ở tầng hạ tầng | GĐ18, GĐ20 |
| Consistent hashing | Băm khoá lên vòng; thêm hoặc bớt node chỉ di chuyển một phần nhỏ khoá; điểm ảo (virtual node) làm đều tải | GĐ21 |
| Hot key / hot partition | Một khoá nhận quá nhiều tải; consistent hashing không cứu được, cần tách khoá hoặc cache | GĐ21 |
| Inbox pattern | Consumer ghi eventId đã xử lý trong cùng transaction với tác dụng phụ để khử trùng lặp | GĐ20 |
| Pact | Contract test do consumer định nghĩa; provider chạy verification để bắt thay đổi phá vỡ trước khi deploy | GĐ20 |
| Bảng trạng thái saga | Orchestrator lưu từng bước và trạng thái vào bảng để chạy tiếp hoặc bồi hoàn sau khi sập | GĐ20 |
| NetworkPolicy | Chính sách Kubernetes giới hạn pod nào nói chuyện với pod nào; chỉ có tác dụng khi plugin mạng thực thi nó | GĐ18 |
topologySpreadConstraints | Rải pod đều theo AZ hoặc node để một vùng hỏng không mất hết bản sao | GĐ18 |
| Pod Security Standards | Ba mức privileged / baseline / restricted, ép bằng nhãn Pod Security Admission trên namespace | GĐ18 |
| Gateway API | Chuẩn Kubernetes mới cho định tuyến vào cluster, kế tục Ingress | GĐ18 |
| Cron Trigger | Cloudflare Worker chạy theo lịch cron | GĐ17 |
K. Frontend Architecture & Browser Performance#
| Thuật ngữ | Nghĩa ngắn | Học ở |
|---|---|---|
| Feature/vertical slice | Nhóm UI, state và API adapter theo một năng lực nghiệp vụ, thay vì theo loại file | GĐ26 |
| Application shell | Phần giữ route, navigation, global layout, auth integration và loading/error boundary của frontend | GĐ26 |
| Design System | Tokens + component/pattern + docs + accessibility + ownership/release process | GĐ26 |
| Design token | Tên/value cho một quyết định thiết kế dùng lại giữa design tools, platform và UI | GĐ26 |
| Semantic token | Token theo ý nghĩa như text.primary/action.primary, không theo giá trị palette hiện tại | GĐ26 |
| Micro Frontend | Nhiều frontend app theo domain/team, có thể build/deploy độc lập và được compose thành một sản phẩm | GĐ26 |
| Module Federation | Cơ chế host/remote expose và load module từ build khác ở runtime | GĐ26 |
| Host / remote | App khởi tạo và nạp module / build expose module cho host | GĐ26 |
| Remote entry | Artifact/manifest entry giúp runtime tìm container và chunk của remote | GĐ26 |
| Shared dependency | Package mà host/remotes có thể resolve chung qua share scope; cần policy về version/singleton | GĐ26 |
| Design token format (DTCG) | Format trao đổi token của Design Tokens Community Group; không phải W3C Recommendation | GĐ26 |
| Core Web Vitals | Bộ metric UX hiện hành: LCP (load), INP (interaction), CLS (layout stability) | GĐ27 |
| LCP | Thời điểm phần tử lớn nhất trong viewport được render; target good ≤2.5s ở p75 | GĐ27 |
| INP | Độ trễ tương tác qua các thao tác trong session; target good ≤200ms ở p75 | GĐ27 |
| CLS | Mức độ layout shift bất ngờ; target good ≤0.1 ở p75 | GĐ27 |
| RUM / field data | Metric thu từ session người dùng thật; dùng để xem trải nghiệm theo route/device/release | GĐ27 |
| Lab data | Đo trong môi trường kiểm soát như Lighthouse/DevTools; dùng tái hiện và tìm nguyên nhân | GĐ27 |
| Web Worker | Execution context khác để chạy JS CPU-bound mà không thao tác DOM/main thread trực tiếp | GĐ27 |
| Transferable object | Buffer/resource chuyển quyền sở hữu giữa context; phía gửi không dùng được sau transfer | GĐ27 |
| Service Worker | Worker do browser quản lý theo origin/scope để nhận event/fetch, cache và hỗ trợ offline | GĐ27 |
| CacheStorage | Kho Request/Response do ứng dụng quản lý; strategy/expiry phải được code xử lý | GĐ27 |
| Offline-first | Thiết kế app có trải nghiệm hữu ích khi không mạng, kèm quy tắc stale/sync/conflict rõ ràng | GĐ27 |
| Import map | Bảng ánh xạ tên module sang URL do trình duyệt xử lý; đổi phiên bản remote mà không build lại host | GĐ26 |
| Changesets | Công cụ ghi thay đổi cần phát hành, tự nâng version và sinh CHANGELOG trong monorepo | GĐ26 |
| Headless component | Thành phần cung cấp hành vi và khả năng truy cập, không kèm giao diện (Radix, React Aria) | GĐ26 |
| Long task | Tác vụ trên main thread chạy quá 50 ms, làm trễ phản hồi và hại INP | GĐ27 |
| bfcache | Bộ nhớ đệm back/forward của trình duyệt: quay lại trang gần như tức thì nếu trang đủ điều kiện | GĐ27 |
| Navigation preload | Service Worker khởi động song song với request điều hướng để không trễ vì thời gian khởi động | GĐ27 |
crossOriginIsolated | Trạng thái trang bật COOP/COEP; cần cho SharedArrayBuffer | GĐ27 |
L. AWS Solutions Architect – Associate#
| Thuật ngữ | Nghĩa ngắn | Học ở |
|---|---|---|
| Well-Architected pillars | Sáu góc nhìn đánh giá vận hành, bảo mật, reliability, performance, chi phí và sustainability | GĐ28 |
| Region / AZ / edge location | Khu vực triển khai / ranh giới hạ tầng độc lập trong Region / điểm phục vụ gần người dùng | GĐ28 |
| Failure domain | Phạm vi tài nguyên có thể cùng bị ảnh hưởng bởi một loại sự cố | GĐ28, GĐ30 |
| Principal / policy / role | Danh tính gọi API / quy tắc quyền / danh tính được assume để nhận credentials tạm | GĐ29 |
| STS / AssumeRole | Dịch vụ cấp temporary credentials / thao tác nhận session của role | GĐ29 |
| SCP / permissions boundary | Giới hạn quyền trong member accounts / giới hạn quyền tối đa của identity; không tự cấp quyền | GĐ29 |
| Explicit deny | Rule từ chối rõ ràng có hiệu lực thắng allow trong policy evaluation | GĐ29 |
| KMS / envelope encryption | Quản encryption keys / dùng data key mã hóa dữ liệu rồi bảo vệ data key bằng key khác | GĐ29 |
| NAT / IGW | Dịch địa chỉ cho kết nối theo mô hình NAT / gateway kết nối VPC với Internet | GĐ29 |
| Gateway / interface endpoint | Đường S3/DynamoDB qua route table / private endpoint qua ENI và PrivateLink | GĐ29 |
| SG / NACL | Stateful allow rules cho tài nguyên / stateless allow-deny rules ở subnet | GĐ29 |
| OAC | Origin Access Control, kiểm soát CloudFront truy cập S3 origin; khác viewer authorization | GĐ29, GĐ33 |
| ALB / NLB / ASG | Load balancer HTTP / load balancer transport / nhóm quản và scale EC2 instances | GĐ30 |
| Visibility timeout / DLQ | Khoảng message SQS tạm invisible / queue giữ message lỗi theo redrive policy | GĐ30 |
| Pilot light / warm standby | Duy trì core rồi dựng/bật phần còn lại / full app chạy capacity nhỏ để scale khi phục hồi | GĐ30 |
| Multi-AZ / read replica | Triển khai nhiều AZ cho HA theo mô hình dịch vụ / bản sao phục vụ scale đọc với consistency cần xét | GĐ31 |
| IOPS / throughput | Số thao tác I/O mỗi giây / lượng byte truyền mỗi giây | GĐ31 |
| GSI / LSI | DynamoDB index cho access pattern khác / index cùng partition, có khả năng consistency khác GSI | GĐ31 |
| MREC / MRSC | Chế độ eventual / strong consistency xuyên Region của DynamoDB Global Tables, có giới hạn riêng | GĐ31 |
| Savings Plans / Spot | Discount theo cam kết usage / unused compute capacity có thể bị thu hồi | GĐ32 |
| DMS / DataSync | Migration/change replication database / transfer dữ liệu file-object giữa locations hỗ trợ | GĐ32 |
| Cutover | Chuyển hệ thống phục vụ chính sang target sau đồng bộ và validation | GĐ32 |
| IaC / CloudFormation stack | Mô tả hạ tầng bằng code / tập tài nguyên quản lý theo template CloudFormation | GĐ32 |
| Compensatory scoring | SAA-C03 chấm điểm bù trừ giữa các domain: không có điểm đạt riêng cho từng domain | GĐ28 |
| Change set (CloudFormation) | Bản xem trước thay đổi của stack; Replacement: True nghĩa là tài nguyên bị tạo lại và dữ liệu có thể mất | GĐ32 |
| NAT instance | EC2 tự quản lý làm NAT: rẻ hơn nhưng phải tắt source/dest check, tự lo HA và băng thông | GĐ32 |
| Requester Pays | Bucket S3 bắt người tải trả phí request và truyền dữ liệu; người gọi phải khai báo chấp nhận | GĐ32 |
| Amazon Quick (Quick Sight) | Tên mới của dịch vụ BI phát triển từ QuickSight; QuickSight tiếp tục là một tính năng trong Quick | GĐ31 |
| Free Plan (AWS) | Gói tài khoản dùng credit: 100 USD ngay và tối đa 100 USD nữa, hết sau 6 tháng hoặc khi hết credit; đặt Budget trước khi lab | GĐ32 |
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.