කැනරි යනු නිරන්තරයෙන් ගායනා කරන කුඩා කුරුල්ලෙකි. මෙම පක්ෂීන් මීතේන් සහ කාබන් මොනොක්සයිඩ් වලට සංවේදී වේ. වාතයේ ඇති අතිරික්ත වායූන්ගේ කුඩා සාන්ද්රණයකින් පවා ඔවුන් සිහිය නැති වී හෝ මිය යයි. රන් කැණීම් කරන්නන් සහ පතල් කම්කරුවන් කුරුල්ලන් පතල් වෙත ගෙන ගියහ: කැනරි ගායනා කරන අතරතුර, ඔබට වැඩ කළ හැකිය, ඔබ නිශ්ශබ්ද නම් - පතලෙහි ගෑස් ඇති අතර පිටත්ව යාමට කාලයයි. පතල් කම්කරුවන් පණපිටින් පතල්වලින් ගොඩ ඒම සඳහා කුඩා කුරුල්ලෙකු පූජා කළහ.

ඒ හා සමාන භාවිතයක් තොරතුරු තාක්ෂණය තුළ දක්නට ලැබේ. උදාහරණයක් ලෙස, ඊට පෙර පරීක්ෂණ සමඟ නිෂ්පාදනයට සේවාවක හෝ යෙදුමක නව අනුවාදයක් යෙදවීමේ සම්මත කාර්යයේදී. පරීක්ෂණ පරිසරය මිල අධික විය හැක, ස්වයංක්රීය පරීක්ෂණ ඔබට අවශ්ය සියල්ල ආවරණය නොකරන අතර, පරීක්ෂා නොකිරීම සහ ගුණාත්මකභාවය කැප කිරීම අවදානම් සහගතය. කැනරි යෙදවීමේ ප්රවේශය ප්රයෝජනවත් වන්නේ මෙහිදීය, එහිදී සැබෑ නිෂ්පාදන ගමනාගමනය නව අනුවාදය වෙත යොමු කෙරේ. ප්රවේශය උපකාරී වේ ආරක්ෂිතයි නව අනුවාදය පරීක්ෂා කරන්න නිෂ්පාදනය සඳහා, ලොකු දෙයක් වෙනුවෙන් ටිකක් කැප කරනවා. ප්රවේශය ක්රියා කරන ආකාරය, ප්රයෝජනවත් වන්නේ කුමක්ද සහ එය ක්රියාත්මක කරන්නේ කෙසේද යන්න පිළිබඳ වැඩි විස්තර පවසනු ඇත Andrey Markelov (), Infobip සමාගම තුළ ක්රියාත්මක කිරීමේ උදාහරණය මත.
Andrey Markelov - Infobip හි Lead Software Engineer, වසර 11ක් තිස්සේ මුල්ය සහ විදුලි සංදේශ ක්ෂේත්රයේ Java යෙදුම් සංවර්ධනය කරමින් සිටී. විවෘත මූලාශ්ර නිෂ්පාදන සංවර්ධනය කරයි, Atlassian ප්රජාවට ක්රියාකාරීව සහභාගී වන අතර Atlassian නිෂ්පාදන සඳහා ප්ලගීන ලියයි. ප්රොමිතියස්, ඩොකර් සහ රෙඩිස්ගේ එවැන්ජලිස්ත.
Infobip ගැන
එය ගෝලීය විදුලි සංදේශ වේදිකාවක් වන අතර එය බැංකු, සිල්ලර වෙළෙන්දන්, මාර්ගගත වෙළඳසැල් සහ ප්රවාහන සමාගම්වලට ඔවුන්ගේ ගනුදෙනුකරුවන්ට කෙටි පණිවුඩ, තල්ලු, ලිපි සහ හඬ පණිවිඩ හරහා පණිවිඩ යැවීමට ඉඩ සලසයි. එවැනි ව්යාපාරයකදී, පාරිභෝගිකයින්ට නියමිත වේලාවට පණිවිඩ ලැබෙන පරිදි ස්ථාවරත්වය සහ විශ්වසනීයත්වය වැදගත් වේ.
Infobip IT යටිතල පහසුකම් සංඛ්යා වලින්:
- ලොව පුරා දත්ත මධ්යස්ථාන 15ක්;
- අද්විතීය සේවා 500 ක් ක්රියාත්මක වේ;
- සේවා අවස්ථා 2500 ක්, එය විධානවලට වඩා වැඩි ය;
- 4,5 TB මාසික ගමනාගමනය;
- දුරකථන අංක බිලියන 4,5;
ව්යාපාරය වර්ධනය වෙමින් පවතින අතර, එය සමඟ නිකුත් කිරීම් සංඛ්යාව. අපි වියදම් කරනවා දිනකට නිකුත් කිරීම් 60 ක්පාරිභෝගිකයින්ට වැඩි විශේෂාංග සහ බලය අවශ්ය නිසා. නමුත් මෙය දුෂ්කර ය - බොහෝ සේවා ඇත, නමුත් විධාන කිහිපයක්. දෝෂයකින් තොරව නිෂ්පාදනයේ ක්රියා කළ යුතු කේතය ඔබ ඉක්මනින් ලිවිය යුතුය.
නිකුත් කරයි
සාමාන්ය නිකුතුවක් මේ වගේ. උදාහරණයක් ලෙස, A, B, C, D සහ E සේවා ඇත, ඒ සෑම එකක්ම වෙනම කණ්ඩායමක් විසින් සංවර්ධනය කරනු ලැබේ.

