Skip to content

Microservices

ส่วนหนึ่งของ Beginner Book — หมวดที่ลึกที่สุดในเล่ม เพราะ microservices = "ระบบใหญ่ที่ทำงานร่วมกัน"


เปิดอ่านครั้งแรก? เริ่มที่นี่

ถ้านี่คือครั้งแรกที่คุณเปิดโฟลเดอร์นี้ — อย่าเพิ่งเลื่อนลงไปดู TOC ด้านล่าง (จะตกใจกับศัพท์)

ไปอ่าน บท Quickstart — Microservices ใน 15 นาที ก่อน. มันจะให้:

  • คำเปรียบเทียบ "ร้านอาหาร vs ฟู้ดคอร์ท"
  • ภาพ 1 request วิ่งผ่านอะไรบ้าง
  • ตารางแปลศัพท์ใน TOC เป็นภาษามนุษย์
  • ทางลัด "ถ้ามีปัญหา X → อ่านบท Y"

หลังจากนั้นกลับมาที่ README นี้แล้วค่อยตัดสินใจว่าจะเดินทางต่อยังไง

ผู้อ่านที่เคยทำ microservices แล้ว ข้าม Quickstart ได้ ไปบท 00 Mindset โดยตรง


หนังสือเล่มนี้สอนอะไร

อ่านจบทุกบท + ทำ checkpoint คุณจะ:

  • เข้าใจ เมื่อไหร่ควร (และเมื่อไหร่ ไม่ควร) ใช้ microservices — ไม่ตามกระแสจน app เจ๊ง
  • ตัด service ออกจาก monolith เป็น (DDD, bounded context, strangler fig)
  • เลือกวิธีคุยระหว่าง serviceREST vs gRPC vs Message Queue — แต่ละแบบเหมาะกับงานอะไร
  • ตั้ง API Gateway (Spring Cloud Gateway, Kong, Envoy) + BFF
  • ทำ Service Discovery (Eureka, Consul) + Centralized Config
  • เข้าใจ Message Broker ลึกถึงแก่น — RabbitMQ และ Kafka ตั้งแต่ติดตั้งไปจน production tuning
  • รู้จัก broker อื่น ๆ — Redis Streams, NATS/JetStream, Pulsar, AWS SQS/SNS, GCP Pub/Sub — และ "เลือกตัวไหนใช้กับงานอะไร"
  • ทำ Stream Processing ด้วย Kafka Streams + Apache Flink
  • ทำ Event-Driven Patterns — Saga, Outbox, Inbox, Change Data Capture (Debezium)
  • ออกแบบ resilience — Circuit Breaker, Bulkhead, Retry, Timeout, Backpressure
  • จัดการ data ใน microservices — DB per service, CQRS, Event Sourcing
  • ทำ Distributed Tracing + correlation ID ที่กระโดดข้าม service ได้
  • ทำ security — mTLS, Zero Trust, JWT propagation, broker SASL/SCRAM
  • ใช้ Service Mesh — Istio, Linkerd, Envoy
  • deploy — Canary, Blue-Green, Feature Flag, GitOps
  • ดูตัวอย่าง polyglot ที่ Java + Go + Node คุยกันผ่าน Kafka จริง

เป้าหมาย: อ่านจบไปแล้ว สร้าง microservice ใหม่ขึ้น production ได้คนเดียว หรือ เป็น tech lead ของทีมได้


หนังสือนี้ออกแบบมาให้ใคร

✅ Backend developer ที่ทำ monolith แล้วเริ่มมีปัญหา scale / team / deploy ✅ คนที่ทำ microservices อยู่แต่ตอบไม่ได้ว่า "ทำไม" แต่ละ component มี ✅ คนที่อยากเป็น senior / staff / tech lead ✅ คนที่จะไป interview ตำแหน่ง backend / SRE / platform engineer ✅ คนที่ทำงานกับ Kafka / RabbitMQ อยู่แต่งง config

❌ ยังไม่เคยเขียน backend เลย — ไปอ่าน java/ + spring-boot/ ก่อน ❌ ยังไม่เคยใช้ Docker — ไปอ่าน devops/03-docker-deep.md ก่อน (ลิงก์ verified — ไฟล์มีอยู่จริง) ❌ ยังไม่เข้าใจ HTTP / REST API — ไปอ่าน api-design/ ก่อน


