Skip to content

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ắnHọc ở
IdempotentGọ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 keyKhoá client gửi kèm POST để server nhận ra request lặp và không xử lý hai lầnGĐ8
Safe methodMethod không đổi trạng thái server (GET, HEAD)GĐ2
PreflightRequest OPTIONS trình duyệt tự gửi trước request "không đơn giản", để hỏi CORSGĐ2
Content negotiationClient và server thoả thuận định dạng qua Accept / Content-TypeGĐ2
ETag"Vân tay" của response; client gửi lại If-None-Match → server trả 304 nếu chưa đổiGĐ8
Cursor paginationPhân trang bằng con trỏ tới bản ghi cuối, thay vì OFFSET. Ổn định khi dữ liệu đang thay đổiGĐ8
Rate limitingGiới hạn số request trong một khoảng thời gianGĐ8
Token bucketThuật toán rate limit: xô token đầy dần theo thời gian, mỗi request tiêu 1 tokenGĐ8
BackpressureTín hiệu "tôi đang quá tải, chậm lại" từ bên nhận tới bên gửiGĐ2, GĐ18
WebhookAPI ngược chiều: bên thứ ba gọi vào server bạn khi có sự kiệnGĐ8
HMAC signatureChữ ký bằng khoá bí mật chung, dùng để xác minh webhook đến thật sự từ providerGĐ8
DTO (Data Transfer Object)Object định nghĩa hình dạng dữ liệu vào/ra ở biên APIGĐ6
OpenAPI / SwaggerĐặc tả contract của REST API dưới dạng máy đọc đượcGĐ6
SSE (Server-Sent Events)Server đẩy dữ liệu một chiều qua HTTP giữ mở — dùng cho streaming LLMGĐ19

B. Node.js runtime

Thuật ngữNghĩa ngắnHọc ở
Event loopVòng lặp Node dùng để xử lý I/O bất đồng bộ trên một luồngGĐ2
Microtask / macrotaskHai hàng đợi khác nhau; Promise (micro) luôn chạy trước setTimeout (macro)GĐ2
libuvThư viện C đứng sau event loop và thread pool của NodeGĐ2
Thread poolNhóm luồng nền cho việc chặn (fs, crypto, dns). Mặc định 4GĐ2
I/O-bound vs CPU-boundChờ đợi bên ngoài vs tính toán. Node giỏi cái đầu, tệ cái sauGĐ2
BlockingCode chiếm event loop, làm mọi request khác đứng chờGĐ2
StreamXử lý dữ liệu theo từng mảnh, bộ nhớ không đổi bất kể kích thướcGĐ2, GĐ11
BufferVùng nhớ nhị phân thô của NodeGĐ2
Worker threadsLuồng thật, để đẩy việc CPU-bound ra khỏi event loopGĐ2
Graceful shutdownThoá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ênGĐ8, GĐ18
ESM / CJSHai hệ module của Node (import vs require) — không trộn tự do đượcGĐ1
Transpile vs type-checkXoá type để chạy vs kiểm tra type. esbuild/tsx chỉ làm cái đầuGĐ1

C. Database