යම් අවස්ථාවක, A සේවා කණ්ඩායම නව අනුවාදයක් යෙදවීමට තීරණය කරයි, නමුත් B, C, D සහ E සේවා කණ්ඩායම් ඒ ගැන නොදනී. A සේවා කණ්ඩායම ක්රියා කරන ආකාරය සඳහා විකල්ප දෙකක් තිබේ.
පවත්වයි වර්ධක මුදා හැරීම: පළමුව එක් අනුවාදයක් ප්රතිස්ථාපනය කරන්න, පසුව දෙවැන්න.

නමුත් දෙවන විකල්පය ඇත: විධානය අමතර ධාරිතාවන් සහ යන්ත්ර සොයාගනු ඇත, නව අනුවාදය යෙදවීමට, පසුව රවුටරය මාරු කරන්න, සහ අනුවාදය නිෂ්පාදනය සඳහා වැඩ කිරීමට පටන් ගනී.

ඕනෑම අවස්ථාවක, අනුවාදය පරීක්ෂා කළද, යෙදවීමෙන් පසු සෑම විටම පාහේ ගැටළු තිබේ. ඔබට අතින් පරීක්ෂා කළ හැකිය, ඔබට එය ස්වයංක්රීයව කළ හැකිය, ඔබට පරීක්ෂා කළ නොහැක - ඕනෑම අවස්ථාවක ගැටළු මතු වනු ඇත. ඒවා විසඳීමට ඇති පහසුම සහ නිවැරදිම ක්රමය නම් ක්රියාකාරී අනුවාදය වෙත ආපසු යාමයි. එවිට පමණක් ඔබට හානිය, හේතු සමඟ කටයුතු කර ඒවා නිවැරදි කළ හැකිය.
ඉතින් අපට අවශ්ය කුමක්ද?
අපිට ප්රශ්න අවශ්ය නැහැ. පාරිභෝගිකයින් අපට වඩා වේගයෙන් ඒවා සොයා ගන්නේ නම්, එය ඔවුන්ගේ කීර්ති නාමයට හානි කරයි. එබැවින් අප කළ යුතුය පාරිභෝගිකයින්ට වඩා වේගයෙන් ගැටළු සොයා ගන්න. ක්රියාශීලීව වැඩ කිරීම, අපි හානිය අවම කර ගනිමු.
ඒ අතරම, අපට අවශ්යයි යෙදවීම වේගවත් කරන්නඑය ඉක්මනින්, පහසුවෙන්, ස්වභාවිකව සහ කණ්ඩායමේ පීඩනයකින් තොරව සිදු වන පරිදි. ඉංජිනේරුවන්, DevOps ඉංජිනේරුවන් සහ ක්රමලේඛකයින් ආරක්ෂා කළ යුතුය - නව අනුවාදයක් නිකුත් කිරීම ආතතියකි. කණ්ඩායම වියදම් කළ නොහැකි ය, අපි උත්සාහ කරමු මානව සම්පත් තාර්කික භාවිතය.
යෙදවීමේ ගැටළු
පාරිභෝගික ගමනාගමනය අනපේක්ෂිත ය. සේවාලාභීන්ගේ ගමනාගමනය අවම මට්ටමක පවතින්නේ කවදාදැයි අනාවැකි කිව නොහැක. සේවාදායකයින් තම ව්යාපාර ආරම්භ කරන්නේ කොතැනින්ද කවදාදැයි අපි නොදනිමු - සමහර විට අද රාත්රියේ ඉන්දියාවේ, හෙට හොංකොංහි. විශාල කාල වෙනස සැලකිල්ලට ගෙන, පාන්දර 2 ට පවා යෙදවීම පාරිභෝගිකයින්ට බලපෑමක් නොවන බවට සහතික නොවේ.
සැපයුම්කරුගේ ගැටළු. පණිවිඩකරුවන් සහ සපයන්නන් අපගේ හවුල්කරුවන් වේ. සමහර විට ඔවුන් නව අනුවාදයන් යෙදවීමේදී දෝෂ ඇති කරන බිඳවැටීම් ඇත.
බෙදා හරින ලද කණ්ඩායම්. සේවාදායක පාර්ශවය සහ පසුපෙළ සංවර්ධනය කරන කණ්ඩායම් විවිධ කාල කලාපවල ඇත. මේ නිසා බොහෝ විට ඔවුන් අතර එකඟ විය නොහැක.
වේදිකාවේ දත්ත මධ්යස්ථාන නැවත නැවත කළ නොහැක. එක් දත්ත මධ්යස්ථානයක රාක්ක 200ක් ඇත - ඔබට මෙය වැලිපිල්ලක් තුළ දළ වශයෙන් නැවත කිරීමට පවා නොහැකිය.
අක්රීය වේලාවන්පිළිගත නොහැකි! අපි 99,99% ක් වැඩ කරන විට අපට දෝෂ අයවැයක් ඇත, උදාහරණයක් ලෙස, ඉතිරි ප්රතිශතය "දෝෂ ආන්තිකය" වේ. 100% විශ්වසනීයත්වය ලබා ගැනීම කළ නොහැක්කකි, නමුත් පහත වැටීම් සහ අක්රීය කාලය නිරන්තරයෙන් නිරීක්ෂණය කිරීම වැදගත් වේ.
සම්භාව්ය විසඳුම්
දෝෂ නොමැතිව කේතය ලියන්න. මම තරුණ සංවර්ධකයෙකු වූ විට, කළමනාකරුවන් දෝෂ නොමැතිව මුදා හැරීමට ඉල්ලීමක් සමඟ මා වෙත පැමිණිය නමුත් මෙය සැමවිටම කළ නොහැක.
පරීක්ෂණ ලියන්න. පරීක්ෂණ ක්රියා කරයි, නමුත් සමහර විට ව්යාපාරයට අවශ්ය ආකාරයට නොවේ. මුදල් ඉපැයීම පරීක්ෂණවල කාර්යයක් නොවේ.
වේදිකාව මත පරීක්ෂණය. Infobip හි මගේ වසර 3,5 ක වැඩ සඳහා, වේදිකාවේ තත්වය අවම වශයෙන් අර්ධ වශයෙන් නිෂ්පාදනය සමඟ සමපාත වන බව මම කවදාවත් දැක නැත.

