🧠 คำย่อสำคัญใน System Design
ภาพนี้สรุปคำย่อที่ใช้บ่อยในงานออกแบบระบบซอฟต์แวร์ โดยแยกเป็น 4 กลุ่มหลัก ได้แก่ CAP, BASE, SOLID และ KISS ซึ่งแต่ละกลุ่มมีจุดประสงค์เฉพาะในด้านความถูกต้อง ความทนทาน หรือความเรียบง่ายในการพัฒนา
🟪 1. CAP Theorem
CAP = Consistency, Availability, Partition Tolerance
ตัวอักษร | ความหมาย |
---|---|
C | ข้อมูลต้องตรงกันในทุก node (Consistency) |
A | ระบบต้องตอบกลับได้เสมอ (Availability) |
P | ระบบต้องทนทานต่อการล่มของบางส่วนของเครือข่าย (Partition Tolerance) |
ไม่สามารถมีทั้ง 3 พร้อมกันได้ในระบบเดียว ต้องเลือก 2 อย่างเสมอ
ทางเลือก | ความหมาย |
---|---|
CA | เหมาะกับระบบ local ที่ไม่มี partition |
CP | ระบบแม่นยำแต่บางครั้งอาจไม่ตอบ |
AP | ระบบเร็ว ตอบกลับได้แม้ข้อมูลอาจยังไม่ตรง |
🟦 2. BASE (ใช้ใน NoSQL)
BASE = Basically Available, Soft State, Eventual Consistency
ตัวอักษร | ความหมาย |
---|---|
BA | ระบบตอบกลับได้ แม้ข้อมูลไม่สมบูรณ์ |
S | สถานะของระบบอาจเปลี่ยนได้แม้ไม่มี input |
E | ข้อมูลจะตรงกันในที่สุด (ไม่ต้องทันที) |
- ใช้ใน NoSQL systems เช่น Cassandra, DynamoDB
- ตรงข้ามกับ ACID ที่เน้นความถูกต้องทันที
🟩 3. SOLID Principles
หลักการเขียนโปรแกรมเชิงวัตถุให้ maintain ง่าย ยืดหยุ่น และ test ได้ง่าย
ตัวอักษร | หลักการ | ความหมาย |
---|---|---|
S | Single Responsibility | 1 class/ฟังก์ชันควรมีหน้าที่เดียว |
O | Open/Closed Principle | เปิดให้ขยาย แต่ปิดการแก้ไข |
L | Liskov Substitution | subclass ควรแทน superclass ได้โดยไม่พัง |
I | Interface Segregation | แยก interface ให้เฉพาะเจาะจง |
D | Dependency Inversion | พึ่งพา abstraction แทน implementation |
🟨 4. KISS Principle
KISS = Keep It Simple, Stupid
- หลักคิดในการออกแบบให้ระบบเรียบง่าย
- อย่าทำให้ซับซ้อนถ้าไม่จำเป็น
- เน้นให้เข้าใจง่าย ใช้งานได้จริงตามความต้องการของผู้ใช้
ตัวอย่าง:
🔧 มีดพับที่ใช้งานง่าย ตรงตามความต้องการของผู้ใช้ ดีกว่ามีดพับที่มีทุกอย่างแต่ใช้งานลำบาก
✅ สรุปเปรียบเทียบ
คำย่อ | จุดประสงค์ | ตัวอย่างการใช้งาน |
---|---|---|
CAP | Trade-off ใน distributed system | เลือก availability หรือ consistency |
BASE | ความยืดหยุ่นใน NoSQL | ระบบที่เน้น performance มากกว่า consistency |
SOLID | เขียนโค้ดให้ขยาย/ทดสอบง่าย | Class/component ที่ maintain ได้ดี |
KISS | ออกแบบเรียบง่าย | UI/UX หรือ business logic |