โหมดมืด
🔤 Glossary — คำศัพท์ทั่วทั้งเล่ม
วัตถุประสงค์: Fallback สำหรับคนอ่านนอก VitePress (GitHub raw, IDE, พิมพ์ออกอ่าน) — ไม่มี tooltip ก็ยังเปิดดูได้
วิธีใช้: Ctrl+F หาคำ · ทุกบทควรลิงก์มาที่นี่ใน footer · ยังไม่ครบ — เป็น living document, เพิ่มเมื่อพบศัพท์ใหม่ใน review
A
- ACID — Atomicity / Consistency / Isolation / Durability — คุณสมบัติ 4 อย่างของ transaction ใน RDBMS
- Annotation (Java/Spring) — ป้ายกำกับเขียนนำหน้าด้วย
@เช่น@Componentใช้ "บอกใบ้" framework - API — Application Programming Interface — "หน้าบ้าน" ที่ให้คนอื่นเรียกใช้
- API Gateway — ตัวกลางหน้าระบบที่ route request ไปหา service ต่างๆ + ทำ auth/rate limit/log
- AAD (AES-GCM) — Additional Authenticated Data — ข้อมูลเสริมที่ AES-GCM ใช้ตรวจ integrity แต่ไม่เข้ารหัส
- Annotation Processing — กระบวนการที่ compiler/framework อ่าน annotation แล้ว generate โค้ดหรือทำงานเพิ่ม
- AsyncLocalStorage (Node.js) — กลไกเก็บ context ตาม async chain (เหมือน ThreadLocal ของ Java)
- ABAC — Attribute-Based Access Control — ตรวจสิทธิ์จาก attribute หลายอย่าง (เก่งกว่า RBAC แต่ซับซ้อนกว่า)
- Autowired (Spring) — annotation ที่บอก Spring ให้ inject bean ที่ตรง type เข้ามา
B
- Backpressure — แรงดันย้อนกลับ — ผู้รับช้าทำให้ผู้ส่งต้องชะลอ (ไม่งั้น buffer ระเบิด)
- Bean (Spring) — object ที่ Spring container จัดการ — สร้างให้ + inject ให้ + จัดการ lifecycle
- BFF — Backend For Frontend — backend ที่สร้างเฉพาะให้ frontend หนึ่งตัวใช้ (mobile/web มี BFF ต่างกัน)
- Bloom Filter — โครงสร้างข้อมูลความน่าจะเป็น ตอบ "อยู่ไหม" — บอก "ไม่แน่ใจมีหรือไม่มี" แต่ "ไม่มีแน่นอน"
- Broker (message) — ตัวกลางรับ-ส่ง message ระหว่าง service เช่น Kafka, RabbitMQ
- Bytecode (JVM) — code กึ่งแปล ที่ JVM รัน —
javacคอมไพล์.javaเป็น.class(bytecode)
C
- CAP — Consistency / Availability / Partition tolerance — distributed system เลือกได้ 2 ใน 3
- CDC — Change Data Capture — เก็บการเปลี่ยนใน DB เป็น event stream (Debezium, etc.)
- Circuit Breaker — pattern หยุดเรียก service ที่ไม่ตอบ เพื่อกัน cascading failure
- CI/CD — Continuous Integration / Continuous Deployment — ระบบ build+test+deploy อัตโนมัติ
- CLI — Command Line Interface — โปรแกรมที่ใช้ผ่าน terminal
- Compaction (Kafka) — กลไกเก็บแค่ message ล่าสุดต่อ key ใน topic
- Compile — แปลโค้ด → format ที่เครื่อง/runtime รันได้
- Container — หน่วยรัน app ที่แยก isolation จาก host (Docker, Podman, containerd)
- Container (Spring) — กล่องเก็บ object ที่ Spring จัดการ ดู Bean / IoC
- Controller (Spring MVC) — class ที่รับ HTTP request — มี
@Controllerหรือ@RestController - Coupling — ความผูกพันระหว่าง class/module — coupling สูง = แก้ที่หนึ่งกระทบหลายที่
- CRDT — Conflict-free Replicated Data Type — โครงสร้างข้อมูลที่ผสานกันได้เอง ไม่ต้อง consensus
- CSP — Content Security Policy — header HTTP กัน XSS โดยจำกัด origin ของ script/style
- CSRF — Cross-Site Request Forgery — โจมตีให้ผู้ใช้ส่ง request โดยไม่รู้ตัว
- CQRS — Command Query Responsibility Segregation — แยก write path (command) กับ read path (query)
D
- DDD — Domain-Driven Design — ออกแบบโดยให้ code สะท้อนภาษาของ domain
- Dependency — สิ่งที่ของชิ้นหนึ่งต้องใช้ (lib/object อื่น)
- DI — Dependency Injection — ฉีด dependency เข้าไปใน object แทนที่ให้มันหาเอง (กลไกหนึ่งของ IoC)
- DLQ — Dead Letter Queue — queue/topic เก็บ message ที่ process ไม่สำเร็จ
- DNS — Domain Name System — แปลงชื่อ → IP
- Docker Compose — เครื่องมือรัน multi-container app จาก YAML เดียว
- DTO — Data Transfer Object — object สำหรับส่งข้อมูลข้าม layer (controller ↔ service)
E
- Embedded server (Spring Boot) — Tomcat ที่รวมเข้าไปใน jar —
java -jar app.jarก็ start server - Eventual Consistency — distributed system ที่สุดท้ายข้อมูลจะตรงกัน (แต่ไม่ทันที)
- EOS — Exactly-Once Semantics — ส่งครั้งเดียวเป๊ะ ไม่หายไม่ซ้ำ
- ETag — header HTTP ที่ระบุ version ของ resource เพื่อ cache validation
- Event Sourcing — เก็บการเปลี่ยนแปลงเป็น event stream ไม่ใช่ state ปัจจุบัน
F
- Fallacies of Distributed Computing — 8 ข้อเข้าใจผิดที่คนคิดเรื่อง network เช่น "network reliable"
- Field injection — DI โดย annotate field ตรง — ไม่แนะนำเพราะ test ยาก
- FK (Foreign Key) — คอลัมน์ใน table ที่อ้างถึง PK ของ table อื่น
- Framework — ชุดเครื่องมือที่เรียกโค้ดเรา (Hollywood Principle) — เราเขียน plugin/handler
G
- G1 / ZGC — Garbage Collector ของ JVM — G1 default, ZGC low-latency
- GraalVM — JVM ทางเลือกที่ทำ AOT (native image) ได้
- gRPC — Google's RPC framework บน HTTP/2 + Protobuf
H
- HATEOAS — Hypermedia As The Engine Of Application State — REST ระดับสูงสุดที่ response มี link ถึง next action
- Health check — endpoint ที่ orchestrator (k8s, LB) ใช้ตรวจว่า service ยังทำงานไหม
- Helm — package manager ของ Kubernetes
- HMAC — Hash-based Message Authentication Code — ใช้ hash + secret key พิสูจน์ integrity
- HLC — Hybrid Logical Clock — clock ผสม physical + logical ใช้ใน distributed system
- HNSW — Hierarchical Navigable Small World — algorithm ค้นหา vector ใกล้เคียง (ใช้ใน vector DB)
- HSTS — HTTP Strict Transport Security — header บังคับ browser ใช้ HTTPS เท่านั้น
I
- Idempotent (ไอ-เด็ม-โพ-เทนต์) — ทำซ้ำได้ผลลัพธ์เดิม —
PUT /user/1ส่ง 10 ครั้ง = ส่งครั้งเดียว - IDE — Integrated Development Environment — โปรแกรมที่ใช้เขียนโค้ด (IntelliJ, VS Code)
- Idempotency-Key — header HTTP ที่ client ส่งให้ server เพื่อรู้ว่า request ซ้ำ
- Immutable — เปลี่ยนค่าไม่ได้หลังสร้าง
- Inbox pattern — กลไก idempotent consumer — เก็บ message ID ที่ process แล้วในตาราง
- IoC — Inversion of Control — กลับด้านการควบคุม: framework สร้าง object แทนเราสร้างเอง
- ISR (Kafka) — In-Sync Replicas — replica ที่ตามทัน leader
- Istio — service mesh ที่นิยมใน Kubernetes
J
- Jakarta EE — namespace ใหม่ (
jakarta.*) ของ Java EE (เดิมคือjavax.*) ใช้ใน Spring Boot 3+ - JIT — Just-In-Time compilation — JVM แปล bytecode → machine code ตอน runtime
- JMM — Java Memory Model — กฎ memory visibility ระหว่าง thread
- JSON — format ข้อมูล
{ "key": "value" } - JWT — JSON Web Token — token format ที่ฝัง claim + sign — ใช้ stateless auth
K
- K8s / Kubernetes — orchestrator container ข้ามเครื่อง
- Kafka — distributed event log + streaming platform
- KIP — Kafka Improvement Proposal — เอกสารข้อเสนอปรับปรุง Kafka
- KMS — Key Management Service — บริการเก็บ + จัดการ encryption key
- KRaft — Kafka Raft — โหมดจัดการ Kafka cluster ที่ใช้ Raft แทน ZooKeeper
L
- Lag (Kafka) — ระยะที่ consumer ตามหลัง producer
- Lamport Clock — logical clock ของ Leslie Lamport — counter เพิ่มทุก event
- Layered architecture — Controller → Service → Repository
- Library — โค้ดของคนอื่นที่เราเรียกใช้ (ตรงข้ามกับ Framework)
- Linearizability — strongest consistency — ทุก op มี real-time order
- Load balancer — กระจาย traffic ไปหลาย instance
- LSM-tree — Log-Structured Merge Tree — โครงสร้าง storage engine (Cassandra, RocksDB)
M
- MDC — Mapped Diagnostic Context — กลไกใส่ context (เช่น trace ID) ใน log
- mTLS — mutual TLS — TLS ที่ทั้ง client + server ยืน certificate กัน
- MVCC — Multi-Version Concurrency Control — กลไก isolation ของ DB ที่เก็บหลาย version
N
- NestJS — backend framework ของ TypeScript (DI + decorator + lifecycle pipeline)
- NRT (C#) — Nullable Reference Types — กลไกเช็ค null ที่ compile time
O
- Observability — ดูเข้าใจระบบจาก output (logs/metrics/traces) — 3 pillars
- OIDC — OpenID Connect — layer auth บน OAuth2
- OOM — Out Of Memory
- OpenAPI — spec สำหรับอธิบาย REST API (เดิม Swagger)
- Outbox pattern — เก็บ message ที่จะส่งใน table เดียวกับ business data (atomic) แล้ว worker เอาไปส่งทีหลัง
P
- PACELC — extends CAP: ถ้า Partition → C or A, Else → Latency or Consistency
- Partition (Kafka) — sub-log ใน topic ที่ scale ขนานได้
- PII — Personally Identifiable Information — ข้อมูลระบุตัวบุคคล
- PK (Primary Key) — คอลัมน์ที่ระบุ row แต่ละ row
- Pod (k8s) — หน่วยเล็กสุดของ k8s — มี 1 หรือหลาย container
- Pool (connection) — กลุ่ม connection ที่ reuse ได้ (HikariCP, pg pool)
- Producer/Consumer — ผู้ส่ง/ผู้รับ message ใน broker
- PromQL — query language ของ Prometheus
- Protobuf — Protocol Buffers — binary serialization ของ Google
- PV/PVC (k8s) — Persistent Volume / Persistent Volume Claim
Q
- Quorum — จำนวนเสียงขั้นต่ำที่ต้องเห็นด้วยถึงจะ commit ใน distributed
R
- RabbitMQ — broker แบบ traditional queue + flexible routing
- Race condition — bug ที่เกิดเมื่อหลาย thread/process แข่งกันเข้าทรัพยากร
- Raft — consensus algorithm (ง่ายกว่า Paxos)
- RBAC — Role-Based Access Control — ตรวจสิทธิ์จาก role
- RED method — Rate / Errors / Duration — 3 metrics ที่ดูใน service-level monitoring
- Reactive — paradigm จัดการ async stream + backpressure (WebFlux, RxJS)
- Repository (Spring Data) — interface ที่ Spring สร้าง implementation ให้สำหรับ DB access
- Replica — copy ของ data ที่กระจายไปหลายเครื่อง
- REST — สไตล์ออกแบบ API ผ่าน HTTP — resource + verb (GET/POST/PUT/DELETE)
- Retry / Backoff — strategy เรียกซ้ำเมื่อ fail พร้อมหน่วงเวลาเพิ่มขึ้น
- RF — Replication Factor — จำนวน copy ของ data
- Routing key — key ที่ broker ใช้ตัดสินใจส่ง message ไปไหน
- RPO/RTO — Recovery Point/Time Objective — เป้าหมาย DR
S
- Saga — pattern จัดการ distributed transaction ด้วย local transaction + compensation
- Schema Registry — service เก็บ schema ของ message (Avro/Protobuf) — ป้องกัน schema breaking
- SCRUM — agile framework
- Sidecar — container เสริมที่รันคู่ main container ใน pod เดียว
- Singleton — design pattern: 1 instance ในระบบ — bean default ของ Spring
- SLI/SLO/SLA — Service Level Indicator / Objective / Agreement
- SOLID — 5 หลัก OOP: SRP, OCP, LSP, ISP, DIP
- Spring Boot — Spring + auto-config + embedded server + starter dep
- SSRF — Server-Side Request Forgery — โจมตีให้ server ของเหยื่อยิง request ภายในไปยัง internal target
- Stateless — service ไม่เก็บ state ระหว่าง request (ทุก request พกมาเอง)
T
- Tenant — ลูกค้า/องค์กรหนึ่ง ใน multi-tenant system
- TLS — Transport Layer Security — encryption บน TCP (เดิมคือ SSL)
- Topic (Kafka) — ชื่อกลุ่มของ event ที่ producer ส่งเข้า + consumer subscribe
- Tracing (distributed) — track 1 request ข้ามหลาย service
- Transaction — กลุ่ม operation ที่ทำเป็นชุด — atomic + isolated
- TTL — Time To Live — เวลาก่อนข้อมูล expire
- Two Generals Problem — ปัญหา impossibility ของ guaranteed delivery บน unreliable network
U
- USE method — Utilization / Saturation / Errors — 3 metrics สำหรับ resource monitoring
- UUID — Universally Unique Identifier — ID 128-bit สุ่ม
V
- Vector clock — logical clock ที่เป็น array ของ counter (track causality)
- Virtual thread (Java 21+) — lightweight thread ใหม่ของ JVM scale ได้มหาศาล
- VitePress — static site generator (Vue + Vite) — engine ของหนังสือเล่มนี้
W
- WAL — Write-Ahead Log — log ที่เขียนก่อน apply เพื่อ durability + recovery
- WebFlux (Spring) — reactive web framework ใน Spring (non-blocking)
- WCAG — Web Content Accessibility Guidelines — มาตรฐาน accessibility
X
- XSS — Cross-Site Scripting — โจมตีให้ browser ของเหยื่อรัน script
Y
Z
- Zero Trust — security model: ไม่เชื่อใครเลย ตรวจทุก request
- ZooKeeper — coordination service ที่ Kafka เคยใช้ (ลบใน Kafka 4.0)
อยากเพิ่มคำ? — เปิด PR แก้ไฟล์นี้ + ระบุบทที่ใช้คำนั้นครั้งแรก
คำที่ใช้ใน 1 หมวดเฉพาะ — ใส่ใน
<หมวด>/README.mdภายใต้หัวข้อ "ศัพท์ที่ใช้ในหมวดนี้" ไม่ต้องดันมาที่นี่