Node.js පදනම් වූ ව්යාපාරික පද්ධති දෙකක් – NestJS 12.0 සහ Ditsmod 3.0 – අතර ලයිෆ්සයික්ලය සහ අලංකාර (Graceful) නිමාව පිළිබඳ අවසන් සමාලෝචනය මෙන්න. පසුගිය ලිපි තුනකදී Dependency Injection, ESM මාරු, Extension Groups සහ Metadata Reflection ගැන විස්තර කළා. දැන් කුබර්නෙට්ස්, Docker වැනි cloud-native පරිසරවල සකස් කර ඇති කන්ටේනරයක් නවතා දැමීමේදී, යෙදුම කෙලින්ම නව ඉල්ලීම් ලබා නොගෙන, ක්රියාත්මක ඉල්ලීම් අවසන් කර, දත්ත සමුදා සම්බන්ධතා නිසි පරිදි වසා දීම අත්යවශ්ය වේ.
NestJS හි ලයිෆ්සයික්ලය පැහැදිලිව ත්රිත්වයක් ලෙස ගොඩනැගී ඇත. OnModuleInit සහ OnApplicationBootstrap මඟින් ඇරඹීම කළ හැක. නමුත් නිමාව සඳහා app.enableShutdownHooks() කියා main.ts තුළ සක්රිය කළ යුතුය. එවිට NestJS SIGTERM, SIGINT වැනි සංඥා අහගෙන, තුන් පියවරකින් නිමාව සිදු කරයි:
OnModuleDestroy– සංඥා ලැබුණු පසු මුල් පියවර.BeforeApplicationShutdown– සම්බන්ධතා වසා දැමීමට පෙර, කස්ටම් event loop පිරිසිදු කිරීම සඳහා.OnApplicationShutdown– අවසන් පියවර, මෙහිදී DB pool, Redis client වැනි සම්පත් වසා දිය හැක.
Ditsmod 3.0 ද ඒමෙන්ම app.enableShutdownHooks() මඟින් සංඥා අහන විධානය සක්රිය කරයි. එමඟින් SIGTERM, SIGINT, SIGHUP, SIGUSR2, SIGQUIT වැනි සංඥා අහන අතර, app.close(signal) ක්රියාත්මක වීමේදී ත්රි-පියවර shutdown ක්රමයක් අනුගමනය කරයි:
- Step 1 – BeforeShutdown Hooks: සියලු singleton සේවා
beforeShutdown()කියා පිරිසිදු කිරීමේ කාර්යයන් සිදු කරයි. Ditsmod හි@ditsmod/scheduleඑක මෙය භාවිතා කර cron job, timer වැනි පසුබිම් ක්රියාකාරකම් නවතයි. - Step 2 – customShutdown(signal): BaseApplication තුළ ඇති මෙම විධානය RestApplication විසින් HTTP server වසා දැමීම සඳහා අතිරේක ලොජික් එකතු කරයි. server.close() මඟින් නව TCP සම්බන්ධතා නොලැබේ, idle keep‑alive සම්බන්ධතා නතර වේ, ඉතිරි ඉල්ලීම්
shutdownTimeout(පෙරනිමි 15000 ms) දක්වා ඉවර කර ගැනීමට ඉඩ දේ. - Step 3 – OnShutdown Hooks: HTTP server සම්පූර්ණයෙන් වසා දැමීමෙන් පසු, සේවා
onShutdown()කියා DB pool, file handle වැනි සම්පත් නිසි පරිදි වසා දැමීමට අවස්ථාව ලැබේ.
Ditsmod හි වැඩි දක්ෂතා මූලිකව singleton instance පමණක් shutdown hook අමතයි. request‑scoped හෝ route‑scoped providers වැනි අනිවාර්ය නොවන සේවා අමතරව ක්රියා නොකරයි. මෙයින් shutdown වේලාවේ අවශ්ය ප්රතිචාර වේගය වැඩි වේ.
ශ්රී ලංකාවට ඇති වැදගත්කම
- සිසුන්ට ඉගෙනීමේ ගැඹුරු අවබෝධය – NestJS සහ Ditsmod අතර ලයිෆ්සයික්ලය අත්හදා බැලීම, cloud‑native architecture පිළිබඳ ප්රායෝගික දැනුම ලබා දේ.
- දේශීය ඩිවෙලපර්වරුන්ට – Docker, Kubernetes පරිසරයේ graceful shutdown නිවැරදිව සැකසීම, production‑grade සේවා රැක ගැනීමේ අත්දැකීම් ලබා ගත හැක.
- ව්යාපාරික ආයතනවලට – නඩත්තු කාලය අඩු කර, දත්ත අහිමි වීමේ අවදානම අඩු කර, SLA (Service Level Agreement) රැක ගැනීමට උපකාරී වේ.
අවසන් වශයෙන්, NestJS සහ Ditsmod දෙකේම graceful shutdown ක්රමවේදය වඩාත් විස්තරාත්මකව අධ්යයනය කිරීම, කුබර්නෙට්ස්‑මූලික ව්යාපෘතිවල reliability සහ scalability වැඩි කරයි. ඔබේ පළපුරුද්ද කුමක් වත්, මෙම තාක්ෂණික විස්තරයන් පරික්ෂා කර, ඔබේ යෙදුමට සුදුසු framework එක තේරීම වැදගත්.