ก่อนเริ่ม — ต้องรู้อะไรก่อน

หัวข้อระดับที่ต้องรู้ไปอ่านได้ที่
HTTP + REST APIต้องเขียน API เป็นapi-design/
Database พื้นฐานSQL + transactiondatabase/
Dockerสร้าง image + รัน containerdevops/03-docker-deep.md
Kubernetesรู้จัก Pod, Service, Deploymentdevops/04-kubernetes-intro.md
Java/Go/Nodeเลือก 1 ภาษาให้คล่องjava/, go/
Spring Boot (แนะนำ)REST + JPA + Securityspring-boot/
Distributed Systems theory (แนะนำ)CAP, consensusdistributed-systems/

ถ้ายังไม่พร้อม → ไปอ่าน prerequisite ก่อน 2-4 สัปดาห์แล้วค่อยกลับมา

🎯 Self-Assessment Quiz — พร้อมอ่านเล่มนี้หรือยัง?

ตอบ "ใช่/ไม่" ในใจ 10 ข้อนี้ — เพื่อรู้ว่าคุณ "พร้อม" จริงหรือควรไป prerequisite ก่อน:

text
[backend essentials]
 1. □ เคยเขียน REST API ที่มีอย่างน้อย 5 endpoint + ต่อ DB จริง (ไม่ใช่ tutorial)
 2. □ อธิบายความต่างของ HTTP status code 200/201/400/401/403/404/500/503 ได้
 3. □ เคยใช้ database transaction (BEGIN/COMMIT/ROLLBACK) จริง
 4. □ เขียน SQL ที่มี JOIN + GROUP BY ได้โดยไม่ต้องค้น Google ทุกครั้ง

[ops basics]
 5. □ เคย deploy แอปของตัวเองขึ้น production จริง (Heroku/Render/VPS/cloud) — ไม่ใช่แค่ run local
 6. □ เคยเขียน Dockerfile + รัน `docker compose up` ที่มี service ≥ 2 ตัว
 7. □ รู้จัก JWT (JSON Web Token — โทเคนยืนยันตัวตนที่ใช้กันทั่วไปใน REST API) — สร้าง + verify ได้

[mindset]
 8. □ เคยอ่าน log production จริง + debug bug ที่ user เจอ
 9. □ เคยมี "monolith" ที่ตัวเองเขียน > 5,000 บรรทัด — รู้สึก pain เรื่อง deploy/scale
10. □ เข้าใจคำว่า "eventual consistency" หรืออย่างน้อยพอเดาความหมายจากคำได้ — *ไม่ต้องรู้นิยามทางการ แค่เดาความหมายตามตัวอักษรว่า "ความสอดคล้องที่จะมาในที่สุด" ก็ถือว่าผ่านได้*

คะแนน:

  • 8-10 ข้อ: ✅ พร้อม — อ่านเรียงตั้งแต่ 00 → 19 ได้เลย
  • 5-7 ข้อ: ⚠️ พร้อมบางส่วน — เริ่มที่ 00-quickstart + 00-mindset ก่อน, ข้อที่ตอบ "ไม่" ให้ไป prerequisite ที่ตรง (ตารางข้างบน) คู่ขนาน
  • < 5 ข้อ: ❌ ยังไม่พร้อม — หยุดที่นี่ ไปอ่าน java/ หรือ go/ + spring-boot/ + database/ + devops/03 Docker ก่อน 1-3 เดือน แล้วกลับมา. ถ้าฝืนอ่านเล่มนี้ตอนนี้จะงงตั้งแต่ต้น เพราะบท 06-12 ใช้ความรู้ Docker + transaction + broker ตลอด และสมมติว่าคุณรู้แนวคิดเหล่านั้นแล้ว

💡 ตอบไม่ได้เพราะไม่รู้คำใน quiz หรือเปล่า? ถ้าใช่ — คุณยังไม่พร้อม. quiz นี้ใช้คำที่ทุก backend dev ทำงาน 1-2 ปีควรรู้

ตอบไม่ได้ข้อไหน → ไปอ่านอะไรก่อน (map ตรง ๆ ไม่ใช่ส่ง link ทั้งเล่ม):