අපි මෙම අදහස වර්ධනය කිරීමට පවා උත්සාහ කළෙමු: පළමුව අපට වේදිකාව, පසුව පූර්ව නිෂ්පාදන සහ පසුව පූර්ව නිෂ්පාදන. නමුත් මෙයද උදව් කළේ නැත - ඔවුන් බලයට නොගැලපේ. අදියර සමඟ, අපට මූලික ක්රියාකාරිත්වය සහතික කළ හැකිය, නමුත් එය බර යටතේ ක්රියා කරන්නේ කෙසේදැයි අපි නොදනිමු.
එය සංවර්ධනය කළ තැනැත්තා විසින් නිකුත් කරනු ලැබේ. මේක හොඳ පුරුද්දක්: කවුරුහරි කමෙන්ට් එකේ නම වෙනස් කළත්, ඔවුන් එය වහාම නිෂ්පාදනයට එකතු කරයි. මෙය වගකීම වර්ධනය කිරීමට සහ සිදු කරන ලද වෙනස්කම් ගැන අමතක නොකරන්න.
අමතර සංකූලතා ද ඇත. සංවර්ධකයෙකුට සෑම දෙයක්ම අතින් පරීක්ෂා කිරීමට බොහෝ කාලයක් ගත කිරීම ආතතියකි.
එකඟ වූ නිකුත් කිරීම්. මෙම විකල්පය සාමාන්යයෙන් කළමනාකරණය විසින් පිරිනමනු ලැබේ: "සෑම දිනකම ඔබ පරීක්ෂා කර නව අනුවාද එකතු කරන බවට අපි එකඟ වෙමු." එය ක්රියා නොකරයි: සෑම විටම අන් සියල්ලන් සඳහා විධානයක් බලා සිටී, නැතහොත් අනෙක් අතට.
දුම් පරීක්ෂණ
අපගේ යෙදවීමේ ගැටළු විසඳීමට තවත් ක්රමයක්. A කණ්ඩායමට නව අනුවාදයක් යෙදවීමට අවශ්ය වූ විට, පෙර උදාහරණයේ දුම් පරීක්ෂණ ක්රියා කරන ආකාරය සලකා බලන්න.
පළමුව, කණ්ඩායම නිෂ්පාදනය සඳහා එක් අවස්ථාවක් යොදවයි. සමච්චල් වලින් අවස්ථාවට පණිවිඩ සැබෑ ගමනාගමනය අනුකරණය කරයිසාමාන්ය දෛනික ගමනාගමනයට ගැලපීමට. සියල්ල හොඳින් නම්, කණ්ඩායම නව අනුවාදය පරිශීලක ගමනාගමනයට මාරු කරයි.

දෙවන විකල්පය වන්නේ යෙදවීමයි අමතර යකඩ සමඟ. කණ්ඩායම නිෂ්පාදනය සඳහා එය පරීක්ෂා කරයි, පසුව මාරු කරයි, සහ සියල්ල ක්රියා කරයි.

