ආදරණීය තාක්ෂණික සංවර්ධකයන්, ඔබේ සේවා කේතයේ නීති (business rules) සෘජුවම ලියලා තිබේද? ඒවා වෙනත් ස්ථානයකට (external) ගෙන යාමට “නව සීම්” (seam) යෙදීමේ අදහස තේරුම් ගැනීමට මේ ලිපිය උදව් කරයි.
අද කාලයේ බොහෝ කණ්ඩායම් “නීති වෙන් කිරීම” කියන තීරණය තාක්ෂණික ස්택 එකකට (Node, Java) සම්බන්ධ කරයි. Node වල npm පැකේජයක් තෝරාගැනීම, Java වල Drools භාවිතය – මෙවැනි තීරණය නිර්මාණය කරන ලද සීමාව (seam) නිර්වචනය නොකළ තත්ත්වයකි. සීමාව කියන්නේ නීති දත්ත ලෙස පෙනෙන, සේවා හා නීති ස්ථරය අතර දෙපාර්ශ්වයම ටයිප් කරන, සහාය පරීක්ෂණයක් (contract test) මඟින් වෙනස්වීම් හඳුනාගන්නා ගමන් පද්ධතියයි.
මෙම සීමාව නිවැරදිව සැකසූ විට, ඔබ Node.js, TypeScript හෝ Spring Boot, Java යන භාෂාවකින් කතා කරනවාදැයි අඩු වැදගත් වේ. නමුත් සීමාව වැරදිව සැකසුවහොත්, ඔබේ if ප්රකාශනවලට config ගොනුවක් පමණක් එක් කර, “ප්රගතිය” කියලා කියලා යයි.
Node.js (TypeScript) උදාහරණය
ඉන්පූට් සහ ප්රතිඵල ටයිප් කර, නීති සේවා (rule client) වෙත evaluate() කාලය තුළ යැවීම. TypeScript සංකලනයේදී ටයිප් නොගැලපීම සලකුණු කරයි, සහ Zod වැනි රන්ටයිම් ස්කීමා පරීක්ෂණය කරයි. මෙයින් නීති වෙනස්වීම නිසා පාවිච්චි කරන්නේ නැති ගුණාංගයක් ආපසු එන අවස්ථාව වැළැක්විය හැක.
Java (Spring Boot) උදාහරණය
පැරණි කේතය if‑else ගොඩක් තිබුණා. නව ආකෘතියේදී PricingInput, PricingDecision යන ටයිප් කරන POJO ගොනුවක් නිර්මාණය කර, ruleClient.evaluate() මඟින් නීති ප්රතිඵල ලබා ගනී. සේවාව දැන් පමණක් දත්ත පරිවර්තනය කරන ලද ලේසි කේතයක්.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තරුණ සංවර්ධකයන්ට මෙම “සීම්” ආකෘතිය ඉගෙන ගැනීම, ජාත්යන්තර මට්ටමේ පරිසරයකට සූදානම් වීමට උපකාරී වේ. විශේෂයෙන්:
- ඉගෙනුම – නීති දත්ත ලෙස ගොඩනැගීම, TypeScript, Java වල ටයිප් සුරක්ෂිතතාවය පරීක්ෂා කිරීම, ක්රමලේඛන කුසලතා වැඩිදියුණු කරයි.
- ව්යාපාරික ලාභ – නීති වෙනස්කම් කේතය නැවත සංයුක්ත නොකර, වේගවත් නිකුත් කිරීම සහ අධික දෝෂ අවදානම අඩු කරයි.
- ආරක්ෂාව – නීති ලේයර් එකට සීමා (contract) පරීක්ෂණයක් ඇතිවීම, නිෂ්පාදන පරිසරයේ අහඹු බිඳවැටීම් වැළැක්වයි.
ඉදිරියේදී ශ්රී ලංකාවේ තාක්ෂණික ආයතන, ස්ට්රාට්-අප්ස්, සහ විශ්වවිද්යාල පර්යේෂණ කණ්ඩායම්, මෙම සීමා-මූලික ආකෘතිය අනුගමනය කර, දේශීය නවෝත්පාදන වේගය වැඩි කර ගත හැක.
අවසන් වශයෙන්, නීති “externalize” කිරීම යනු නව “rewrite” එකක් නොව, සේවාව හා නීති ලේයර් අතර “සීම්” එකක් නිර්මාණය කිරීමයි. එය නිවැරදිව සැකසුවහොත්, ඔබේ පද්ධතිය තදබල, පරිවර්තනයට සුදුසු, හා අනාගත වෙනස්කම්ට සූදානම් වේ.