Tôi có thể cho bạn một ví dụ khác. Hãy xem xét bạn có một số hệ thống thương mại điện tử. Bạn sẽ có sản phẩm ở đó, tuy nhiên sản phẩm sẽ là một phần của ít nhất hai miền khác nhau:
- Danh mục sản phẩm, nơi bạn giữ mô tả sản phẩm của mình và tất cả các thuộc tính
- Hàng tồn kho, nơi bạn có mức tồn kho sản phẩm
Nếu bạn có một bối cảnh giới hạn cho cả hai miền, giải pháp của bạn có thể nhanh chóng trở thành một quả bóng lớn bởi vì bạn sẽ bắt đầu tham khảo chéo nó. Cuối cùng, bạn sẽ không có hai tên miền nữa. Hàng tồn kho sản phẩm của bạn sẽ được tha hồ tham khảo danh mục sản phẩm và ngược lại. Vì kết quả của việc này, bạn sẽ không thể thay đổi một tên miền mà không chạm vào tên miền khác ngay cả khi bạn hoàn toàn nhận ra điều này là không bắt buộc. Các mô hình của bạn trở nên phụ thuộc lẫn nhau và liên kết chặt chẽ, và phụ thuộc theo chiều hướng xấu - bị phụ thuộc vào việc thực hiện.
Tuy nhiên, nếu bạn có hai bối cảnh bị ràng buộc, tất cả các thay đổi bạn thực hiện trong một tên miền sẽ không ảnh hưởng đến vùng kia ngay khi bạn giữ cho các kênh liên lạc của mình rõ ràng. Điều đó có nghĩa là bạn cần phải sao chép dữ liệu nhưng đây là chi phí ít nhất để trả cho ứng dụng dựa trên thành phần được ghép nối một cách mất mát. Các miền của bạn có thể nói chuyện với nhau bằng các sự kiện tên miền. Ngay cả khi bạn không có kế hoạch để có ứng dụng dựa trên SOA ngay từ đầu, bạn sẽ có thể mở rộng đến mức đó khi bạn cần với nỗ lực tương đối thấp vì bạn chỉ thay đổi vận chuyển cho các sự kiện trong miền của mình, giữ nguyên ý tưởng phía sau.
Cập nhật: Có một kỹ năng tốt trên SkillMatter, từ Eric Evans. Ông đưa ra một sự tương tự của câu chuyện cũ, khi một số người mù mô tả một con voi từ quan điểm của họ. Vì mỗi người chỉ có thể chạm vào một phần của con voi, nên họ mô tả nó như một "cái cây", "bức tường", "con rắn", "sợi dây". Và mỗi người trong số họ là đúng trong bối cảnh của họ. Bối cảnh bị ràng buộc là nơi ngôn ngữ phổ biến sống. Bên ngoài bối cảnh, các thuật ngữ này có thể có ý nghĩa hoàn toàn khác nhau nhưng bên trong bối cảnh, ngôn ngữ giống nhau trên nhiều lĩnh vực. Greg Young mạnh mẽ đề nghị bắt đầu đọc cuốn sách màu xanh từ chương 11, vì các khái niệm cơ bản, quan trọng nhất được giải thích ở đó. Việc tập trung vào các mẫu chiến thuật ở phần đầu của cuốn sách khiến cho cách tiếp cận "ánh sáng DDD" này trở nên rất phổ biến,