คืออะไร Domain-Driven Design
การออกแบบตาม domain ธุรกิจ
DDD คืออะไร
Domain-Driven Design (DDD) คือแนวทางการพัฒนาซอฟต์แวร์ที่เน้นการสร้างโมเดลโดเมนธุรกิจและการทำงานร่วมกันอย่างใกล้ชิดระหว่างนักพัฒนาและผู้เชี่ยวชาญโดเมน
การออกแบบเชิงกลยุทธ์
| แนวคิด | คำอธิบาย | |--------|----------| | Bounded Context | ขอบเขตโมเดลพร้อมภาษาร่วม | | Ubiquitous Language | ภาษาร่วมของทีมและธุรกิจ | | Context Map | แผนที่ความสัมพันธ์ระหว่าง contexts | | Subdomain | subdomain (Core/Supporting/Generic) |
การออกแบบเชิงยุทธวิธี
| Pattern | วัตถุประสงค์ | |---------|-------------| | Entity | object ที่มี identity | | Value Object | value object ที่ไม่เปลี่ยนแปลง | | Aggregate | กลุ่มของ entities ที่เกี่ยวข้อง | | Aggregate Root | จุดเข้า aggregate | | Repository | การเข้าถึง aggregates | | Domain Service | business logic นอก entities | | Domain Event | event ใน domain | | Factory | การสร้าง object ที่ซับซ้อน |
ประเภท Subdomains
- Core Domain — ความได้เปรียบทางการแข่งขัน
- Supporting Subdomain — สนับสนุน core
- Generic Subdomain — โซลูชันมาตรฐาน
Integration Patterns
| Pattern | คำอธิบาย | |---------|----------| | Shared Kernel | core ที่ใช้ร่วมกันระหว่าง contexts | | Customer-Supplier | ความสัมพันธ์ลูกค้า-ผู้จัดหา | | Conformist | ปฏิบัติตามโมเดล upstream | | Anticorruption Layer | ป้องกันจากโมเดลภายนอก | | Open Host Service | API สาธารณะของ context |
เมื่อไหร่ควรใช้ DDD
- business logic ที่ซับซ้อน
- โปรเจกต์ระยะยาว
- เข้าถึงผู้เชี่ยวชาญโดเมนได้
- ทีมพร้อมลงทุนในการออกแบบ