Thuật ngữNghĩa ngắnHọc ở
ACIDAtomicity, Consistency, Isolation, Durability — 4 đảm bảo của transactionGĐ4
TransactionNhóm thao tác "được ăn cả, ngã về không"GĐ4
Isolation levelMức cách ly giữa các transaction chạy song song (Read Committed, Serializable...)GĐ4
NormalizationTổ chức dữ liệu để mỗi sự thật chỉ lưu một chỗGĐ4
DenormalizationCố ý sao chép dữ liệu để đọc nhanh hơnGĐ4
Foreign keyRàng buộc trỏ tới khoá chính bảng khácGĐ4
IndexCấu trúc phụ giúp tìm hàng mà không quét toàn bảngGĐ4
B-tree / GIN / HNSWBa loại index: giá trị thông thường / tìm trong mảng-text / vectorGĐ4, GĐ20
Partial indexIndex chỉ trên tập con hàng (WHERE deleted_at IS NULL) — nhỏ và nhanh hơnGĐ13
Seq scanQuét tuần tự toàn bảng — dấu hiệu thiếu index (trên bảng lớn)GĐ4
EXPLAIN ANALYZELệnh cho biết Postgres thực sự chạy query thế nàoGĐ4
Query plannerBộ phận quyết định cách thực thi queryGĐ4
N+1 problem1 query lấy danh sách + N query lấy chi tiết từng phần tửGĐ4
MigrationThay đổi schema có phiên bản, commit vào gitGĐ4, GĐ13
Expand-contractKỹ thuật đổi schema không downtime qua 3 lần deployGĐ13
Connection poolTập connection dùng lại; mỗi connection Postgres là một process tốn RAMGĐ4, GĐ18
PgBouncerProxy gom connection, cho phép nghìn client dùng chung vài chục connection thậtGĐ18
Read replicaBản sao chỉ đọc, giảm tải cho primaryGĐ18
Replication lagĐộ trễ replica so với primary — nguồn bug "read-after-write"GĐ18
ShardingChia dữ liệu theo khoá sang nhiều DB. Biện pháp cuối cùngGĐ18
PartitioningChia 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ậtGĐ13
Optimistic / pessimistic lockingKiểm tra xung đột lúc ghi (version) vs khoá trước khi đọc (FOR UPDATE)GĐ4
SKIP LOCKEDBỏ qua hàng đang bị khoá — nền tảng của hàng đợi trên SQLGĐ8
VACUUM / bloatDọn hàng chết của Postgres; không dọn thì bảng phình và chậmGĐ13
PITRPoint-In-Time Recovery — khôi phục về đúng một thời điểmGĐ13
RPO / RTOMất tối đa bao nhiêu dữ liệu / mất tối đa bao lâu để khôi phụcGĐ13
tsvector / tsqueryKiểu dữ liệu full-text search của PostgresGĐ4
pgvectorExtension lưu và tìm kiếm vector embedding trong PostgresGĐ20

D. Security & Auth

Thuật ngữNghĩa ngắnHọc ở
Authentication (authN)Bạn là aiGĐ6
Authorization (authZ)Bạn được làm gìGĐ6, GĐ8
JWTToken tự chứa thông tin, có chữ ký, server không cần lưuGĐ6, GĐ8
ClaimMột trường dữ liệu bên trong JWT (sub, exp, role)GĐ6
Access / refresh tokenToken ngắn hạn để gọi API / token dài hạn để lấy access token mớiGĐ6, GĐ8
Token rotationMỗi lần refresh cấp token mới và huỷ token cũ; phát hiện được token bị đánh cắpGĐ8
Session (stateful)Server lưu phiên; thu hồi tức thì được, đổi lại phải tra store mỗi requestGĐ8
OAuth 2.0 / OIDCGiao thức uỷ quyền / lớp định danh xây trên nó (đăng nhập Google, GitHub)GĐ6
Authorization Code FlowLuồng OAuth chuẩn cho web serverGĐ6
PKCEPhần mở rộng OAuth chống chặn mã uỷ quyền, bắt buộc cho SPA/mobileGĐ6
RBAC / ABACPhân quyền theo vai trò / theo thuộc tínhGĐ6
Hashing vs encryptionMột chiều (mật khẩu) vs hai chiều (token cần đọc lại)GĐ8, GĐ13
argon2 / bcryptHàm băm mật khẩu chậm có chủ đích để chống dòGĐ8
SaltChuỗi ngẫu nhiên trộn vào mật khẩu trước khi băm, chống rainbow tableGĐ8
XSSChèn script chạy trong trang của bạnGĐ8, GĐ11
CSRFLừa trình duyệt người dùng gửi request kèm cookie của họGĐ8
SameSiteThuộc tính cookie kiểm soát việc gửi cookie khi request từ site khácGĐ8
SQL InjectionChèn SQL qua dữ liệu người dùng — chống bằng parameterized queryGĐ8
SSRFLừa server gọi tới địa chỉ nội bộ (metadata endpoint của cloud)GĐ8
Path traversalDùng ../ để thoát khỏi thư mục cho phépGĐ11
Magic bytesChữ ký nhị phân đầu file — cách duy nhất biết kiểu file thậtGĐ11
Timing attackSuy ra bí mật từ thời gian xử lý; chống bằng timingSafeEqualGĐ8
User enumerationSuy ra ai có tài khoản qua khác biệt của responseGĐ11
PIIPersonally Identifiable Information — dữ liệu định danh cá nhânGĐ13
Prompt injectionDữ liệu chèn vào prompt làm LLM đi chệch chỉ dẫn ban đầuGĐ19
OWASP Top 10Danh sách 10 nhóm lỗ hổng web phổ biến nhấtGĐ8

E. Kiến trúc & vận hành

