ඔබේ කුඩා Node.js API එක හදිසියේම ලොකු පිරිසකගේ අවධානයට වැටුණාද? අපි එකම EC2 ඉන්ස්ටන්ස් එකේ CPU 99% දක්වා පැනලා, ලොග් ගොඩක් "out of memory" කියලා පණිවුඩ වලින් පිරුණු අවස්ථාවක් ගැන කතා කරනවා. ඒ වගේම, ලෝකේ ප්රසිද්ධ ස්ට්රීම් කරුවෙක් URL එක shout කරලා, තත්පරයකට රිකුවෙස්ට් ගණන 10කින් 2,000කට පත්වීමත් සිදු වුණා.
මෙම අත්දැකීමෙන් අපිට තේරුණේ, "බඩු තැටි විශාල කරගන්න" කියන සරළ විසඳුම පමණක් නොව, ඇප් එකේ සමාන්තර ව්යුහය ගැන අලුත් අරමුණක් ගත යුතු බව. සමාන්තර කිරීම (vertical scaling) යනු එකම මැෂින් එකේ CPU, RAM, SSD වගේ සම්පත් වැඩි කිරීමයි. මෙය RPG ගේ පළපුරුද්දක් වගේ, ගේම් පලේට් එක උඩුගත කරනවා වගේ. එහෙත්, මෙය සීමා ඇති, වියදම ඉහළ යන, එකම පද්ධතිය අසාර්ථක වුවහොත් සෑම සේවාවක්ම බිඳ වැටෙන අවදානමක් ඇත.
අනෙක් පාර්ශ්වයේ, හරිත සමාන්තර කිරීම (horizontal scaling) යනු බහු ඉන්ස්ටන්ස් එකක් එකතු කර, ලෝඩ් බාලන්සරයක් මගින් රිකුවෙස්ට් බෙදා හැරීමයි. ඒ කියන්නේ, ඔබට “Neo” කෙටි පිටපත් ගොඩක් කරලා, එකම කාර්යය සිදු කරන බොහෝ සර්වර් එකක් ඇති කිරීම. මෙයින් පද්ධතියේ විකෘතියක් සිදු වුනත්, වෙනත් සර්වර් එකක් කාර්යය ඉදිරියටගෙන යන බැවින් අඩු වියදමින් වැඩි throughput එකක් ලැබේ.
අපේ මුල් ඇප් එකේ සත්යය තත්ත්වය තරමටම තරඟකාරී වූයේ, සෙෂන් තොරතුරු මතකයේ (in‑memory) රඳා සිටීමයි. ඒ නිසා, නව සර්වර් එකක් ඇතුළත් කළහොත්, පරිශීලකයන් ලොග් අඛණ්ඩව අහෝසි වීමට සිදු වුණා. මෙය හදුනාගැනීමෙන් පසු, අපි ඇප් එක Stateless කරලා, සෙෂන් තොරතුරු Redis වැනි බාහිර දත්ත ගබඩාවකට ගෙන ගියා. දැන් සර්වර් එකක් අඩු කළත්, අලුත් එකක් එක් කළත්, පරිශීලක අත්දැකීම අඛණ්ඩයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
- සිසුන්ට cloud‑based scaling ආකාරයන් ගැන ප්රායෝගික උදාහරණයක් ලැබේ.
- ලෝකය පුරා පවත්නා start‑up ගණනාවකට, අඩු පිරිවැයෙන් scalable architecture නිර්මාණය කිරීමේ හැකියාව ලැබේ.
- සිංහල developer කණ්ඩායම්ට Stateless design, Redis, load balancer වැනි නව තාක්ෂණයන් ගැන ඉගෙන ගැනීමට අවස්ථාව ලැබේ.
- ඉන්දීය හා ශ්රී ලංකා IT සේවා සපයන්නන්ට, vertical vs horizontal scaling අතර තේරීමේ වැදගත්කම පැහැදිලි වේ.
අවසානයේ, ඔබේ ඇප් එකට “cheat code” එකක් අවශ්ය නම්, පළමුව එය Stateless කර, බාහිර සේවා භාවිතා කර, පසුබැසීමේදී හරිත සමාන්තරය (horizontal scaling) අරඹන්න. එවිට ඔබේ සේවාදායකය, ඕනෑම කාලයක, ඕනෑම පිරිසකට සාර්ථකව පිළිතුරු දෙයි.