දුම් පරීක්ෂණවල අවාසි:
- පරීක්ෂණ විශ්වාස කළ නොහැක. නිෂ්පාදනයට සමාන ගමනාගමනය ලබා ගන්නේ කොහෙන්ද? ඔබට ඊයේ හෝ සතියකට පෙර භාවිතා කළ හැක, නමුත් එය සෑම විටම වත්මන් එකට නොගැලපේ.
- නඩත්තු කිරීමට අපහසුය. සක්රීය වාර්තා ගබඩාව වෙත යවන විට, ඔබට පරීක්ෂණ ගිණුම් පවත්වාගෙන යාමට සිදුවනු ඇත, එක් එක් යෙදවීමට පෙර ඒවා නිරන්තරයෙන් නැවත සකස් කරන්න. මෙය ඔබගේම වැලි පෙට්ටියේ පරීක්ෂණයක් ලිවීමට වඩා අපහසුය.
මෙහි ඇති එකම ප්රසාද දීමනාවයි කාර්ය සාධනය පරීක්ෂා කළ හැකිය.
කැනරි නිකුත් කරයි
දුම් පරීක්ෂණවල අඩුපාඩු නිසා අපි කැනරි නිකුත් කිරීම් භාවිතා කිරීමට පටන් ගත්තා.
පතල් කම්කරුවන් තොරතුරු තාක්ෂණයට ඇතුළු වූ වායූන්ගේ මට්ටම දැක්වීමට කැනරි භාවිතා කළ ආකාරය හා සමාන භාවිතයකි. අපි ඉඩ දුන්නා නව අනුවාදයට සැබෑ නිෂ්පාදන ගමනාගමනයසේවා මට්ටමේ ගිවිසුම (SLA) සපුරාලීමට උත්සාහ කරන අතරතුර. SLA යනු අපගේ "වරදක් කිරීමට ඇති අයිතිය" වන අතර, එය අපට වසරකට වරක් (හෝ වෙනත් කාල සීමාවක් සඳහා) භාවිතා කළ හැක. සෑම දෙයක්ම හොඳින් සිදුවුවහොත්, අපි තවත් තදබදයක් එකතු කරන්නෙමු. එසේ නොවේ නම්, අපි පෙර අනුවාද නැවත ලබා දෙන්නෙමු.

ක්රියාත්මක කිරීම සහ සූක්ෂ්මතා
අපි කැනරි නිකුතු ක්රියාත්මක කළේ කෙසේද? උදාහරණයක් ලෙස, සේවාදායකයින් කණ්ඩායමක් අපගේ සේවාව හරහා පණිවිඩ යවයි.

යෙදවීම මේ ආකාරයට සිදු වේ: අපි balancer (1) යටින් එක් නෝඩයක් ඉවත් කර, අනුවාදය (2) වෙනස් කර යම් ගමනාගමනයට වෙන වෙනම ඉඩ දෙමු (3).

පොදුවේ ගත් කල, එක් පරිශීලකයෙකු අසතුටුදායක වුවද, කණ්ඩායමේ සිටින සියලු දෙනා සතුටු වනු ඇත. සෑම දෙයක්ම හොඳයි නම්, අපි සියලු අනුවාද වෙනස් කරමු.

බොහෝ අවස්ථාවලදී ක්ෂුද්ර සේවා සඳහා එය පෙනෙන්නේ කෙසේද යන්න මම ක්රමානුකූලව පෙන්වන්නම්.
සේවා සොයාගැනීම සහ තවත් සේවා දෙකක් ඇත: S1N1 සහ S2. පළමු සේවාව (S1N1) සේවා සොයාගැනීම ආරම්භ වන විට දැනුම් දෙන අතර සේවා සොයාගැනීම එය මතක තබා ගනී. නෝඩ් දෙකක් සහිත දෙවන සේවාව (S2N1 සහ S2N2) එය ආරම්භ වන විට සේවා සොයාගැනීම ද දැනුම් දෙයි.

පළමු සඳහා දෙවන සේවාව සේවාදායකයක් ලෙස ක්රියා කරයි. පළමු එක Service Discovery වෙතින් එහි සේවාදායකයන් පිළිබඳ තොරතුරු ඉල්ලා සිටින අතර, එය ලැබුණු විට, එය ඒවා සොයමින් පරීක්ෂා කරයි ("සෞඛ්ය පරීක්ෂාව"). ඔහු පරීක්ෂා කරන විට, ඔහු ඔවුන්ට පණිවිඩ එවනු ඇත.
යමෙකුට දෙවන සේවාවේ නව අනුවාදයක් යෙදවීමට අවශ්ය වූ විට, ඔහු සේවා ඩිස්කවරි වෙත පවසන්නේ දෙවන නෝඩය කැනරි නෝඩයක් වනු ඇති බවයි: එයට අඩු තදබදයක් යවනු ඇත, මන්ද යෙදවීම දැන් සිදුවනු ඇත. අපි සමතුලිතයට යටින් කැනරි නෝඩය ඉවත් කරන අතර පළමු සේවාව එයට ගමනාගමනය යවන්නේ නැත.

අපි අනුවාදය වෙනස් කරන අතර සේවා ඩිස්කවරි දෙවන නෝඩය දැන් කැනරි බව දනී - ඔබට එය අඩු බරක් ලබා දිය හැකිය (5%). සෑම දෙයක්ම හොඳයි නම්, අපි අනුවාදය වෙනස් කරන්න, බඩු ආපසු ලබා දී වැඩ කරන්න.
මේ සියල්ල ක්රියාත්මක කිරීම සඳහා, අපට අවශ්ය වන්නේ:
- සමතුලිත කිරීම;
- අධීක්ෂණයඑක් එක් පරිශීලකයා අපේක්ෂා කරන්නේ කුමක්ද සහ අපගේ සේවාවන් විස්තරාත්මකව ක්රියා කරන ආකාරය දැන ගැනීම වැදගත් වන බැවිනි;
- අනුවාද විශ්ලේෂණයනිෂ්පාදනයේදී නව අනුවාදය කෙතරම් හොඳින් ක්රියා කරයිද යන්න තේරුම් ගැනීමට;
- ස්වයංක්රීයකරණය - අපි යෙදවීමේ අනුපිළිවෙල ලියන්නෙමු (වෙළඳීමේ නල මාර්ගය).

