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Đ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 |
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 |
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ất tối đa bao nhiêu dữ liệu / mất tối đa bao lâu để khôi phục | GĐ14 |
| 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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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.
