สไตล์การออกแบบสถาปัตยกรรมซอฟต์แวร์ (Software Architecture Styles) ช่วยกำหนดรูปแบบและหลักการในการออกแบบระบบให้มีความเหมาะสมกับปัญหาที่ต้องการแก้ ด้านล่างคือสรุปสไตล์ยอดนิยม พร้อม Use Cases ของแต่ละแบบ
🟦 1. Layered Architecture (n-tier)
แนวคิด: แบ่งระบบเป็นชั้น เช่น Presentation, Business, Data Access
Use Case:
- เว็บแอปพลิเคชันทั่วไป
- ระบบบัญชี/ERP
- Legacy systems ที่ต้องการแยก logic ชัดเจน
✅ เหมาะกับทีมที่มีการแยกหน้าที่กันชัดเจน (frontend/backend)
🟥 2. Microkernel Architecture (Plugin-based)
แนวคิด: มีแกนหลักเล็ก ๆ (core) แล้วเสริมความสามารถด้วย plugin
Use Case:
- โปรแกรมที่ต้องรองรับ plugin เช่น VSCode, IDE, Media Player
- ระบบที่ต้องการเปิดให้บุคคลภายนอกเสริมฟีเจอร์เองได้
✅ เหมาะกับระบบที่ต้องเปลี่ยนฟังก์ชันได้โดยไม่รบกวน core
🟪 3. Microservices Architecture
แนวคิด: แยกแอปออกเป็น service ย่อย ที่ deploy และ scale ได้อิสระ
Use Case:
- แพลตฟอร์ม e-commerce ขนาดใหญ่
- ระบบ backend สำหรับ mobile apps ที่ต้องแยก feature
- FinTech หรือ SaaS ที่ต้องรองรับหลายทีม
✅ เหมาะกับระบบที่ซับซ้อนและเติบโตเร็ว
🟨 4. Space-Based Architecture
แนวคิด: กระจายข้อมูลและโหลดให้หลาย node ลด bottleneck
Use Case:
- ระบบจองตั๋วหรือการซื้อขายแบบ real-time
- ระบบที่ต้องรองรับผู้ใช้พร้อมกันหลายแสนราย
- เกม MMO หรือการประมวลผลสูง
✅ เหมาะกับระบบที่มี data throughput สูงและต้องการ low latency
🟩 5. Domain-Driven Design (DDD)
แนวคิด: ออกแบบซอฟต์แวร์จากมุมมองของ business domain
Use Case:
- ระบบธนาคาร / ระบบประกันภัย
- ระบบที่มีกฎทางธุรกิจซับซ้อน เช่น CRM, ERP
- แพลตฟอร์ม B2B ที่ต้อง mapping domain หลายแบบ
✅ เหมาะกับโปรเจกต์ที่ทำร่วมกับ domain expert
🔄 6. Event-Driven Architecture
แนวคิด: ใช้ Event เป็นตัวกระตุ้นการทำงานของระบบ
Use Case:
- ระบบแจ้งเตือน (notification system)
- ระบบ IoT หรือ sensor data processing
- ระบบ E-commerce ที่ต้อง handle order, stock, delivery แบบ async
✅ เหมาะกับระบบที่ทำงานแบบ reactive, loosely coupled
🧩 7. MVP Architecture (Model-View-Presenter)
แนวคิด: แยก UI, Business Logic, และ Data Access ออกจากกัน
Use Case:
- Mobile app (Android, Flutter)
- Desktop application ที่เน้น UI interaction
✅ เหมาะกับ frontend-heavy apps ที่ต้องการ test ง่าย
🧠 8. Orchestration Architecture
แนวคิด: มีตัวควบคุมกลาง (orchestrator) กำกับการทำงานของ services
Use Case:
- Workflow Automation (เช่น Camunda, BPMN)
- ระบบจัดการคำสั่งซื้อที่ต้องควบคุมหลาย service ทำงานร่วมกัน
- Integration Platform เช่น Apache Airflow
✅ เหมาะกับ use case ที่ต้องมีการควบคุมลำดับงาน/การประสานหลาย service
📚 9. CQRS Architecture
แนวคิด: แยกการอ่าน (Query) และเขียน (Command) ออกจากกัน
Use Case:
- ระบบที่อ่านเยอะ เขียนน้อย หรือแยก logic การทำงาน
- ระบบ financial ledger, ระบบ Event Sourcing
- ระบบที่ต้องการ audit history ทุกการเปลี่ยนแปลง
✅ เหมาะกับระบบที่ต้อง scale การอ่านและเขียนต่างกัน
🧪 อื่น ๆ (ในวงล้อกลาง)
Style | Use Case |
---|---|
Pipe-and-Filter | ระบบแปลงข้อมูลแบบเป็นขั้นตอน เช่น data pipeline |
Client-Server | เว็บแอปทั่วไป, REST API |
Peer-to-Peer | BitTorrent, Blockchain |
SOA (Service-Oriented) | ระบบองค์กรใหญ่ที่ใช้ ESB |
🔚 สรุปแนะนำเบื้องต้น
เป้าหมายหลัก | Architecture ที่ควรใช้ |
---|---|
โครงสร้างชัด, ทั่วไป | Layered |
ระบบใหญ่, หลายทีม | Microservices |
จัดการเหตุการณ์/ประมวลผล async | Event-Driven |
ประสิทธิภาพสูง/โหลดเยอะ | Space-Based |
มองจาก business logic | DDD |
ระบบปลั๊กอิน | Microkernel |
Mobile UI | MVP |
ควบคุม flow หลาย service | Orchestration |
แยก read/write ชัดเจน | CQRS |