තුලනය කිරීම
අප සිතිය යුතු පළමු කරුණ මෙයයි. සමතුලිත උපාය මාර්ග දෙකක් තිබේ.
විට සරලම විකල්පය එක් නෝඩයක් සෑම විටම කැනරි වේ. මෙම නෝඩයට සෑම විටම අඩු තදබදයක් ලැබෙන අතර අපි එයින් යෙදවීම ආරම්භ කරමු. ගැටළු වලදී, අපි එහි කාර්යය යෙදවීමට පෙර සහ එය අතරතුර සංසන්දනය කරන්නෙමු. උදාහරණයක් ලෙස, 2 ගුණයක් වැඩි දෝෂ තිබේ නම්, හානිය 2 ගුණයකින් වැඩි වී ඇත.
කැනරි නෝඩය යෙදවීමේ ක්රියාවලියේදී සකසා ඇත. යෙදවීම අවසන් වූ විට සහ අපි එයින් කැනරි නෝඩ් තත්ත්වය ඉවත් කරන විට, රථවාහන ශේෂය යථා තත්ත්වයට පත් වනු ඇත. අඩු මෝටර් රථ සමඟ, අපට සාධාරණ බෙදා හැරීමක් ලැබෙනු ඇත.
අධීක්ෂණය
කැනරි නිකුතු වල මුල් ගල. අපි මෙය කරන්නේ ඇයි සහ අපට එකතු කිරීමට අවශ්ය ප්රමිතික මොනවාද යන්න අපි හරියටම තේරුම් ගත යුතුය.
අපගේ සේවාවන්ගෙන් අප රැස් කරන ප්රමිතික සඳහා උදාහරණ.
- වැරදි ගණන, ලඝු-සටහන් වලට ලියා ඇති. සෑම දෙයක්ම නියමිත පරිදි ක්රියාත්මක වන බවට මෙය පැහැදිලි දර්ශකයකි. පොදුවේ ගත් කල, මෙය හොඳ මිනුම් දණ්ඩකි.
- විමසුම් ක්රියාත්මක කිරීමේ කාලය (ප්රමාදය). සෑම කෙනෙකුටම වේගයෙන් වැඩ කිරීමට අවශ්ය නිසා සෑම කෙනෙකුම මෙම මිතිකය නිරීක්ෂණය කරයි.
- පෝලිම් ප්රමාණය (නිර්මාණය).
- තත්පරයකට සාර්ථක ප්රතිචාර ගණන.
- සියලුම ඉල්ලීම් වලින් 95% ක් ක්රියාත්මක කිරීමේ කාලය.
- ව්යාපාර ප්රමිතික: ව්යාපාරයක් යම් කාලයක් තුළ උපයන මුදල් ප්රමාණය හෝ පරිශීලකයා අවුල් කරයි. අපගේ නව අනුවාදය සඳහා මෙම ප්රමිතික ඉංජිනේරුවන් විසින් එකතු කරන ලද ඒවාට වඩා වැදගත් විය හැක.
වඩාත් ජනප්රිය අධීක්ෂණ පද්ධතිවල ප්රමිතික සඳහා උදාහරණ.
කවුන්ටරය. මෙය යම් වැඩි වන අගයකි, උදාහරණයක් ලෙස, දෝෂ ගණන. මෙම ප්රමිතිකය ප්රස්ථාරය අන්තර් සම්බන්ධ කිරීමට සහ අධ්යයනය කිරීමට පහසුය: ඊයේ දෝෂ 2 ක් ඇති අතර අද 500, එනම් යමක් වැරදී ඇත.
මිනිත්තුවකට හෝ තත්පරයකට සිදුවන දෝෂ ගණන කවුන්ටරය භාවිතයෙන් ගණනය කළ හැකි වැදගත්ම දර්ශකය වේ. මෙම දත්ත පද්ධතිය දුරස්ථව ක්රියා කරන ආකාරය පිළිබඳ පැහැදිලි චිත්රයක් ලබා දෙයි. නිෂ්පාදන පද්ධතියේ අනුවාද දෙකක් සඳහා තත්පරයට දෝෂ ගණන පිළිබඳ ප්රස්ථාරයක උදාහරණය සලකා බලන්න.

පළමු අනුවාදයේ දෝෂ කිහිපයක් තිබුණි, සමහර විට විගණනය වැඩ නොකළේය. දෙවන අනුවාදයේ සෑම දෙයක්ම වඩා නරක ය. ගැටළු ඇති බව අපට නිසැකවම පැවසිය හැකිය, එබැවින් අපි මෙම අනුවාදය ආපසු හැරවිය යුතුය.
මිනුම ප්රමිතික කවුන්ටරයට සමාන වේ, නමුත් අපි වැඩි කිරීමට හෝ අඩු කිරීමට හැකි අගයන් වාර්තා කරමු. උදාහරණයක් ලෙස, විමසුම් ක්රියාත්මක කිරීමේ කාලය හෝ පෝලිම් ප්රමාණය.
ප්රස්තාරය ප්රමාදයේ උදාහරණයක් පෙන්වයි. ප්රස්තාරය පෙන්නුම් කරන්නේ අනුවාද සමාන වන අතර, ඔබට ඔවුන් සමඟ වැඩ කළ හැකිය. නමුත් ඔබ හොඳින් බැලුවහොත්, අගය වෙනස් වන ආකාරය ඔබට දැක ගත හැකිය. පරිශීලකයින් එකතු කරන විට විමසුම් ක්රියාත්මක කිරීමේ කාලය වැඩි වේ නම්, ගැටළු ඇති බව වහාම පැහැදිලි වේ - මෙය පෙර නොවේ.

