למה מודלים של דומיין חשובים יותר בעידן ה-AI

ארכיטקטורת תוכנה היא לעיתים קרובות ויכוח ללא מנצח. בונים מערכת אחת. לעולם לא בונים את החלופה באותם תנאים. זה הופך כל החלטה לבלתי ניתנת להפרכה. כשמערכת נכשלת, אנשים מאשימים את הדומיין או את הצוות. הם כמעט אף פעם לא מאשימים את הארכיטקטורה, כי אין קבוצת ביקורת להשוואה.

אנחנו זקוקים לדרך לבדוק את העיצובים שלנו. עלינו להפריד בין מורכבות מהותית (essential complexity) לבין מורכבות מקרית (accidental complexity). מורכבות מהותית היא הבעיה האמיתית. מורכבות מקרית היא הבלאגן שאנחנו יוצרים עם הכלים והתהליכים שלנו.

ה-AI הופך את המימוש לכמעט חינם. זהו שינוי עצום. בעבר, החיכוך שבכתיבת קוד אילץ מפתחים ליצור מבנים טובים יותר. אם הקוד שלך היה בלאגן, היה קשה לנהל אותו. הכאב הזה שימש כמעגל משוב.

ה-AI מסיר את החיכוך הזה. הוא יכול לכתוב קוד מבולגן ובעל מבנה לקוי באותה מהירות שבה הוא כותב קוד נקי. הכאב של מודל גרוע כבר לא פוגע במפתח במהלך ה-build. במקום זאת, הכאב עובר ל-production. אתם מקבלים נתונים פגומים ומשימות אינטגרציה בלתי אפשריות.

מודל דומיין עשיר (rich domain model) הוא כלי למניעת מצב זה. הוא מבצע שלושה תפקידים ספציפיים:

  • הוא עוזר לכם ללמוד את הדומיין על ידי אילוץ מתן צורה למושגים.
  • הוא מגדיר את הדומיין כך ש"מה לבנות" כבר לא יהיה ניחוש.
  • הוא מתעד את הדומיין בקוד שמתעדכן באופן שוטף באמצעות הקומפיילר.

כדי לעבוד, מודל דומיין חייב לעקוב אחר שלושה כללים:

  • שמרו על המורכבות המהותית שלמה. אל תפזרו מושג בודד על פני מאות מיקרו-שירותים (microservices).
  • ספקו משוב. הנחה שגויה צריכה לגרום לשגיאת קומפילציה (compile error), ולא לבאג שקוף.
  • שמרו על עלויות שינוי נמוכות. עליכם לתקן מושג במקום אחד, ולא לחפש אותו בעשרה שירותים שונים.

אם תפצלו את הדומיין שלכם מוקדם מדי למיקרו-שירותים כדי לפתור "ניפוח" (bloat), אתם לרוב רק מעבירים את הבלאגן. אתם מחליפים "god object" בודד בבלאגן מבוזר שקשה יותר לעקוב אחריו. תלות (dependency) שאינכם יכולים לראות היא תלות שתשבור את המערכת ב-production.

המטרה של מודל דומיין עשיר היא לא להיות צודקים. המטרה היא להפוך את הטעות לנראית בזמן שעלות התיקון עדיין קטנה.

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

קהילת למידה אופציונלית: https://t.me/GyaanSetuAi