කේත ලිවීමෙන් ඔබ්බට සිතීම
මේ වන විට, අපි ක්රියාත්මක වන මෘදුකාංගයක් නිර්මාණය කිරීමට අවශ්ය තාක්ෂණික කුසලතා රාශියක් ඉගෙන ගෙන ඇත. නමුත්, ක්රියාත්මක වන කේතයක් ලිවීම සහ හොඳ මෘදුකාංගයක් නිර්මාණය කිරීම අතර විශාල වෙනසක් ඇත. හොඳ මෘදුකාංගයක් යනු නඩත්තු කිරීමට පහසු, කාලයත් සමග වර්ධනය වන අවශ්යතා සඳහා පහසුවෙන් වෙනස් කළ හැකි (scalable), සහ අනෙකුත් සංවර්ධකයන්ට තේරුම් ගැනීමට පහසු එකකි.
මෙම ගුණාංග ලබා ගැනීමට අපට උපකාරී වන ඉහළ මට්ටමේ සංකල්ප දෙකක් තමයි ගෘහ නිර්මාණ ශිල්පය (Architecture) සහ සැලසුම් රටා (Design Patterns). මෙය හරියට නිවසක් තැනීම වැනිය:
- ගෘහ නිර්මාණ ශිල්පය: මෙය නිවසේ සමස්ත සැලැස්මයි. එය තනි මහලක්ද, මහල් නිවාස සංකීර්ණයක්ද, ප්රධාන ජල සහ විදුලි පද්ධති යන්නේ කොහෙන්ද වැනි මූලික තීරණ මීට අයත් වේ.
- සැලසුම් රටා: මේවා නිවස තුළ ඇති පොදු ගැටළු සඳහා වන ඔප්පු කරන ලද විසඳුම් වේ. උදාහරණයක් ලෙස, ආරක්ෂිත පඩිපෙළක් නිර්මාණය කරන ආකාරය, කාමරයක විදුලි පද්ධතිය සකසන ආකාරය වැනි දේ සඳහා සම්මත "රටා" ඇත.
මෘදුකාංග ගෘහ නිර්මාණ ශිල්පය (Software Architecture)
මෙය මෘදුකාංගයේ ඉහළම මට්ටමේ ව්යුහයයි. අපි ප්රධාන ගෘහ නිර්මාණ ශිල්පීය රටා දෙකක් සලකා බලමු.
1. ඒකලිතික ගෘහ නිර්මාණ ශිල්පය (Monolithic Architecture)
සම්ප්රදායික ක්රමයයි. මෙහිදී, යෙදුමේ සියලුම කොටස් (Frontend, Backend, Database logic) එකම, විශාල ඒකකයක් ලෙස නිර්මාණය කර, එකට deploy කරනු ලැබේ.
උපමාව: සෑම දෙයක්ම (ඇඳුම්, ඉලෙක්ට්රොනික උපකරණ, ආහාර) එකම වහලක් යට ඇති විශාල දෙපාර්තමේන්තු ගබඩාවක්.
වාසි: ආරම්භ කිරීමට සහ deploy කිරීමට පහසුය.
අවාසි: යෙදුම විශාල වන විට, කුඩා වෙනසක් කිරීම පවා සංකීර්ණ වේ. එක කොටසක ඇතිවන දෝෂයක්, සම්පූර්ණ යෙදුමම බිඳ වැටීමට හේතු විය හැක.
2. ක්ෂුද්ර සේවා ගෘහ නිර්මාණ ශිල්පය (Microservices Architecture)
නූතන ක්රමයයි. මෙහිදී, විශාල යෙදුම, කුඩා, ස්වාධීන සේවාවන් (services) කිහිපයකට කඩනු ලැබේ. සෑම සේවාවක්ම නිශ්චිත ව්යාපාරික කාර්යයක් සඳහා වගකිව යුතුය (උදා: User Service, Payment Service). මෙම සේවා API හරහා එකිනෙක සන්නිවේදනය කරයි.
උපමාව: විවිධ වෙළඳසැල් (services) ඇති විශාල සාප්පු සංකීර්ණයක්. එක් වෙළඳසැලක් අලුත්වැඩියා කරන විට, අනෙක් ඒවාට බලපෑමක් නැත.
වාසි: නම්යශීලී වේ. එක් සේවාවක් වෙනස් කිරීමට හෝ update කිරීමට පහසුය. එක් සේවාවක් බිඳ වැටුනද, අනෙක් සේවා දිගටම ක්රියාත්මක වේ.
අවාසි: කළමනාකරණයට සහ deploy කිරීමට වඩා සංකීර්ණ වේ.
සැලසුම් රටා (Design Patterns)
මේවා ක්රමලේඛනයේදී නිතර හමුවන පොදු ගැටළු සඳහා වන, නැවත නැවත භාවිතා කළ හැකි, ඔප්පු කරන ලද විසඳුම් වේ. ඒවා නිශ්චිත කේතයක් නොව, ගැටළුවක් විසඳිය යුතු ආකාරය පිළිබඳ මාර්ගෝපදේශයකි.
- MVC (Model-View-Controller) Pattern: යෙදුමේ දත්ත (Model), පරිශීලකයා දකින දේ (View), සහ පරිශීලක ආදාන හසුරුවන තර්කනය (Controller) එකිනෙකින් වෙන් කර තැබීමේ රටාවකි. මෙය ආපනශාලාවක මුළුතැන්ගෙය (Model), කෑම මේසය (View), සහ වේටර්වරයා (Controller) වැනිය.
- Singleton Pattern: යම් පන්තියකින් (class) නිර්මාණය කළ හැක්කේ එකම එක වස්තුවක් (object) පමණක් බවට සහතික වන රටාවකි. (උදා: දත්ත සමුදා සම්බන්ධතාවය - Database Connection).
- Factory Pattern: කුමන වර්ගයේ වස්තුවක් නිර්මාණය කළ යුතුද යන්න තීරණය කිරීමේ සංකීර්ණ තර්කනය, එම වස්තුව භාවිතා කරන කේතයෙන් වෙන් කර තබන රටාවකි.
අවසාන වශයෙන්
ගෘහ නිර්මාණ ශිල්පය සහ සැලසුම් රටා අවබෝධ කර ගැනීම, ඔබව හුදෙක් කේත ලියන්නෙකුගේ සිට, ශක්තිමත්, කල්පවතින සහ අලංකාර විසඳුම් නිර්මාණය කරන මෘදුකාංග ඉංජිනේරුවෙකු බවට පත් කරයි. එය "වැඩ කරන කේතය" සහ "හොඳින් නිර්මාණය කළ කේතය" අතර ඇති වෙනසයි.
දැන් අපි හොඳින් ව්යුහගත කළ මෘදුකාංගයක් නිර්මාණය කර ඇති නිසා, ඊළඟට අප මුහුණ දෙන අභියෝගය වන්නේ, මෙම මෘදුකාංගය සංවර්ධකයාගේ පරිගණකයේ සිට, පරිශීලකයන්ට භාවිතා කළ හැකි නිෂ්පාදන පරිසරය (production environment) දක්වා වේගවත්ව, ස්වයංක්රීයව සහ විශ්වාසනීයව ගෙන යන්නේ කෙසේද යන්නයි. එම ක්රියාවලිය, එනම් සංවර්ධනය (Development) සහ මෙහෙයුම් (Operations) අතර පාලම තනන "DevOps සහ CI/CD ක්රියාවලිය" පිළිබඳව අපි ඊළඟ මොඩියුලයෙන් ඉගෙන ගනිමු.