සාරාංශය. ව්යාපාර සඳහා වඩාත් වැදගත් දර්ශකවලින් එකක් වන්නේ ප්රතිශතයි. මෙට්රික් එකෙන් ඒක පෙන්නනවා නඩු වලින් 95% අපගේ පද්ධතිය අපට අවශ්ය ආකාරයට ක්රියා කරයි. කොතනක හරි ප්රශ්න තියෙනවනම් පිළිගන්න පුළුවන්, මොකද සාමාන්ය ප්රවණතාවය, හැම දේම කොච්චර හොඳද නරකද කියන එක අපිට තේරෙන නිසා.
මෙවලම්
ELK Stack. ඔබට ඉලාස්ටික් සෙවුම් භාවිතයෙන් කැනරි ක්රියාත්මක කළ හැකිය - සිදුවීම් සිදු වූ විට අපි එයට දෝෂ ලියන්නෙමු. සරලම API ඇමතුම සමඟ, ඔබට ඕනෑම වේලාවක දෝෂ ගණන ලබා ගත හැකි අතර පසුගිය කොටස් සමඟ සංසන්දනය කළ හැකිය: GET /applg/_cunt?q=level:errr.
ප්රොමේතියස්. ඔහු Infobip හි හොඳින් පෙනී සිටියේය. ලේබල් භාවිතා කර ඇති නිසා බහුමාන ප්රමිතික ක්රියාත්මක කිරීමට ඔබට ඉඩ සලසයි.
අපට භාවිතා කළ හැකිය level, instance, service, එක් පද්ධතියක් තුළ ඒවා ඒකාබද්ධ කරන්න. උදව් ඇතිව offset උදාහරණයක් ලෙස, ඔබට සතියකට පෙර අගයක අගය එක් විධානයකින් පමණක් දැකිය හැකිය GET /api/v1/query?query={query}කොහෙද {query}:
rate(logback_appender_total{
level="error",
instance=~"$instance"
}[5m] offset $offset_value)
අනුවාද විශ්ලේෂණය
අනුවාද උපාය මාර්ග කිහිපයක් තිබේ.
කැනරි නෝඩ් වල ප්රමිතික පමණක් බලන්න. සරලම විකල්පයන්ගෙන් එකක්: නව අනුවාදයක් යොදවා කාර්යය පමණක් අධ්යයනය කරන්න. නමුත් මේ අවස්ථාවේ ඉංජිනේරුවරයා ලඝු-සටහන් අධ්යයනය කිරීමට පටන් ගනී නම්, නිරන්තරයෙන් නොසන්සුන් ලෙස පිටු නැවත පූරණය කරයි නම්, මෙම විසඳුම අනෙක් ඒවාට වඩා වෙනස් නොවේ.
කැනරි නෝඩය වෙනත් ඕනෑම නෝඩයකට සමාන වේ. මෙය සම්පූර්ණ තදබදයෙන් ධාවනය වන අනෙකුත් අවස්ථා සමඟ සැසඳීමකි. උදාහරණයක් ලෙස, කුඩා තදබදයක් සමඟ දේවල් නරක නම්, හෝ සැබෑ අවස්ථාවන්ට වඩා හොඳ නොවේ නම්, යමක් වැරදියි.
කැනරි නෝඩය අතීතයේදීම සංසන්දනය කර ඇත. කැනරි සඳහා වෙන් කර ඇති නෝඩ් ඓතිහාසික දත්ත සමඟ සැසඳිය හැක. උදාහරණයක් ලෙස, සතියකට පෙර සෑම දෙයක්ම හොඳින් තිබුනේ නම්, වත්මන් තත්ත්වය අවබෝධ කර ගැනීම සඳහා අපට මෙම දත්ත කෙරෙහි අවධානය යොමු කළ හැකිය.
ස්වයංක්රීයකරණය
අපට ඉංජිනේරුවන් අතින් සංසන්දනය කිරීමෙන් නිදහස් කිරීමට අවශ්යය, එබැවින් ස්වයංක්රීයකරණය ක්රියාත්මක කිරීම වැදගත් වේ. බෙදා හැරීමේ නල මාර්ගය සාමාන්යයෙන් මේ වගේ ය:
- අපි ආරම්භ කරමු;
- සමතුලිතයට යටින් නෝඩය ඉවත් කරන්න;
- කැනරි නෝඩයක් සකස් කරන්න;
- සීමිත රථවාහන ප්රමාණයක් සමඟ සමතුලිතකය සක්රිය කරන්න;
- සංසන්දනය කරන්න.