ข้อ quizถ้าไม่ผ่าน → ไปอ่าน
1, 2 (REST API + status code)api-design/REST แนวคิด + HTTP ครบ
3, 4 (transaction + SQL join)database/ — โดยเฉพาะบท transaction + indexing
5 (deploy production)devops/ — ตั้งแต่ basic deploy ไป CI/CD
6 (Dockerfile + compose)devops/03-docker-deep.md
7 (JWT)security/ ถ้ามี หรือ spring-boot/ บท Spring Security
8, 9 (log + monolith pain)00-mindset ในเล่มนี้พอใช้เป็น on-ramp
10 (eventual consistency)distributed-systems/ — CAP + consistency models

⚠️ ยังไม่เข้าใจศัพท์ในตารางข้างล่าง? อย่าเพิ่งตกใจ — ไปอ่าน Quickstart ก่อน มีตารางแปลศัพท์ทุกคำเป็นภาษามนุษย์ แล้วค่อยกลับมาดู TOC นี้

โครงสร้างหนังสือ (20 บท)

Part 0 — Quickstart (อ่านก่อนถ้าใหม่)

#บทสอนอะไร
Quickstart — Microservices ใน 15 นาทีเปรียบเทียบ "ร้านอาหาร vs ฟู้ดคอร์ท", ภาพ 1 request, ตารางแปลศัพท์, ทางลัดตามปัญหา

Part 1 — รากฐาน (บทที่ 00-02)

ปูพื้นความเข้าใจก่อนลงเทคนิค

#บทสอนอะไร
0Microservices Mindsetเมื่อไหร่ใช้/ไม่ใช้, ประวัติ, monolith → micro, fallacies of distributed computing
1Service DecompositionDDD, bounded context, event storming, strangler fig pattern
2Communication Overviewsync vs async, REST/gRPC/Message ตัดสินใจยังไง

Part 2 — Service-to-Service Communication (บทที่ 03-05)

#บทสอนอะไร
3REST + gRPC Between Servicestimeout, retry, idempotency, deadline propagation, code generation
4API Gateway + BFFSpring Cloud Gateway, Kong, BFF pattern, rate limit, auth offload
5Service Discovery + ConfigEureka (legacy — deprecated for new projects), Consul, K8s DNS, etcd, dynamic config (Spring Cloud Config, ConfigMaps) — new project ใช้ K8s DNS แทน Eureka

Part 3 — 🔥 Message Broker (บทที่ 06-12) ← หัวใจของเล่มนี้

#บทสอนอะไร
6Broker Fundamentalsqueue vs topic, delivery semantics (at-most-once/at-least-once/exactly-once), ordering, idempotent consumer, DLQ, outbox
7RabbitMQ เข้มexchange, binding, publisher confirm, prefetch, mirrored/quorum queue, DLX, cluster, tuning
8Kafka เข้มpartition, replica, ISR, idempotent producer, consumer group, EOS, schema registry, KRaft, Connect, MirrorMaker
9Brokers อื่น ๆRedis Streams, NATS/JetStream, Pulsar, SQS/SNS, GCP Pub/Sub — แต่ละตัวเหมาะกับอะไร
10Broker Comparisonmatrix เลือก broker, hybrid architecture, migration story
11Stream ProcessingKafka Streams (KStream/KTable), Apache Flink, Materialize, ksqlDB
12Event-Driven PatternsSaga (orchestration vs choreography), Outbox, Inbox, CDC (Debezium), exactly-once delivery

Part 4 — Reliability + Data (บทที่ 13-15)

#บทสอนอะไร
13ResilienceCircuit Breaker (Resilience4j), Bulkhead, Retry budget, Timeout, Backpressure
14Data ManagementDB per service, polyglot persistence, CQRS, Event Sourcing, data mesh
15Tracing + CorrelationOpenTelemetry, W3C Trace Context, propagation ผ่าน Kafka header, Jaeger/Tempo

Part 5 — Security + Ops (บทที่ 16-19)

