ข้ามไปยังเนื้อหา

Glossary

EnglishThai Styleความหมาย
MicroserviceMicroserviceservice ขนาดเล็กที่ deploy ได้อิสระ รับผิดชอบ business capability เดียว
MonolithMonolithระบบที่ build และ deploy เป็นหน่วยเดียว
Serviceserviceunit ของ functionality ที่ทำงานเป็น process แยก
API GatewayAPI Gatewayจุดเข้าจุดเดียวที่รับ request จาก client แล้วส่งต่อไปยัง service
Service DiscoveryService Discoveryกลไกที่ service ค้นหาที่อยู่ของ service อื่นโดยอัตโนมัติ
Service MeshService Meshinfrastructure layer ที่จัดการ communication ระหว่าง service
SidecarSidecarproxy process ที่รันคู่กับ service เพื่อ handle cross-cutting concerns
Circuit BreakerCircuit Breakerpattern ที่หยุดส่ง request ไปยัง dependency ที่ล้มเหลว
SagaSagapattern สำหรับ distributed transaction ผ่าน sequence ของ local transaction
CQRSCQRSแยก read model (Query) ออกจาก write model (Command)
Event SourcingEvent Sourcingเก็บ state เป็น sequence ของ event แทนที่จะเก็บค่าปัจจุบัน
EnglishThai Styleความหมาย
Eventeventการแจ้งว่าบางอย่างเกิดขึ้นแล้ว — immutable fact
Event BusEvent Buschannel กลางที่ producer ส่ง event และ consumer รับ
Message BrokerMessage Brokerระบบกลางสำหรับส่ง message ระหว่าง service (Kafka, RabbitMQ)
Queuequeueโครงสร้างข้อมูลที่รับและส่ง message แบบ FIFO
Topictopicช่องทางใน message broker ที่ consumer สมัครรับ event
Consumerconsumerservice ที่รับและประมวลผล message จาก queue หรือ topic
Producerproducerservice ที่ส่ง message หรือ event ไปยัง broker
KafkaKafkadistributed streaming platform สำหรับ high-throughput event streaming
RabbitMQRabbitMQmessage broker ที่รองรับ AMQP protocol
EnglishThai Styleความหมาย
Containercontainerpackage ที่รวม application และ dependency ไว้ด้วยกัน (Docker)
DockerDockerplatform สำหรับสร้างและรัน container
KubernetesKubernetesระบบ orchestration สำหรับจัดการ container ใน cluster
Podpodunit ที่เล็กที่สุดที่ Kubernetes deploy — กลุ่มของ container
DeploymentdeploymentKubernetes resource ที่กำหนดว่าจะรัน pod กี่ replica
Replicareplicaสำเนาของ pod ที่รันพร้อมกันเพื่อ availability และ scaling
Clusterclusterกลุ่มของ node ที่ Kubernetes ใช้รัน workload
Namespacenamespacepartition เสมือนใน Kubernetes cluster สำหรับแยก environment
Sidecarsidecarcontainer ที่รันคู่กับ main container ใน pod เดียวกัน
EnglishThai Styleความหมาย
Observabilityobservabilityความสามารถในการเข้าใจ state ของระบบจาก output ที่สังเกตได้
Metricsmetricsข้อมูลตัวเลขที่วัดได้ตลอดเวลา (latency, error rate, throughput)
Loggingloggingบันทึก event ที่เกิดขึ้นใน service พร้อม timestamp
Tracingtracingติดตาม request ที่ข้าม service หลายตัว (distributed tracing)
Telemetrytelemetryข้อมูล metrics, logs, traces ที่ส่งจาก service
EnglishThai Styleความหมาย
Resilienceresilienceความสามารถของระบบในการทำงานต่อไปได้แม้มีส่วนที่ล้มเหลว
Fault Tolerancefault toleranceความสามารถในการรับมือกับ failure โดยไม่กระทบ availability
Bulkheadbulkheadแยก resource pool เพื่อป้องกัน failure cascade
Retryretryลองส่ง request ใหม่เมื่อครั้งแรกล้มเหลว
Timeouttimeoutจำกัดเวลารอ response จาก dependency
Rate Limitingrate limitingจำกัดจำนวน request ต่อช่วงเวลาเพื่อป้องกัน overload
Englishความหมาย
Decompose by Business Capabilityแบ่ง service ตาม business capability ขององค์กร
Decompose by Subdomainแบ่ง service ตาม domain model (DDD)
Database per Serviceแต่ละ service มี database เป็นของตัวเอง
API Compositionรวมผลลัพธ์จากหลาย service ใน application layer
Transactional Outboxเขียน event ลง database ในธุรกรรมเดียวกับ business data
Saga Patternจัดการ distributed transaction ผ่าน event chain
Backends for FrontendsAPI Gateway เฉพาะสำหรับแต่ละ client type
Self-contained Serviceservice ที่ตอบสนอง request ได้เองโดยไม่ต้องเรียก service อื่น synchronously
Architectureข้อดีข้อเสีย
Monolithเรียบง่าย ง่ายต่อการ develop และ testscale ทั้งหมดหรือไม่ scale เลย, deploy ช้า, team ชนกัน
Modular Monolithแยก concern ชัด ยัง deploy เป็นหน่วยเดียวยัง deploy พร้อมกัน, scaling ยังจำกัด
Microservicesscale อิสระ, deploy อิสระ, team autonomyinfrastructure ซับซ้อน, distributed system, operational cost สูง
Event-Drivenloose coupling, async, ทนต่อ spikeeventual consistency, debug ยาก, ordering ยุ่ง
  • ทีมขนาดเล็ก (ต่ำกว่า 5 คน) — overhead สูงกว่าคุณค่าที่ได้
  • ยังไม่รู้ domain ดีพอ — แบ่ง boundary ผิดแล้วแก้ยาก
  • ไม่มี DevOps maturity — Kubernetes, monitoring, CI/CD ต้องพร้อม
  • ต้องการ strong consistency ตลอด — distributed transaction ซับซ้อนมาก
  • MVP หรือ prototype — เริ่มด้วย Monolith แล้วค่อย extract