මෙම අදියරේදී අපි ක්රියාත්මක කරන්නෙමු ස්වයංක්රීය සංසන්දනය. එය දිස්වන්නේ කෙසේද සහ එය යෙදවීමෙන් පසු සත්යාපනයට වඩා හොඳ වන්නේ ඇයි, අපි ජෙන්කින්ස්ගේ උදාහරණයක් දෙස බලමු.
මෙය Groovy වෙත නල මාර්ගයයි.
while (System.currentTimeMillis() < endCanaryTs) {
def isOk = compare(srv, canary, time, base, offset, metrics)
if (isOk) {
sleep DEFAULT SLEEP
} else {
echo "Canary failed, need to revert"
return false
}
}
මෙන්න ලූප් එකේ අපි නව නෝඩය පැයක් සඳහා සංසන්දනය කරමු. කැනරි ක්රියාවලිය තවමත් ක්රියාවලිය අවසන් කර නොමැති නම්, අපි ශ්රිතය ලෙස හඳුන්වමු. සෑම දෙයක්ම හොඳින් හෝ නැතැයි ඇය වාර්තා කරයි: def isOk = compare(srv, canary, time, base, offset, metrics).
සියල්ල යහපත් නම් - sleep DEFAULT SLEEP, උදාහරණයක් ලෙස, තත්පරයක් සඳහා, සහ දිගටම. එසේ නොවේ නම්, පිටවීම - යෙදවීම අසාර්ථක විය.
මෙට්රික් විස්තරය. කාර්යය කෙබඳු විය හැකිදැයි බලමු compare DSL හි උදාහරණය මත.
metric(
'errorCounts',
'rate(errorCounts{node=~"$canaryInst"}[5m] offset $offset)',
{ baseValue, canaryValue ->
if (canaryValue > baseValue * 1.3) return false
return true
}
)
අපි හිතමු අපි වැරදි සංඛ්යාව සංසන්දනය කරනවා කියලා අපිට අන්තිම විනාඩි 5ට තත්පරයට වැරදි ප්රමාණය දැනගන්න ඕන.
අපට අගයන් දෙකක් ඇත: පදනම සහ කැනරි නෝඩ්. කැනරි නෝඩයේ අගය වත්මන් එකයි. මූලික - baseValue වෙනත් ඕනෑම කැනරි නොවන නෝඩයක අගය වේ. අපගේ අත්දැකීම් සහ නිරීක්ෂණ මත පදනම්ව අප විසින් සකස් කරන ලද සූත්රයට අනුව අපි අගයන් එකිනෙකා සමඟ සංසන්දනය කරමු. වටිනාකම නම් canaryValue නරකයි, පසුව යෙදවීම අසාර්ථක විය, අපි ආපසු හැරෙමු.
මේ සියල්ල අවශ්ය වන්නේ ඇයි?
පුද්ගලයෙකුට මෙට්රික් සිය ගණනක් සහ දහස් ගණනක් පරීක්ෂා කළ නොහැකවිශේෂයෙන්ම එය ඉක්මනින් කිරීමට. ස්වයංක්රීය සංසන්දනය සියලු ප්රමිතික පරීක්ෂා කිරීමට සහ ගැටළු පිළිබඳව ඔබට ඉක්මනින් දැනුම් දීමට උපකාරී වේ. අනතුරු ඇඟවීමේ වේලාව ඉතා වැදගත් වේ: අවසාන තත්පර 2 තුළ යමක් සිදු වූවා නම්, හානිය මිනිත්තු 15 කට පෙර සිදු වූවාක් මෙන් විශාල නොවනු ඇත. යමෙක් ගැටලුවක් දකින තුරු, සහය වීමට ලියන තෙක් සහ ආපසු හැරවීමට අපට සහාය දෙන තුරු, ඔබට පාරිභෝගිකයින් අහිමි විය හැක.
ක්රියාවලිය සිදු වූ අතර සියල්ල හොඳින් නම්, අපි අනෙක් සියලුම නෝඩ් ස්වයංක්රීයව යොදවන්නෙමු. මේ කාලය තුළ ඉංජිනේරුවන් කිසිවක් නොකරයි. ඔවුන් කැනරි දියත් කරන විට පමණක් ඔවුන් තීරණය කරන්නේ කුමන ප්රමිතික ගත යුතුද, කොපමණ කාලයක් සංසන්දනය කළ යුතුද, කුමන උපාය මාර්ගයක් භාවිතා කළ යුතුද යන්නයි.

