2.7 KiB
2.7 KiB
Domain-Driven Design (DDD) là một phương pháp thiết kế và phát triển phần mềm tập trung vào nghiệp vụ (Domain) của một lĩnh vực đặc thù.
1. Domain (Lĩnh vực/Nghiệp vụ chính):
- Là nghiệp vụ chính mà hệ thống phần mềm cần giải quyết.
- Đây chính là trọng tâm của hệ thống và là nơi tạo ra giá trị lớn nhất cho doanh nghiệp.
2. Subdomain (Nghiệp vụ con):
- Là các thành phần nhỏ hơn của Domain, hỗ trợ việc xử lý nghiệp vụ.
- DDD chia Subdomains thành 3 loại chính:
| Loại Subdomain | Đặc điểm |
|---|---|
| Core Subdomain | - Nghiệp vụ cốt lõi, quan trọng nhất của hệ thống. - Tốn nhiều tài nguyên, thời gian và sáng tạo. - Mang lại giá trị độc nhất (Unique Value) cho doanh nghiệp. |
| Supporting Subdomain | - Hỗ trợ Core Subdomain, nhưng không phải trung tâm. - Có thể sử dụng giải pháp từ bên thứ ba hoặc thuê ngoài (outsourcing). |
| Generic Subdomain | - Là các nghiệp vụ chung mà bất kỳ công ty nào cũng cần. - Quan trọng, nhưng không tạo ra lợi thế cạnh tranh đặc biệt. |
3. Bounded Context (Ngữ cảnh giới hạn):
- Là ranh giới rõ ràng cho từng Subdomain trong hệ thống.
- Mỗi Bounded Context tập trung vào một phần nghiệp vụ cụ thể và có mô hình riêng.
- Các Context giao tiếp với nhau thông qua API hoặc sự kiện (event).
4. Ubiquitous Language (Ngôn ngữ chung):
- Là ngôn ngữ chung được cả đội ngũ kỹ thuật và chuyên gia nghiệp vụ sử dụng.
- Mục tiêu là để mọi người hiểu rõ ràng và nhất quán về nghiệp vụ và mô hình hệ thống.
Kết luận
DDD là một phương pháp thiết kế mạnh mẽ, đặc biệt phù hợp với các hệ thống phức tạp.
Nó giúp:
- Tập trung vào giá trị cốt lõi của nghiệp vụ.
- Tổ chức hệ thống rõ ràng với các Bounded Context.
- Đảm bảo sự phối hợp chặt chẽ giữa đội ngũ kỹ thuật và nghiệp vụ.
#develoment #tech #work