#บทสอนอะไร
16SecuritymTLS, Zero Trust, JWT propagation, broker auth (SASL/SCRAM, ACL), OPA
17Service MeshIstio, Linkerd, Envoy, sidecar pattern, traffic management
18DeploymentCanary, Blue-Green, Feature Flag (OpenFeature standard + Unleash/LaunchDarkly/flagd providers), GitOps (Argo CD, Flux)
19Polyglot Exampleend-to-end project — Java producer + Go consumer + Node/NestJS service + Python/FastAPI service + Kafka + Postgres (polyglot 4 ภาษา)

วิธีอ่านที่แนะนำ

⏱️ เรื่องเวลาที่ระบุในแต่ละบท ("ใช้เวลา 3-4 ชั่วโมง", "5-6 ชั่วโมง") เป็นเวลาสำหรับ ผู้อ่านที่มี prerequisite ครบ (Spring Boot/Docker/SQL คล่อง). ถ้าคุณเป็น basic ที่เพิ่งครบ prerequisite พื้นฐาน — คาดว่าใช้เวลา 2-3 เท่า เป็นเรื่องปกติ ไม่ต้องเร่งตัวเอง

มือใหม่ microservices

อ่านเรียงตั้งแต่ 00 → 19 — ห้ามข้าม Part 3 (broker) เด็ดขาด เพราะ microservices ยุคใหม่ event-driven เกือบทั้งหมด

ใช้เวลาประมาณ 8-12 สัปดาห์ (วันละ 1-2 ชม.) — รวมลงมือทำ (basic จริง ๆ อาจใช้ 16-20 สัปดาห์)

เคยทำ microservices แล้วแต่ยังไม่ลึก

  • เริ่มจาก 01 — Decomposition เพื่อปรับ mindset
  • ไปบท 06-12 ทั้งหมด (broker + stream)
  • จบที่บท 13-15 (resilience + data + tracing)

มาเพื่อสัมภาษณ์งาน senior backend / SRE

  • อ่าน 00, 01, 02, 06, 08 (Kafka), 12 (saga), 13 (resilience), 14 (CQRS/ES), 15 (tracing)
  • ฝึก draw diagram + อธิบาย trade-off ตอนสัมภาษณ์

มาเพื่อใช้ Kafka / RabbitMQ ในงานจริง

  • 06 (fundamentals) → 07 หรือ 08 → 12 (pattern) → 15 (tracing)

สิ่งที่จะใช้ในเล่มนี้ (เครื่องมือ)

ประเภทตัวอย่าง
LanguagesJava 21 (Spring Boot 3), Go 1.22, Node.js 20 (NestJS) — เพื่อแสดง polyglot
BrokersRabbitMQ 4.x (Khepri metadata store), Apache Kafka 4.0 (KRaft mode, ZooKeeper removed), Redis 7, NATS JetStream, Pulsar 3
SchemaApache Avro, Protocol Buffers, JSON Schema, Confluent Schema Registry
Stream ProcessingKafka Streams, Apache Flink 1.18, ksqlDB
Service MeshIstio 1.22, Linkerd 2.18+, Envoy
GatewaySpring Cloud Gateway, Kong 3, Envoy Gateway
Discovery/ConfigEureka, Consul, etcd, Spring Cloud Config
TracingOpenTelemetry, Jaeger, Grafana Tempo
DeploymentDocker, Kubernetes, Helm, Argo CD, Flux
Feature FlagOpenFeature (CNCF standard) + Unleash (open source) / LaunchDarkly (SaaS) / flagd (providers)
CDCDebezium 3.x (2026 baseline)
ResilienceResilience4j (Java), gobreaker (Go)

หลายตัวเป็น optional — เลือกตามที่ทีมคุณใช้ แต่หนังสือเล่มนี้สอนทั้งหมดเพื่อให้ "เห็นภาพ landscape" และเปลี่ยน tool ได้

Feature → Minimum Version (สำคัญสำหรับ Production)

📌 ตารางนี้สำหรับผู้อ่านที่จะ deploy production จริง — มือใหม่ที่กำลังเรียนรู้แนวคิดยังไม่ต้องจำตัวเลขเวอร์ชัน อ่านบทเนื้อหาแล้วค่อยกลับมาดูตารางนี้ก่อนทำ production จริงได้

ตารางนี้ช่วยตรวจว่า feature ในเนื้อหาต้องเวอร์ชันไหน — pin ใน production ตามนี้ก่อนใช้