ගැටළු තිබේ නම්, අපි ස්වයංක්රීයව කැනරි නෝඩය පෙරළා, පෙර අනුවාදවල වැඩ කර අප සොයාගත් දෝෂ නිවැරදි කරන්නෙමු. ප්රමිතික අනුව, ඒවා සොයා ගැනීමට සහ නව අනුවාදයෙන් සිදුවන හානිය බැලීමට පහසුය.
බාධක
ඇත්ත වශයෙන්ම, මෙය ක්රියාත්මක කිරීම පහසු නැත. මුලින්ම, ඔබට අවශ්යයි සාමාන්ය අධීක්ෂණ පද්ධතිය. ඉංජිනේරුවන්ට ඔවුන්ගේම ප්රමිතික ඇත, සහාය සහ විශ්ලේෂකයින්ට විවිධ ප්රමිතික ඇත, සහ ව්යාපාරවලට තුන්වන ඒවා ඇත. පොදු පද්ධතිය යනු ව්යාපාර සහ සංවර්ධනය කතා කරන පොදු භාෂාවයි.
ප්රායෝගිකව පරීක්ෂා කිරීම අවශ්ය වේ මෙට්රික් ස්ථාවරත්වය. පරීක්ෂා කිරීම ඔබට තේරුම් ගැනීමට උපකාරී වේ ගුණාත්මකභාවය සහතික කිරීම සඳහා අවශ්ය අවම ප්රමිතික කට්ටලය කුමක්ද?.
මෙය සාක්ෂාත් කර ගන්නේ කෙසේද? යෙදවීමේදී නොව canary-service භාවිතා කරන්න. අපි පැරණි අනුවාදයට යම් සේවාවක් එක් කරන්නෙමු, ඕනෑම වේලාවක ඕනෑම කැපවූ නෝඩයක් ගත හැකි, යෙදවීමකින් තොරව ගමනාගමනය අඩු කරන්න. අපි සංසන්දනය කිරීමෙන් පසු: අපි වැරදි අධ්යයනය කර ගුණාත්මකභාවය ලබා ගන්නා විට එම රේඛාව සොයන්නෙමු.

කැනරි නිකුතුවලින් අපට ප්රයෝජන ලැබුණේ කෙසේද?
දෝෂ වලින් සිදුවන හානිය ප්රතිශතය අවම කර ඇත. බොහෝ යෙදවීමේ දෝෂ සමහර දත්තවල හෝ ප්රමුඛතාවයේ නොගැලපීම් නිසා වේ. එවැනි දෝෂ බොහෝ අඩුයි, මන්ද අපට පළමු තත්පර තුළ ගැටළුව විසඳා ගත හැකිය.
ප්රශස්ත කණ්ඩායම් වැඩ. ආරම්භකයින්ට "වැරදීමක් කිරීමට අයිතියක්" ඇත: ඔවුන් වැරැද්දක් කිරීමට බිය නොවී නිෂ්පාදනයට යෙදවිය හැකිය, අතිරේක මුලපිරීමක්, වැඩ කිරීමට දිරිගැන්වීමක් ඇත. ඔවුන් යමක් කැඩුවොත්, එය විවේචනාත්මක නොවනු ඇත, වැරැද්දක් කරන තැනැත්තා නෙරපා හරිනු නොලැබේ.
ස්වයංක්රීය යෙදවීම. මෙය තවදුරටත් පෙර මෙන් අතින් ක්රියාවලියක් නොව සැබෑ ස්වයංක්රීය ක්රියාවලියකි. නමුත් එය වැඩි කාලයක් ගතවේ.
වැදගත් ප්රමිතික උද්දීපනය කරන ලදී. ව්යාපාර සහ ඉංජිනේරුවන්ගෙන් ආරම්භ වන මුළු සමාගමම, අපගේ නිෂ්පාදනයේ ඇත්ත වශයෙන්ම වැදගත් වන්නේ කුමක්ද, කුමන ප්රමිතික, උදාහරණයක් ලෙස, පරිශීලකයින්ගේ පිටතට ගලායාම සහ ගලා ඒම තේරුම් ගනී. අපි ක්රියාවලිය පාලනය කරමු: අපි ප්රමිතික පරීක්ෂා කරන්නෙමු, නව ඒවා හඳුන්වා දෙන්නෙමු, වඩා ඵලදායී ලෙස මුදල් ඉපයිය හැකි පද්ධතියක් ගොඩනැගීම සඳහා පැරණි ඒවා ක්රියා කරන ආකාරය බලන්න.
අපට උපකාර වන සිසිල් පුරුදු සහ පද්ධති රාශියක් අප සතුව ඇත. එසේ තිබියදීත්, අපට උපකාර වන ක්රමයක් අප සතුව තිබේද නැද්ද යන්න නොසලකා අපි වෘත්තීය වීමට සහ අපගේ කාර්යය හොඳින් කිරීමට උත්සාහ කරමු.
ඉංජිනේරු ප්රවේශයන් සහ භාවිතයන් - . ඔබ තාක්ෂණික විශිෂ්ටත්වය කරා යන මාවතේ සාර්ථකත්වයක් අත්කර ගෙන තිබේ නම් සහ මේ සඳහා ඔබට උපකාර කළ දේ ඔබට පැවසීමට සූදානම් නම්, - .
අපි සැලසුම් කරනවා ජූනි 8. දැන් සමුළුවට සහභාගි වීම ගැන තීරණ ගැනීම අපහසු බව අපට වැටහෙනවා. නමුත් ඒ අතරම, නිරෝධායනය වෘත්තීය සන්නිවේදනය සහ සංවර්ධනය නැවැත්වීමට හේතුවක් නොවන බව අපි විශ්වාස කරමු. එමනිසා, ඕනෑම අවස්ථාවක, තාක්ෂණික නායකත්වයක කාර්යයන් සහ ඒවා විසඳීමට ප්රවේශයන් සාකච්ඡා කිරීමට අපි ක්රමයක් සොයා ගනිමු - අවශ්ය නම්, අපි අන්තර්ජාලයට ගොස් එහි ජාලකරණය සකස් කරන්නෙමු!
මූලාශ්රය: www.habr.com
