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

సాఫ్ట్‌వేర్ ఆర్కిటెక్చర్ అనేది తరచుగా విజేత లేని చర్చగా మిగిలిపోతుంది. మీరు ఒక వ్యవస్థను నిర్మిస్తారు. అదే పరిస్థితులలో మీరు ప్రత్యామ్నాయ వ్యవస్థను ఎప్పుడూ నిర్మించరు. దీనివల్ల ప్రతి నిర్ణయం కూడా తప్పు అని నిరూపించలేనిదిగా మారుతుంది. ఒక వ్యవస్థ విఫలమైనప్పుడు, ప్రజలు డొమైన్‌ను లేదా టీమ్‌ను నిందిస్తారు. ఆర్కిటెక్చర్‌ను ఎవరూ నిందించరు, ఎందుకంటే దానితో పోల్చడానికి ఎటువంటి కంట్రోల్ గ్రూప్ (control group) ఉండదు.

మన డిజైన్‌లను పరీక్షించడానికి మనకు ఒక మార్గం కావాలి. మనం ఎసెన్షియల్ కాంప్లెక్సిటీ (essential complexity)ని యాక్సిడెంటల్ కాంప్లెక్సిటీ (accidental complexity) నుండి వేరు చేయాలి. ఎసెన్షియల్ కాంప్లెక్సిటీ అనేది అసలైన సమస్య. యాక్సిడెంటల్ కాంప్లెక్సిటీ అనేది మన సాధనాలు మరియు ప్రక్రియల వల్ల మనం సృష్టించే గందరగోళం.

AI వల్ల ఇంప్లిమెంటేషన్ (implementation) దాదాపు ఉచితం అయిపోయింది. ఇది ఒక భారీ మార్పు. గతంలో, కోడ్ రాయడంలో ఉండే కష్టాలు డెవలపర్లు మెరుగైన నిర్మాణాలను (structures) రూపొందించేలా ప్రేరేపించేవి. మీ కోడ్ గందరగోళంగా ఉంటే, దానిని నిర్వహించడం కష్టమయ్యేది. ఆ కష్టమే ఒక ఫీడ్‌బ్యాక్ లూప్‌గా పనిచేసేది.

AI ఆ కష్టాన్ని తొలగిస్తుంది. ఇది క్లీన్ కోడ్ ఎంత వేగంగా రాయగలదో, అంతే వేగంగా గందరగోళంగా, సరిగ్గా లేని నిర్మాణంతో కూడిన కోడ్‌ను కూడా రాయగలదు. ఒక చెడు మోడల్ వల్ల కలిగే ఇబ్బంది ఇక డెవలపర్‌కు బిల్డ్ (build) సమయంలో ఎదురుకాదు. దానికి బదులుగా, ఆ ఇబ్బంది ప్రొడక్షన్ (production) దశకు చేరుతుంది. దీనివల్ల డేటా కరప్ట్ అవ్వడం మరియు అసాధ్యమైన ఇంటిగ్రేషన్ పనులు ఎదురవుతాయి.

దీనిని నివారించడానికి ఒక రిచ్ డొమైన్ మోడల్ (rich domain model) ఒక సాధనంగా పనిచేస్తుంది. ఇది మూడు నిర్దిష్ట పనులను చేస్తుంది:

  • ఇది కాన్సెప్ట్‌లకు ఒక రూపాన్ని ఇవ్వమని మిమ్మల్ని ప్రేరేపించడం ద్వారా, మీరు డొమైన్‌ను నేర్చుకోవడానికి సహాయపడుతుంది.
  • ఇది డొమైన్‌ను నిర్వచిస్తుంది, తద్వారా "ఏమి నిర్మించాలి" అనేది ఇక ఊహగా మిగిలిపోదు.
  • ఇది కోడ్ రూపంలో డొమైన్‌ను డాక్యుమెంట్ చేస్తుంది, ఇది కంపైలర్ (compiler) ద్వారా ఎప్పటికప్పుడు అప్‌డేట్‌గా ఉంటుంది.

పని చేయాలంటే, డొమైన్ మోడల్ మూడు నియమాలను పాటించాలి:

  • ఎసెన్షియల్ కాంప్లెక్సిటీని సమగ్రంగా ఉంచండి. ఒకే కాన్సెప్ట్‌ను వందలాది మైక్రోసర్వీసుల (microservices) మధ్య చెల్లాచెదురు చేయకండి.
  • ఫీడ్‌బ్యాక్ అందించండి. ఒక తప్పు అంచనా వల్ల సైలెంట్ బగ్ (silent bug) కాకుండా, కంపైల్ ఎర్రర్ (compile error) రావాలి.
  • మార్పులను తక్కువ ఖర్చుతో చేసేలా చూడండి. మీరు ఒక కాన్సెప్ట్‌ను ఒకే చోట సరిచేయగలగాలి, పది సర్వీసుల కోసం వెతకాల్సిన అవసరం ఉండకూడదు.

"బ్లోట్" (bloat)ను పరిష్కరించడానికి మీరు మీ డొమైన్‌ను చాలా త్వరగా మైక్రోసర్వీసులుగా విభజిస్తే, మీరు తరచుగా కేవలం గందరగోళాన్ని ఒక చోటు నుండి మరో చోటుకు మారుస్తున్నట్లు అవుతుంది. మీరు ఒకే "గాడ్ ఆబ్జెక్ట్" (god object)కు బదులుగా, ట్రాక్ చేయడం కష్టమైన ఒక డిస్ట్రిబ్యూటెడ్ గందరగోళాన్ని పొందుతారు. మీకు కనిపించని డిపెండెన్సీ (dependency) అనేది ప్రొడక్షన్‌లో విఫలమయ్యే డిపెండెన్సీ అవుతుంది.

రిచ్ డొమైన్ మోడల్ యొక్క లక్ష్యం ఎప్పుడూ సరైనదిగా ఉండటం కాదు. తప్పు జరిగినప్పుడు, దానిని సరిదిద్దే ఖర్చు తక్కువగా ఉన్నప్పుడే ఆ తప్పును స్పష్టంగా కనిపించేలా చేయడమే దీని లక్ష్యం.

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