Thuật ngữNghĩa ngắnHọc ở
StatelessInstance không giữ trạng thái riêng → scale ngang đượcGĐ18
Vertical / horizontal scalingMáy to hơn / nhiều máy hơnGĐ18
Load balancerPhân phối request, loại bỏ instance hỏngGĐ18
Sticky sessionGhim người dùng vào một instance — dấu hiệu app chưa statelessGĐ18
Liveness / readinessCò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 / canaryHai chiến lược deploy: đổi toàn bộ sang môi trường mới / thả dần % trafficGĐ14
Zero-downtime deployDeploy không rớt requestGĐ14, GĐ18
Cache-asideĐọc cache trước; miss thì đọc DB rồi ghi vào cacheGĐ8
Cache stampedeNhiều request cùng miss một lúc, đồng loạt đánh vào DBGĐ8
TTLThời gian sống của một mục cacheGĐ8
Queue / worker / jobHàng đợi việc / tiến trình xử lý / một đơn vị việcGĐ9
DLQ (Dead Letter Queue)Nơi chứa job lỗi hết số lần retry, để điều tra thủ côngGĐ9
Outbox patternGhi "ý định gửi việc" trong cùng transaction DB, relay đẩy sang queue sauGĐ9, GĐ10, GĐ17
At-least-once / exactly-onceGiao í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 breakerSau N lỗi thì ngừng gọi dependency một khoảng thời gian, fail nhanhGĐ8, GĐ18
BulkheadChia tài nguyên theo ngăn để một phần hỏng không kéo cả hệ thốngGĐ18
Load sheddingChủ động từ chối bớt request khi quá tải, để phần còn lại thành côngGĐ18
JitterThêm ngẫu nhiên vào thời gian retry, chống "thundering herd"GĐ18
Thundering herdNhiều client cùng retry một lúc, đánh sập service vừa hồi phụcGĐ18
Graceful degradationTính năng phụ chết nhưng tính năng chính vẫn chạyGĐ18
Noisy neighborMột tenant ngốn tài nguyên chung, làm ảnh hưởng các tenant khácGĐ18
Multi-tenancyMột hệ thống phục vụ nhiều khách hàng, dữ liệu phải cách lyGĐ22
Strong / eventual consistencyĐọc luôn thấy mới nhất / cuối cùng sẽ thấyGĐ18
CAP theoremKhi mạng bị chia cắt, phải chọn giữa nhất quán và khả dụngGĐ16, GĐ18
SagaChuỗi transaction cục bộ + hành động bù trừ, thay cho transaction phân tánGĐ16, GĐ17
Modular monolithMột tiến trình nhưng có ranh giới module rõ ràng — thường là lựa chọn đúngGĐ17, GĐ18
12-factor appBộ nguyên tắc viết app dễ deploy (config qua env, log ra stdout, stateless...)GĐ14
IaCInfrastructure as Code — mô tả hạ tầng bằng file (Terraform)GĐ14, GĐ15

F. Observability & Testing

