සොෆ්ට්වෙයා ලෝකයේ අඩුපාඩු කාලයක් නොවේ; ඒවාට හේතු වන්නේ අපි පරීක්ෂා නොකළ අඩුපාඩුයි. ජපානයේ පරණ ෆෝන් සදහා සේවාවක් නිර්මාණය කරන කාලයේ, මා තුන් වැරදි අත්විඳින්නා වූ අතර, ඒවා මට දැන්මත් මතකයි.
1. කොලේෂන් ගැන නොදැනීම – අපේ පද්ධතිය MySQL භාවිතා කළා. පරිශීලක ID කේස්-සංවේදන බව නියමිත වුවද, මූලික කොලේෂන් case‑insensitive වූ නිසා userA සහ usera එකම ගණනාවක් ලෙස ගැලපුණා. ප්රතිඵලයක් වශයෙන්, එක පරිශීලකගේ ගිණුම අනිත් පරිශීලකයාගේ ලකුණු අඩු කරමින් පවතින බව අපට පසුදා හඳුනාගත්තා. සෑම කේස්‑කොලේෂන් ගැටලුවක් මත දස ගණනක් පරිශීලකයින්ට බලපෑ.
2. සම්බන්ධතා නිකුත් කිරීම අමතක කිරීම – අපගේ ආකර්ශනීය IP blacklist ක්රියාවලිය, සැකසුම් IP එකක් සොයාගන්නා විට නව DB සම්බන්ධතාවයක් තැනූ අතර, finally බ්ලොක් එකේ සම්බන්ධතාවය වසා දැමීම අමතක වුණා. සම්බන්ධතා එකින් එක ලීක් වීම නිසා, සේවාව කාලයක් පසුබැසී අස්ථාවර විය. ප්රතිචාරයක් ලැබුණේ නිකුතුවේ දෝෂයක් හේතුවෙන් සේවාව අත්හිටුවීමක් විය.
3. නිරීක්ෂණයේ අඩුපාඩු – සම්බන්ධතා ලීක් එක අඩු වේගයෙන් සිදු වූ නිසා, නිකුතුවේ පසුතැවීම හා ප්රතිඵලය අතර කාල පරතරයක් ඇති වුණා. අපේ මොනিটරින් පද්ධතිය නඩුකාරී නොවූ නිසා, ගැටලුවක් වඩාත් හෙට දින පෙනෙන්නට ලැබුණා. මෙය මට “ග්රැජුවල් ෆේල්යර්” (gradual failure) ගැන මතකදෙනුයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
මෙම අත්දැකීම් ශ්රී ලංකාවේ ඩෙවලපර්, සිසු, හා ව්යාපාරිකයන්ට විශාල ප්රයෝජන දෙයි:
- ඩෙෆෝල්ට් සැකසුම් පරීක්ෂා කිරීම: MySQL, PostgreSQL, MongoDB වැනි දත්ත ගබඩා වල කොලේෂන්, charset, හෝ සම්මතයන් පරීක්ෂා කිරීමේ වැදගත්කම.
- සම්පත් නිකුත් කිරීමේ ශික්ෂාව: try‑finally, using, or defer වැනි රචනා භාවිතයෙන් සම්පත් නිකුත් කිරීම ස්වයංක්රීයව කළ හැකිය.
- පරීක්ෂණ සහ මොනিটරින්: සුළු ලීක් හෝ කාලගත වැරදි හඳුනාගැනීමට APM, Prometheus වැනි මෙවලම් භාවිතය.
- අපේක්ෂිත ප්රතිඵලය vs. සැබෑ ප්රතිඵලය: නිර්මාණයේ පූර්ව පරීක්ෂාවක් නැතිව පද්ධතියක් ප්රොඩක්ෂන් වෙත යැවීමේ අවදානම.
මෙම පාඩම් අනුගමනය කරන්නේ නම්, ලංකාවේ තාක්ෂණික නිෂ්පාදන ගුණාත්මක බව වැඩිවෙන අතර, ගෝලීය තරඟකාරීත්වයද වර්ධනය වේ.
අවසන් වශයෙන්, කේතයක් ලියන විට “ඇත්තටම වැඩ කරනවාද?” කියා නොකෙරේ; “සියලුම මාර්ගයන් නිවැරදිව අවසන් කරනවාද?” කියා පරීක්ෂා කිරීම මූලිකයි. මේ අත්දැකීම් අපට දිගුකාලීන විශ්වාසනීය පද්ධති ගොඩනැගීමට මග පෙන්වයි.