Giới thiệu
Trong lĩnh vực phát triển phần mềm, nhiều developer chỉ quan tâm đến việc viết code hoàn chỉnh và tối ưu. Tuy nhiên, Domain-Driven Design (DDD) nhắc nhở rằng để thiết kế hệ thống tốt, trước hết ta cần hiểu vấn đề của doanh nghiệp và môi trường vận hành của nó. Đó là lý do tại sao việc phân tích chiến lược doanh nghiệp là bước đầu tiên trong thiết kế phần mềm theo hướng DDD.
Business Domain là gì?
Business Domain được hiểu là khu vực hoạt động chính của doanh nghiệp, nơi doanh nghiệp tạo ra giá trị cho khách hàng. Ví dụ:
- FedEx hoạt động trong lĩnh vực giao nhận.
- Starbucks kinh doanh cà phê.
- Amazon bao gồm bán lẻ và điện toán đám mây.
Business Domain có thể thay đổi theo thời gian như trường hợp của Nokia.
Subdomain và 3 loại Subdomain trong DDD
Một Business Domain bao gồm nhiều Subdomain (miền con), tương ứng với các chức năng chi tiết hơn trong hoạt động kinh doanh.
DDD chia Subdomain thành 3 loại:
a. Core Subdomain
- Là nơi doanh nghiệp tạo sự khác biệt.
- Có tính phức tạp cao.
- Yêu cầu đổi ngũ giỏi nhất.
- Ví dụ: Thuật toán xếp hạng tìm kiếm của Google.
b. Generic Subdomain
- Có tính ứng dụng phổ biến, ít thay đổi.
- Không tạo ra lợi thế cạnh tranh.
- Nên sử dụng giải pháp sẵn có (Open source, SaaS).
- Ví dụ: Xác thực người dùng, thanh toán.
c. Supporting Subdomain
- Hỗ trợ các miền chính.
- Logic đơn giản (CRUD).
- Thường được outsource.
- Ví dụ: Module quản lý khuyến mãi.
So sánh ba loại Subdomain
Loại Subdomain | Lợi thế cạnh tranh | Độ phức tạp | Thay đổi nhiều? | Triển khai |
---|---|---|---|---|
Core | Có | Cao | Cao | In-house |
Generic | Không | Cao | Trung bình | Mua/sử dụng |
Supporting | Không | Thấp | Thấp | Outsource |
Chiến lược đề xuất
- Core Subdomain: phải do đội ngũ giỏi nhất thực hiện, đầu tư nhiều.
- Generic Subdomain: tốt nhất là sử dụng giải pháp có sẵn.
- Supporting Subdomain: triển khai nhanh, có thể thuê ngoài.
Ví dụ minh họa
Gigmaster (bán vé nhạc):
- Core: Recommendation engine, UX mobile, Ẩn danh dữ liệu.
- Generic: Kế toán, xác thực.
- Supporting: Đồng bộ dữ liệu nhạc, mạng xã hội.
BusVNext (vận tải):
- Core: Thuật toán tuyến xe, điều phối xe, UX app.
- Generic: Dữ liệu giao thông, thanh toán.
- Supporting: Module khuyến mãi.
Ai là Domain Expert?
- Chuyên gia về nghiệp vụ.
- Người ra yêu cầu hoặc người sử dụng hệ thống.
- Không nhất thiết là dev hay BA.
Kết luận
Việc phân tích và xác định đúng loại Subdomain là yếu tốt quan trọng giúp bạn vừa thiết kế tốt hơn, vừa hiểu hơn vai trò của phần mềm trong tổ chức thực.
Xem phần tiếp theo tại: DDD [Part 2]: Giao tiếp và Ngôn ngữ chung trong Domain-Driven Design
Để lại một bình luận
Bạn phải đăng nhập để gửi bình luận.