ස්වයංක්රීය පද්ධතිය ක්රියාත්මක කරලා ගත්තට පස්සේ, එය තවමත් “ජීවතුන් අතර”ද කියලා කොහොමද නිරීක්ෂණය කරන්නේ
මම ස්වයංක්රීය ක්රියාදාම කිහිපයක් (automation pipelines) ගොඩනැගුවට පසු මට ලැබුණු හොඳම පාඩම මෙයයි: **පද්ධතිය අලුයමට මැරුණත් ඔබට දෙවැනි දවසේ才ක් දැනගන්න විදිහට නොවෙයි—එහෙම කළ නොහැක**.
මම වරක් schedule task එකක් deploy කරලා තිබුණා. cron එක set කළාම එය බලාගන්නකාවත් නැතිවම හොඳට laufen වේවි කියලා මම හිතුවා. ප්රතිඵලය: සතියක් පහු වුණාම status බලන්න ගිය විට දැනගත්තේ ඒක නිහඬවම දින 3ක් තිස්සේ ක්රියා කිරීම නවතා තිබුණා කියලා—database connection එක කඩලා. කිසිම දැනුම්දීමක්වත් නැහැ. ඒ දා පටන් මම නිරීක්ෂණ (monitoring) සඳහා සම්පූර්ණ “දර්ශන”යක් ගොඩනැගුවා; අද මම එය ඔබ සමඟ බෙදාගන්නවා.
**පළමු ස්ථරය: ක්රියාත්මක වීමේ කාලාන්තර නිරීක්ෂණය**
අතිමූලික ක්රමය cron එකේ last_run_at බැලීමයි. මගේ නීතිය මෙයයි: **අන්තිම ධාවනය වූ වේලාව අපේක්ෂිත කාලාන්තරයෙන් 2 ගුණයක් ඉක්මවුණොත්, වහාම අනතුරු ඇඟවීම (alert) ක්රියාත්මක කරන්න**. උදාහරණයක් ලෙස සෑම විනාඩි 5කටම වරක් ධාවනය විය යුතු කාර්යයක් නම්, last_run_at දැනට වඩා විනාඩි 10කට වඩා දුර නම්—Telegram එකටම හදිසි අනතුරු ඇඟවීම දාන්න. මේ index එක ඉතාමත් ඵලදායීයි—මම හිතන්නේ “පද්ධතිය ගැටලුවට වැටුණා” කියලා 90%කට වඩා වැඩි අවස්ථා 1 පැයක ඇතුළත අල්ලා ගන්න පුළුවන්—ව්යාපාර අංශය දැනගන්නකම් බලා සිටීම නොවෙයි.
**දෙවැනි ස්ථරය: API විශ්රාම කිරීමේ (熔断) යාන්ත්රණය**
API අස්ථාවර වීම සාමාන්යය. මගේ ක්රමය මෙයයි: **අනුක්රමිකව API ඉල්ලීම් 3ක්ම අසාර්ථක වුණොත්, පැය 24ක් සඳහා ස්වයංක්රීයව “熔断” කරන්න**. ඇයි 3ක්? 1–2 වරක් network jitter එකක් වෙන්න පුළුවන්, නමුත් 3 වරක් අඛණ්ඩව අසාර්ථක වීමෙන් කියන්නේ ඇත්තටම ගැටලුවක් තියෙනවා කියලා. 熔断 කාලය තුළ පද්ධතියට තවත් API ඇමතුම් උත්සාහ නොකරයි—දෝෂ තත්ත්වයේම තවදුරටත් කෝස්තුකාර API quota සහ log space නාස්ති වීම වලක්වයි. මෙය අවිවේක ලෙස retry කරමින් යාමට වඩා ගොඩක් වැඩි.
**තුන්වැනි ස්ථරය: තත්ත්ව ගොනුවේ දිගුකාලීන සුරැකුම (persistence)**
සෑම වතාවකම පද්ධතිය run වෙන විට, මම වත්මන් තත්ත්වය—සාර්ථක සංඛ්යාව, අසාර්ථක සංඛ්යාව, timestamp, දෝෂ තොරතුරු—තත්ත්ව ගොනුවකට ලියනවා. එම ගොනුව මම දින 30ක ඉතිහාසය තබාගන්නවා. ඒ වාසිය මොකක්ද? ප්රතිපිළිවෙල නැවත බලන්න පුළුවන්—"පසුගිය බදාදා posts දමන හැකියාව එකවර 60%ට අඩු වුණේ ඇයි?"—ලොග් වලට දැනටම පිළිතුර තියෙනවා. තත්ත්ව ගොනුව මූලික space එකක් අරගෙන නෑ, නමුත් මට සම්පූර්ණ audit chain එකක් ලැබෙනවා.
**සිව්වැනි ස්ථරය: සතියකට වරක් මිනිස් පරීක්ෂාව**
සතියකට මිනිත්තු 15ක් දක්වා පාවිච්චි කරලා, පද්ධතියට ස්වයංක්රීයව එක් රැස් වූ සාරාංශ වාර්තාවක් ජනනය කරන්න සලස්වන්නවා: post සාර්ථක වීමේ ප්රතිශතය, දෝෂ අනුපාතය බෙදීම, වචන ගණන, අසාමාන්ය උච්චාවචන තිබේද කියලා. එය ඉතා නිතර අවශ්ය නැහැ, නමුත් **ස්වයංක්රීය අනතුරු ඇඟවීම් සම්පූර්ණයෙන් ම විශ්වාස කරන්න බැහැ**. සමහර වෙලාවට දෝෂ අනුපාතය 2% සිට 4% දක්වා ඉහළ යන trend එක වගේ—ස්වයංක්රීය නිරීක්ෂණය ඔබට කියන්නේ නැහැ, නමුත් මිනිසෙකුට එක බැල්මටම පේනවා "අපි මෙතැනට පටන් ගන්න ඕන" කියලා.
**මූලික අවබෝධය**
ස්වයංක්රීය ගොඩනැගීම ඉක්මන්, නමුත් **නිරීක්ෂණය හරියට කරලා තියෙනවා නම් මිසක්, ඇත්තටම නිදහසේ ඉන්න පුළුවන්**. මගේ අත්දැකීම මෙයයි: ස්වයංක්රීය අනතුරු ඇඟවීමේ වගකීම හදිසි අවස්ථා (පද්ධතිය සම්පූර්ණයෙන්ම නවතින විට) සඳහායි; මිනිස් පරීක්ෂාවේ වගකීම ප්රවනතා ගැටලු (කාලයත් සමඟම වඩාත් නරක වෙමින් යාම) සඳහායි. දෙකම එකට ගත්තාමයි මේ පද්ධතිය දිගටම ජීවත් වෙන්නේ. එහෙම නැත්නම්, තවත් බුද්ධිමත් ස්වයංක්රීය වුවත් එය කළු පෙට්ටියක් තුළ සිර කරලා තියෙන කාල බෝම්බයක් වගේ.
$BTC #DevOps #ස්වයංක්රීය