🧠 คำย่อสำคัญใน 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 |