Thuật ngữNghĩa ngắnHọc ở
Structured loggingLog dạng JSON có trường, máy truy vấn được — không phải chuỗi tự doGĐ8
Correlation / request idMột id xuyên suốt để nối mọi log của cùng một requestGĐ8
Distributed tracingTheo dấu một request qua nhiều service, thấy thời gian tiêu ở đâuGĐ16, GĐ18
SpanMột đoạn công việc trong traceGĐ18
p50 / p95 / p99Phân vị độ trễ. Luôn dùng thay cho trung bìnhGĐ18
RED / USERate-Errors-Duration cho service / Utilization-Saturation-Errors cho tài nguyênGĐ18
SaturationMức xếp hàng chờ tài nguyên — cảnh báo sớm hơn utilizationGĐ18
SLI / SLO / SLAChỉ số đo / mục tiêu nội bộ / cam kết với khách hàngGĐ18
Dead man's switchCả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 doubleVật thay thế dependency: stub / fake / spy / mockGĐ12
TestcontainersThư viện tự bật container DB thật cho test rồi dọn sạchGĐ12
Fixture / factoryDữ 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 testTest lúc pass lúc đỏ mà code không đổiGĐ12
CoverageTỉ lệ code được chạy qua khi test — không đo chất lượng testGĐ12
Load testBắ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ắnHọc ở
TokenĐơn vị văn bản LLM xử lý (~0,75 từ tiếng Anh); đơn vị tính tiềnGĐ19
Context windowSố token tối đa model nhận được trong một lần gọiGĐ19
Temperature / top_pTham số điều chỉnh độ ngẫu nhiên của outputGĐ19
System / user / assistantBa vai trò của message trong chat completionGĐ19
Structured outputÉp model trả JSON đúng schemaGĐ19
Function / tool callingModel đề xuất gọi hàm bạn khai báo, kèm tham sốGĐ21
EmbeddingVector số biểu diễn ngữ nghĩa của một đoạn textGĐ20
Cosine similarityĐộ đo mức giống nhau giữa hai vectorGĐ20
ChunkingCắt tài liệu thành đoạn vừa đủ để embed và truy hồiGĐ20
RAGRetrieval-Augmented Generation: tìm ngữ cảnh liên quan rồi mới hỏi LLMGĐ20
Hybrid searchKết hợp tìm theo từ khoá và tìm theo vectorGĐ20
RerankingDùng model mạnh hơn xếp lại kết quả sau bước truy hồi thôGĐ20
HNSW / IVFFlatHai loại index vector: chính xác hơn-tốn RAM / nhẹ hơn-kém chính xácGĐ20
Agent / ReAct loopLLM lặp: suy nghĩ → gọi tool → quan sát → lặp lạiGĐ21
MCPModel Context Protocol — chuẩn để LLM kết nối tool và nguồn dữ liệuGĐ21
EvalChấm điểm output LLM theo tiêu chí, thay cho assert cứngGĐ19, GĐ12
GuardrailsLớp kiểm soát input/output của LLM (chặn prompt injection, lọc nội dung)GĐ19
Thuật ngữNghĩa ngắnHọc ở
Document / key-value / wide-column / graphBốn họ NoSQL, mỗi họ hợp một hình dạng dữ liệuGĐ5
Embed vs referenceNhúng dữ liệu con vào document cha vs lưu id rồi ghép sauGĐ5
ObjectIdKhoá chính 12 byte của Mongo: timestamp + random + counter. Lộ thời gian tạoGĐ5
Aggregation pipelineChuỗi stage biến đổi dữ liệu của Mongo — tương đương SQLGĐ5
Quy tắc ESRThứ tự cột trong compound index Mongo: Equality → Sort → RangeGĐ5
TTL indexIndex 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 concernGhi xong nghĩa là bao nhiêu node đã nhận / đọc thấy dữ liệu ở mức đảm bảo nàoGĐ5
Change streamLuồng sự kiện thay đổi collection, đọc từ oplog. Cần lưu resume tokenGĐ5
Inverted indexÁnh xạ term → danh sách document — nền tảng của mọi search engineGĐ10
Analyzer / tokenizer / stemmingChuỗi biến văn bản thành term. Index và query phải dùng cùng analyzerGĐ10
BM25Thuật toán chấm relevance mặc định của ES: TF bão hoà + IDF + độ dài fieldGĐ10
text vs keywordĐược analyze (để match) vs lưu nguyên (để filter/aggregate/sort)GĐ10
Query vs filter contextCó chấm điểm, không cache vs không chấm điểm, có cacheGĐ10
search_afterCursor pagination của ES, thay cho from/size bị chặn ở 10.000GĐ10
AliasTên trỏ tới index thật — cho phép reindex và đổi mapping không downtimeGĐ10
Index driftĐộ lệch giữa search index và nguồn sự thật. Phải đo và đối soátGĐ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ểmGĐ10, GĐ20

I. Jobs, Cron & xử lý nền

Thuật ngữNghĩa ngắnHọc ở
Queue vs logJob tiêu thụ rồi biến mất (BullMQ) vs sự kiện giữ lại, replay được (Kafka)GĐ9
SKIP LOCKEDBỏ qua hàng đang bị khoá thay vì chờ — nền tảng của queue trên SQLGĐ9
Idempotency keyKhoá để nhận ra "việc này đã làm rồi" và không làm lạiGĐ8, GĐ9
Backoff + jitterGiãn thời gian retry theo cấp số nhân + ngẫu nhiên hoá, chống thundering herdGĐ9
lockDuration / stalled jobThời gian queue giữ job; quá hạn thì giao cho worker khác → chạy trùngGĐ9
Grace periodKhoảng orchestrator chờ giữa SIGTERMSIGKILLGĐ9, GĐ15
Queue depth / job ageSố job chờ / tuổi job cũ nhất — hai chỉ số cảnh báo sớm quan trọng nhấtGĐ9
Leader electionChọn đúng một instance chạy một việc. Khoá Redis không đảm bảo tuyệt đốiGĐ9, GĐ16
Advisory lockKhoá cấp ứng dụng của Postgres, tự nhả khi session chếtGĐ9
Missed run / catch-upCron 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ịchGĐ9