📅 ตารางนี้สถานะ ณ 2026-06 — ตรวจ release notes ทางการก่อนใช้จริงเสมอ (เวอร์ชันขยับเร็วโดยเฉพาะ Kafka, Istio, Spring Cloud)

Featureเวอร์ชันต่ำสุดบทที่อ้างหมายเหตุ
Kafka KRaft modeKafka 3.3 GA, 4.0 = removes ZooKeeper08production ใช้ 4.0+ ถ้าเริ่มใหม่
Kafka KIP-848 (new rebalance)Kafka 4.0 default08early-access ใน 3.7
Kafka KIP-932 (Share Groups)Preview ใน 4.0 (ณ 2026-06 ยัง preview — ตรวจ release notes ก่อนใช้)06, 08ห้ามใช้ใน production จนกว่า GA
Kafka Tiered Storage3.6 preview, 3.9 GA08production-ready ใน 4.0
Istio Ambient mode1.22 GA (May 2024)17sidecar ยัง support คู่
Linkerd CNCF graduated2.10+ ตั้งแต่ 202117mature
Cilium Service Mesh1.14+ GA (2023)17ต้อง Cilium CNI
Spring Cloud Gateway MVC2024.0+ (servlet stack)04ตรวจ default ใน 2026 release
Spring Cloud Netflix Eurekamaintenance mode ตั้งแต่ 2018, deprecated for new projects 202405ใช้ K8s DNS แทน
Resilience4j2.x (Spring Boot 3)13Hystrix EOL 2018
OpenTelemetry LogsStable 202315Logs GA; Profiling ยังไม่ GA
OpenTelemetry Profiling signalDevelopment phase (2024+) — partial SDK support, ยังไม่ GA across SDKs15Pyroscope/Grafana integration available — ตรวจ status ก่อน production
Debezium2.7+12Postgres logical replication
OpenFeature CNCFsandbox 2023, incubating 202418vendor-neutral feature flag
Argo Rollouts1.6+ stable18progressive delivery
Temporal1.20+12workflow orchestration
SPIFFE/SPIRE CNCF graduated202216workload identity
HashiCorp BSL relicenseTerraform/Consul/Vault/Nomad Aug 202306 (devops), 17OpenTofu/OpenBao alternatives
AWS Free Plan (replaces Free Tier)Jul 2024devops 06บัญชีใหม่ใช้โครงสร้างนี้

Refresh cadence แนะนำ: ตรวจตารางนี้ Q1 ของทุกปี — Kafka/Istio release notes มักมี breaking change ที่ต้องอัปเดต


ความเชื่อมโยงกับหมวดอื่นในหนังสือ


คำเตือนสำคัญก่อนเริ่ม ⚠️

"Microservices ไม่ใช่เป้าหมาย แต่เป็นผลที่ตามมา" — คือเราไม่ได้ตั้งใจทำ microservices เพราะอยากทำ แต่ทำเพราะระบบโตจนจำเป็นต้องแยก

(ต้นฉบับภาษาอังกฤษ — Sam Newman: "Microservices is not a goal. It's a consequence.")

หลายทีมที่ผมเคยเจอย้ายไป microservices แล้ว เจ๊ง เพราะ:

  1. ไม่จำเป็น — app เล็ก team เล็ก แค่ 5 คน ทำ monolith ก็พอ
  2. ทีมยังไม่พร้อม — ไม่มี DevOps culture, ไม่มี CI/CD, ไม่มี observability
  3. decomposition ผิด — แตก service ตาม "เทคโนโลยี" (user-service, order-service) แทนที่จะตาม "domain"
  4. distributed monolith — ตัด service ออกแต่ทุกตัวยัง share database / deploy พร้อมกัน
  5. ไม่เข้าใจ network — สมมติว่า network reliable (ดู "8 fallacies of distributed computing" ในบท 00)

ถ้ายังไม่แน่ใจว่าควรใช้ microservices ไหม → อ่านบท 00 ก่อนทำอะไรทั้งสิ้น


← กลับสารบัญหลัก | ➡️ เริ่มอ่าน บทที่ 00: Microservices Mindset


🔤 Glossary · 📋 Style guide · 📅 last_verified: 2026-06-12