මොඩියුලය 17: DevOps සහ CI/CD ක්‍රියාවලිය

සංවර්ධනයේ සිට නිෂ්පාදනය දක්වා වූ ගමන වේගවත් හා විශ්වාසනීය කිරීම.

DevOps: "ව්‍යාකූලත්වයේ පවුර" බිඳ දැමීම

සම්ප්‍රදායික මෘදුකාංග සමාගම්වල, කේතය ලියන සංවර්ධන කණ්ඩායම (Development - Dev) සහ එම කේතය සේවාදායකවල (servers) ක්‍රියාත්මක කර, නඩත්තු කරන මෙහෙයුම් කණ්ඩායම (Operations - Ops) යනු දෙපාර්තමේන්තු දෙකකි. සංවර්ධකයන්ට අවශ්‍ය වන්නේ හැකි ඉක්මනින් නව features නිර්මාණය කිරීමට වන අතර, මෙහෙයුම් කණ්ඩායමට අවශ්‍ය වන්නේ පද්ධතියේ ස්ථාවරත්වය (stability) රැක ගැනීමටය. මෙම වෙනස් අරමුණු නිසා, ඔවුන් අතර "ව්‍යාකූලත්වයේ පවුරක්" (Wall of Confusion) නිර්මාණය විය. "මගේ පරිගණකයේ එය වැඩ කළා!" ("It works on my machine!") යනු සංවර්ධකයන්ගෙන් නිතර ඇසෙන ප්‍රකාශයක් විය.

DevOps යනු මෙම පවුර බිඳ දමා, සංවර්ධන සහ මෙහෙයුම් කණ්ඩායම් එකට, එකම අරමුණක් (පරිශීලකයාට ඉක්මනින් සහ විශ්වාසනීයව වටිනාකමක් ලබා දීම) සඳහා වැඩ කරන සංස්කෘතියක්, දර්ශනයක් සහ භාවිතයන් සමූහයකි. මෙය Formula 1 කණ්ඩායමක් මෙනි; මෝටර් රථය නිර්මාණය කරන ඉංජිනේරුවන් (Dev) සහ තරඟය අතරතුර එය නඩත්තු කරන කණ්ඩායම (Ops) එකට එක්ව, එකම ඉලක්කයක් සඳහා වැඩ කරයි.

CI/CD: DevOps දර්ශනයේ ප්‍රායෝගික ක්‍රියාත්මක කිරීම

DevOps සංස්කෘතිය යථාර්ථයක් බවට පත් කරන ස්වයංක්‍රීය ක්‍රියාවලිය CI/CD නල මාර්ගය (Pipeline) ලෙස හැඳින්වේ.

1. CI - අඛණ්ඩ ඒකාබද්ධතාව (Continuous Integration)

සංවර්ධකයන් තම කේත වෙනස්කම්, දිනකට කිහිප වරක් මධ්‍යම ගබඩාවකට (central repository - උදා: GitHub) ඒකාබද්ධ (merge) කරයි. එසේ කළ වහාම, ස්වයංක්‍රීයව කේතය build වී, ඊට අදාළ tests ක්‍රියාත්මක වේ. මෙහි ප්‍රධාන අරමුණ වන්නේ, විවිධ සංවර්ධකයන්ගේ කේත එකට එකතු කළ විට ඇතිවන ගැටළු (integration bugs) ඉතා ඉක්මනින් හඳුනා ගැනීමයි.

2. CD - අඛණ්ඩ බෙදාහැරීම (Continuous Delivery)

CI ක්‍රියාවලිය සාර්ථකව අවසන් වූ පසු, එනම් සියලු tests සමත් වූ පසු, මෘදුකාංගය නිෂ්පාදන පරිසරයට (production) යෙදවීමට (deploy) සම්පූර්ණයෙන්ම සූදානම් කර, පරීක්ෂණ පරිසරයකට (testing/staging environment) ස්වයංක්‍රීයව නිකුත් කිරීම මෙහිදී සිදුවේ. මෙහිදී, නිෂ්පාදනයට යෙදවීම සඳහා අවසන් අනුමැතිය (බොත්තමක් එබීම වැනි) මිනිසෙකු විසින් සිදු කළ හැක.

3. CD - අඛණ්ඩ යෙදවීම (Continuous Deployment)

මෙය ස්වයංක්‍රීයකරණයේ ඉහළම මට්ටමයි. Continuous Delivery ක්‍රියාවලියෙන් පසුව, කිසිදු මිනිස් අතපෙවීමකින් තොරව, වෙනස්කම ස්වයංක්‍රීයවම අවසන් පරිශීලකයන් භාවිතා කරන නිෂ්පාදන පරිසරයට (production) යෙදවීම මෙහිදී සිදුවේ. Amazon, Netflix වැනි සමාගම් දිනකට දහස් ගණනක් deployments මෙම ක්‍රමය හරහා සිදු කරයි.

ප්‍රධාන DevOps මෙවලම්

අවසාන වශයෙන්

DevOps සහ CI/CD යනු මෘදුකාංගයක් නිර්මාණය කිරීමේ සිට, එය පරිශීලකයා අතට පත් කිරීම දක්වා වූ සම්පූර්ණ ක්‍රියාවලියම වේගවත්, කාර්යක්ෂම සහ විශ්වාසනීය කරන නූතන මෘදුකාංග ඉංජිනේරු විද්‍යාවේ අනිවාර්ය අංගයකි.

මෙම සියලු ස්වයංක්‍රීය ක්‍රියාවලි සහ මහා පරිමාණ යෙදුම් ක්‍රියාත්මක කිරීමට අපට ශක්තිමත් යටිතල පහසුකම් (infrastructure) අවශ්‍ය වේ. අප විසින්ම servers මිලදී ගෙන නඩත්තු කරනවා වෙනුවට, අද දවසේදී ඒ සඳහා ඇති හොඳම විසඳුම වන්නේ වලාකුළු පරිගණනයයි. අපගේ ඊළඟ මොඩියුලයෙන්, "ක්ලවුඩ් පරිගණනය (Cloud Computing - AWS/Azure)" පිළිබඳව අපි ඉගෙන ගනිමු.