𝗪𝗵𝘆 𝗗𝗼𝗺𝗮𝗶𝗻 𝗠𝗼𝗱𝗲𝗹𝘀 𝗠𝗮𝘁𝘁𝗲𝗿 𝗠𝗼𝗿𝗲 𝗶𝗻 𝘁𝗵𝗲 𝗔𝗜 𝗘𝗿𝗮

Kiến trúc phần mềm thường là một cuộc tranh luận không có người thắng. Bạn xây dựng một hệ thống. Bạn không bao giờ xây dựng phương án thay thế trong cùng một điều kiện. Điều này khiến mọi quyết định đều không thể kiểm chứng được tính đúng sai. Khi một hệ thống thất bại, người ta đổ lỗi cho lĩnh vực (domain) hoặc đội ngũ. Họ hiếm khi đổ lỗi cho kiến trúc vì không có nhóm đối chứng để so sánh.

Chúng ta cần một cách để kiểm tra các thiết kế của mình. Chúng ta phải tách biệt độ phức tạp cốt lõi (essential complexity) khỏi độ phức tạp ngẫu nhiên (accidental complexity). Độ phức tạp cốt lõi là vấn đề thực tế. Độ phức tạp ngẫu nhiên là mớ hỗn độn mà chúng ta tạo ra từ các công cụ và quy trình của mình.

AI khiến việc triển khai gần như trở nên miễn phí. Đây là một sự thay đổi khổng lồ. Trong quá khứ, rào cản của việc viết mã buộc các nhà phát triển phải tạo ra các cấu trúc tốt hơn. Nếu mã của bạn là một mớ hỗn độn, nó sẽ trở nên khó quản lý. Nỗi đau đó chính là một vòng lặp phản hồi.

AI loại bỏ rào cản đó. Nó có thể viết mã lộn xộn, cấu trúc kém cũng nhanh như viết mã sạch. Nỗi đau của một mô hình tồi không còn tác động đến nhà phát triển trong quá trình xây dựng nữa. Thay vào đó, nỗi đau đó chuyển sang giai đoạn vận hành (production). Bạn sẽ gặp phải dữ liệu bị lỗi và các tác vụ tích hợp bất khả thi.

Một mô hình miền phong phú (rich domain model) là một công cụ để ngăn chặn điều này. Nó thực hiện ba nhiệm vụ cụ thể:

  • Giúp bạn tìm hiểu về lĩnh vực bằng cách buộc bạn phải định hình các khái niệm.
  • Định nghĩa lĩnh vực để việc "xây dựng cái gì" không còn là một sự phỏng đoán.
  • Tài liệu hóa lĩnh vực bằng mã nguồn luôn được cập nhật thông qua trình biên dịch (compiler).

Để hoạt động hiệu quả, một mô hình miền phải tuân theo ba quy tắc:

  • Giữ nguyên độ phức tạp cốt lõi. Đừng phân tán một khái niệm duy nhất qua hàng trăm microservices.
  • Cung cấp phản hồi. Một giả định sai lầm nên gây ra lỗi biên dịch (compile error), chứ không phải một lỗi tiềm ẩn (silent bug).
  • Giữ cho việc thay đổi luôn rẻ. Bạn nên sửa một khái niệm ở một nơi duy nhất, thay vì phải đi tìm nó trong mười dịch vụ khác nhau.

Nếu bạn chia nhỏ lĩnh vực của mình quá sớm thành các microservices để giải quyết vấn đề "phình to" (bloat), bạn thường chỉ đang di chuyển mớ hỗn độn đó đi nơi khác. Bạn đánh đổi một "god object" duy nhất để lấy một mớ hỗn độn phân tán khó theo dõi hơn. Một sự phụ thuộc mà bạn không thể nhìn thấy là một sự phụ thuộc sẽ gây lỗi khi vận hành.

Mục tiêu của một mô hình miền phong phú không phải là để luôn đúng. Mục tiêu là làm cho những sai lầm trở nên hiển hiện trong khi chi phí sửa chữa vẫn còn nhỏ.

Source: https://dev.to/leonpennings/what-is-the-reason-for-using-a-rich-domain-model-in-the-age-of-ai-3gg

Optional learning community: https://t.me/GyaanSetuAi