J. Kiến trúc, phân tán & Kubernetes

Thuật ngữNghĩa ngắnHọc ở
Dependency RuleMã nguồn chỉ được phụ thuộc vào phía trong, không bao giờ ngược lạiGĐ7
Port / adapterInterface do tầng trong sở hữu / hiện thực của nó ở tầng ngoàiGĐ7
Anemic vs rich domain modelClass chỉ có field, logic ở ngoài vs object tự bảo vệ bất biến của mìnhGĐ7
Value ObjectKiể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 aggregateGĐ7
InvariantĐiều luôn phải đúng về mặt nghiệp vụ, bất kể trạng thái nàoGĐ7
Bounded ContextRanh giới nơi một từ có một nghĩa xác định — công cụ tìm ranh giới serviceGĐ17
Luật ConwayKiến trúc hệ thống sao chép cấu trúc giao tiếp của tổ chứcGĐ17
Monolith phân tánNhiều service nhưng phải deploy cùng lúc — tệ hơn cả monolith lẫn microserviceGĐ17
Strangler FigThay 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 testingConsumer mô tả thứ mình cần; CI của provider chạy mọi contract trước khi deployGĐ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ấtGĐ17
Tám ngộ nhậnTám giả định sai về mạng mà mọi lập trình viên đều mắcGĐ16
PACELCPartition → A hay C; Else → Latency hay Consistency (nửa bạn sống cùng mỗi ngày)GĐ16
LinearizabilityMứ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ểmGĐ16
Read-your-writesBạ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ậnGĐ16
Clock skewĐồng hồ hai máy lệch nhau; wall clock không dùng để sắp thứ tự đượcGĐ16
Monotonic clockĐồng hồ chỉ tăng, dùng để đo khoảng, không so được giữa máyGĐ16
Lamport / vector clockĐồng hồ logic ghi lại quan hệ nhân quả thay vì thời gian thậtGĐ16
QuorumĐa số node. Hai nhóm không thể cùng có đa số → chống split-brainGĐ16
Raft / consensusThuật toán để N node đồng ý về một giá trị dù có node chếtGĐ16
Split-brainHai node cùng tưởng mình là leader, dữ liệu phân kỳGĐ16
Fencing tokenSố tăng dần kèm khoá; tài nguyên phía sau từ chối token cũ hơnGĐ16
Gray failureHealth check pass nhưng dịch vụ thực tế hỏng — chế độ hỏng khó phát hiện nhấtGĐ16
Cascading failureMột sự cố nhỏ lan thành sập toàn hệ qua retry và tồn đọngGĐ16, GĐ18
Retry amplification3 tầng × 3 lần retry = 27 request cho một request gốcGĐ16
2PCTwo-Phase Commit — transaction phân tán blocking, gần như không dùngGĐ16
CDCChange Data Capture — đọc WAL/oplog để phát sự kiện thay đổi dữ liệuGĐ10, GĐ17
Reconciliation loopVò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 K8sGĐ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 HTTPGĐ15
Startup / liveness / readiness probeBoot xong chưa / có treo không (→ restart) / nhận traffic được chưa (→ rút khỏi LB)GĐ15
requests vs limitsTài nguyên dành trước khi lập lịch vs trần cứng lúc chạyGĐ15
OOMKilled / CPU throttlingVượt memory limit → bị giết / vượt CPU limit → bị bóp, âm thầmGĐ15
preStop hookChạy trước SIGTERM; sleep vài giây để việc gỡ endpoint lan xong, tránh 502GĐ15
HPA / KEDATự scale theo CPU / theo metric tuỳ ý như độ sâu hàng đợiGĐ15
PodDisruptionBudgetSố pod tối thiểu phải sống khi cluster tự bảo trìGĐ15
GitOpsRepo git là nguồn sự thật; ArgoCD/Flux đồng bộ cluster theo repoGĐ15
Service meshSidecar proxy lo mTLS/retry/circuit breaker ở tầng hạ tầngGĐ15, GĐ17

Ba từ dễ nhầm nhất khi từ FE sang

  1. "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.
  2. "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.
  3. "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.

Học bằng cách build. Chứng minh, đừng tin.