ඔබට වලාකුළු සේවාවක් ඇති විට හොඳින් නිදා ගන්නේ කෙසේද: මූලික වාස්තු විද්‍යාත්මක ඉඟි

ඔබට වලාකුළු සේවාවක් ඇති විට හොඳින් නිදා ගන්නේ කෙසේද: මූලික වාස්තු විද්‍යාත්මක ඉඟිසොෆියාග්වර්ල්ඩ් විසින් අහිමි විය

මිලියන සංඛ්‍යාත පරිශීලකයින් විසින් ප්‍රවේශ වන මහා පරිමාණ සේවාවන් සමඟ ඉංජිනේරුවන්ට වැඩ කිරීමට උපකාර වන පොදු රටා කිහිපයක් මෙම ලිපියේ අඩංගු වේ. 

කතුවරයාගේ අත්දැකීම් අනුව, මෙය සම්පූර්ණ ලැයිස්තුවක් නොවේ, නමුත් ඇත්ත වශයෙන්ම ඵලදායී උපදෙස්. ඉතින්, අපි පටන් ගනිමු.

සහාය ඇතිව පරිවර්තනය කර ඇත Mail.ru Cloud Solutions.

පළමු මට්ටම

පහත ලැයිස්තුගත කර ඇති පියවරයන් ක්රියාත්මක කිරීමට සාපේක්ෂව සරල නමුත් ඉහළ බලපෑමක් ඇත. ඔබ මීට පෙර ඒවා උත්සාහ කර නොමැති නම්, සැලකිය යුතු වැඩිදියුණු කිරීම් ගැන ඔබ පුදුමයට පත් වනු ඇත.

කේතය ලෙස යටිතල පහසුකම්

උපදේශයේ පළමු කොටස වන්නේ යටිතල පහසුකම් කේතය ලෙස ක්‍රියාත්මක කිරීමයි. මෙයින් අදහස් කරන්නේ ඔබට සම්පූර්ණ යටිතල පහසුකම් යෙදවීමට ක්‍රමලේඛන ක්‍රමයක් තිබිය යුතු බවයි. එය සංකීර්ණ බවක් පෙනේ, නමුත් අපි ඇත්ත වශයෙන්ම පහත කේතය ගැන කතා කරමු:

අතථ්‍ය යන්ත්‍ර 100ක් යෙදවීම

  • Ubuntu සමඟ
  • 2 GB RAM එක බැගින්
  • ඔවුන්ට පහත කේතය ලැබෙනු ඇත
  • මෙම පරාමිතීන් සමඟ

ඔබට ඔබගේ යටිතල ව්‍යුහයේ වෙනස්කම් නිරීක්ෂණය කළ හැකි අතර අනුවාද පාලනය භාවිතයෙන් ඉක්මනින් ඒවා වෙත ප්‍රතිවර්තනය කළ හැක.

මා තුළ සිටින නූතනවාදියා පවසන්නේ ඉහත සියල්ල කිරීමට ඔබට Kubernetes/Docker භාවිතා කළ හැකි බවත් ඔහු නිවැරදි බවත්ය.

මීට අමතරව, ඔබට Chef, Puppet හෝ Terraform භාවිතයෙන් ස්වයංක්රීයකරණය සැපයිය හැකිය.

අඛණ්ඩ ඒකාබද්ධ කිරීම සහ බෙදා හැරීම

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

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

ඔබට වලාකුළු සේවාවක් ඇති විට හොඳින් නිදා ගන්නේ කෙසේද: මූලික වාස්තු විද්‍යාත්මක ඉඟි
මේ කිනිතුල්ලන් දකිනවා තරම් ලස්සන දෙයක් තවත් නැහැ

මෙම තාක්ෂණය සඳහා ඔබට Github, CircleCI හෝ Jenkins ඇගයීමට ලක් කළ හැකිය.

ලෝඩ් බැලන්සර්

එබැවින්, ගමනාගමනය යළි හරවා යැවීමට සහ සියලු නෝඩ් වල සමාන බරක් සහතික කිරීම සඳහා load balancer එකක් ධාවනය කිරීමට අපට අවශ්‍ය වේ, නැතහොත් අසාර්ථක වූ විට සේවාව දිගටම පවතිනු ඇත:

ඔබට වලාකුළු සේවාවක් ඇති විට හොඳින් නිදා ගන්නේ කෙසේද: මූලික වාස්තු විද්‍යාත්මක ඉඟි
බඩු බැලන්සර් සාමාන්‍යයෙන් ගමනාගමනය බෙදා හැරීමේ හොඳ කාර්යයක් කරයි. හොඳම පිළිවෙත නම් ඔබට එකදු අසාර්ථක වීමක් ඇති නොවන පරිදි අධික ලෙස සමතුලිත වීමයි.

සාමාන්‍යයෙන්, ඔබ භාවිතා කරන ක්ලවුඩ් තුළ load balancers වින්‍යාස කර ඇත.

ඉල්ලීම් සඳහා RayID, සහසම්බන්ධතා ID හෝ UUID

ඔබ කවදා හෝ මෙවැනි පණිවිඩයක් සමඟ යෙදුම් දෝෂයකට මුහුණ දී තිබේද: "මොකක්හරි වැරැද්දක් වෙලා. මෙම හැඳුනුම්පත සුරකින්න සහ එය අපගේ සහායක කණ්ඩායමට යවන්න"?

ඔබට වලාකුළු සේවාවක් ඇති විට හොඳින් නිදා ගන්නේ කෙසේද: මූලික වාස්තු විද්‍යාත්මක ඉඟි
අනන්‍ය හඳුනාගැනීමක්, සහසම්බන්ධතා හැඳුනුම්පතක්, RayID, හෝ ඕනෑම වෙනස්කමක්, ඔබට එහි ජීවන චක්‍රය පුරා ඉල්ලීමක් නිරීක්ෂණය කිරීමට ඉඩ සලසන අද්විතීය හඳුනාගැනීමකි. ලොග් වල සම්පූර්ණ ඉල්ලීම් මාර්ගය නිරීක්ෂණය කිරීමට මෙය ඔබට ඉඩ සලසයි.

ඔබට වලාකුළු සේවාවක් ඇති විට හොඳින් නිදා ගන්නේ කෙසේද: මූලික වාස්තු විද්‍යාත්මක ඉඟි
පරිශීලකයා පද්ධතිය A වෙත ඉල්ලීමක් කරයි, පසුව A සම්බන්ධතා B, C සම්බන්ධ කරයි, එය X හි ගබඩා කරයි, පසුව ඉල්ලීම A වෙත ආපසු ලබා දෙනු ලැබේ.

ඔබ අතථ්‍ය යන්ත්‍රවලට දුරස්ථව සම්බන්ධ වී ඉල්ලීම් මාර්ගය සොයා ගැනීමට උත්සාහ කළහොත් (සහ කුමන ඇමතුම් ලබා ගන්නේද යන්න අතින් සහසම්බන්ධ කිරීමට), ඔබට පිස්සු හැදෙනු ඇත. අද්විතීය හඳුනාගැනීමක් තිබීම ජීවිතය වඩාත් පහසු කරයි. ඔබේ සේවාව වර්ධනය වන විට කාලය ඉතිරි කර ගැනීමට ඔබට කළ හැකි සරලම දේ මෙයයි.

අතරමැදි මට්ටම

මෙහි උපදෙස් පෙර ඒවාට වඩා සංකීර්ණ වේ, නමුත් නිවැරදි මෙවලම් කාර්යය පහසු කරයි, කුඩා හා මධ්යම ප්රමාණයේ සමාගම් සඳහා පවා ආයෝජන මත ප්රතිලාභයක් ලබා දෙයි.

මධ්යගත ලොග් කිරීම

සුභ පැතුම්! ඔබ අතථ්‍ය යන්ත්‍ර 100ක් යොදවා ඇත. ඊළඟ දවසේ, CEO පැමිණ සේවාව පරීක්ෂා කිරීමේදී ඔහුට ලැබුණු දෝෂයක් ගැන පැමිණිලි කරයි. එය අප ඉහත කතා කළ අනුරූප හැඳුනුම්පත වාර්තා කරයි, නමුත් බිඳ වැටීමට හේතු වූ එක සොයා ගැනීමට ඔබට යන්ත්‍ර 100 ක ලඝු-සටහන් හරහා බැලීමට සිදුවේ. අනික හෙට ඉදිරිපත් කරන්න කලින් ඒක හොයාගන්න ඕන.

මෙය විනෝදජනක වික්‍රමාන්විතයක් ලෙස පෙනුනද, ඔබට සියලුම සඟරා එක තැනක සෙවීමේ හැකියාව ඇති බව සහතික කර ගැනීම වඩාත් සුදුසුය. ELK තොගයේ ඇති ක්‍රියාකාරීත්වය භාවිතයෙන් ලඝු මධ්‍යගත කිරීමේ ගැටලුව මම විසඳා ගත්තෙමි: එය සෙවිය හැකි ලොග් එකතුවට සහය දක්වයි. නිශ්චිත සඟරාවක් සොයා ගැනීමේ ගැටලුව විසඳීමට මෙය සැබවින්ම උපකාර වනු ඇත. ප්‍රසාද දීමනාවක් ලෙස, ඔබට ප්‍රස්ථාර සහ එවැනි වෙනත් විනෝදජනක දේවල් නිර්මාණය කළ හැකිය.

ඔබට වලාකුළු සේවාවක් ඇති විට හොඳින් නිදා ගන්නේ කෙසේද: මූලික වාස්තු විද්‍යාත්මක ඉඟි
ELK ස්ටැක් ක්‍රියාකාරිත්වය

නිරීක්ෂණ නියෝජිතයන්

දැන් ඔබේ සේවාව ක්‍රියාත්මක වන අතර, එය සුමටව ක්‍රියාත්මක වන බවට ඔබ සහතික විය යුතුය. මෙය කිරීමට හොඳම ක්රමය වන්නේ කිහිපයක් ධාවනය කිරීමයි නියෝජිතයන්, එය සමාන්තරව ක්‍රියා කරන අතර එය ක්‍රියා කරන්නේ දැයි පරීක්ෂා කර මූලික මෙහෙයුම් සිදු කරයි.

මෙම අවස්ථාවේදී ඔබ එය පරීක්ෂා කරන්න ධාවන ගොඩනැගීම හොඳින් දැනෙන අතර හොඳින් ක්‍රියා කරයි.

කුඩා හා මධ්‍යම ප්‍රමාණයේ ව්‍යාපෘති සඳහා, API අධීක්ෂණය සහ ලේඛනගත කිරීම සඳහා මම Postman නිර්දේශ කරමි. නමුත් පොදුවේ, ඔබට අවශ්‍ය වන්නේ ඇනහිටීමක් සිදු වූ විට දැන ගැනීමට සහ කාලෝචිත ආකාරයකින් දැනුම් දීමට ඔබට ක්‍රමයක් ඇති බවට වග බලා ගැනීමයි.

භාරය මත ස්වයං පරිමාණය කිරීම

එය ඉතා සරලයි. ඔබට VM සේවා ඉල්ලීම් තිබේ නම් සහ එය 80% මතක භාවිතයට ළඟා වන්නේ නම්, ඔබට එහි සම්පත් වැඩි කිරීමට හෝ පොකුරට තවත් VM එකතු කිරීමට හැකිය. මෙම මෙහෙයුම් ස්වයංක්‍රීයව ක්‍රියාත්මක කිරීම භාරය යටතේ ප්‍රත්‍යාස්ථ බල වෙනස්වීම් සඳහා විශිෂ්ටයි. නමුත් ඔබ කොපමණ මුදලක් වියදම් කරනවාද යන්න සහ සාධාරණ සීමාවන් නියම කිරීම ගැන ඔබ සැමවිටම සැලකිලිමත් විය යුතුය.

ඔබට වලාකුළු සේවාවක් ඇති විට හොඳින් නිදා ගන්නේ කෙසේද: මූලික වාස්තු විද්‍යාත්මක ඉඟි
බොහෝ වලාකුළු සේවා සමඟ, ඔබට එය වැඩි සේවාදායක හෝ වඩා බලවත් සේවාදායකයන් භාවිතයෙන් ස්වයංක්‍රීය පරිමාණයට වින්‍යාසගත කළ හැක.

අත්හදා බැලීමේ පද්ධතිය

යාවත්කාලීනයන් ආරක්ෂිතව ලබා ගැනීමට හොඳ ක්‍රමයක් නම්, පරිශීලකයින්ගෙන් 1% ක් සඳහා පැයක් සඳහා යමක් පරීක්ෂා කිරීමට හැකි වීමයි. එවැනි යාන්ත්‍රණ ක්‍රියාත්මක වන ආකාරය ඔබ දැක ඇත. උදාහරණයක් ලෙස, Facebook විසින් ප්‍රේක්ෂකයන්ගේ කොටස් වෙනස් වර්ණයක් පෙන්වයි හෝ පරිශීලකයින් වෙනස්කම් දකින ආකාරය බැලීමට අකුරු ප්‍රමාණය වෙනස් කරයි. මෙය A/B පරීක්ෂණය ලෙස හැඳින්වේ.

නව අංගයක් නිකුත් කිරීම පවා අත්හදා බැලීමක් ලෙස ආරම්භ කළ හැකි අතර පසුව එය මුදා හරින ආකාරය තීරණය කළ හැකිය. ඔබගේ සේවාව පිරිහීමට හේතු වන කාර්යය මත පදනම්ව පියාසර කිරීමේදී "මතක තබා ගැනීමට" හෝ වෙනස් කිරීමට ඔබට හැකියාව ලැබේ.

උසස් මට්ටම

ක්‍රියාත්මක කිරීමට තරමක් අපහසු උපදෙස් මෙන්න. ඔබට තව ටිකක් සම්පත් අවශ්‍ය වනු ඇත, එබැවින් කුඩා හෝ මධ්‍යම ප්‍රමාණයේ සමාගමකට මෙය කළමනාකරණය කිරීමට අපහසු වනු ඇත.

නිල්-කොළ යෙදවුම්

මේක තමයි මම "Erlang" දිගහැරෙන ආකාරය ලෙස හඳුන්වන්නේ. දුරකථන සමාගම් දර්ශනය වූ විට Erlang බහුලව භාවිතා විය. දුරකථන ඇමතුම් ලබා ගැනීමට මෘදු ස්විච භාවිතා කිරීමට පටන් ගත්තේය. මෙම ස්විචවල ඇති මෘදුකාංගයේ ප්‍රධාන අරමුණ වූයේ පද්ධති උත්ශ්‍රේණි කිරීමේදී ඇමතුම් නොහැරීමයි. පෙර එක බිඳ වැටීමකින් තොරව නව මොඩියුලයක් පැටවීමේ කදිම ක්‍රමයක් Erlang සතුව ඇත.

මෙම පියවර රඳා පවතින්නේ load balancer එකක් තිබීම මතය. ඔබගේ මෘදුකාංගයේ N අනුවාදය ඔබ සතුව ඇතැයි සිතමු, පසුව ඔබට N+1 අනුවාදය යෙදවීමට අවශ්‍ය වේ. 

ඔබ අපිට හැකියි සේවාව නතර කර ඔබගේ පරිශීලකයින් සඳහා ක්‍රියා කරන වේලාවක ඊළඟ අනුවාදය නිකුත් කර යම් අක්‍රිය කාලයක් ලබා ගන්න. නමුත් ඔබ සතුව ඇතැයි සිතන්න ඇත්තටම දැඩි SLA කොන්දේසි. එබැවින්, SLA 99,99% යනු ඔබට නොබැඳි විය හැකි බවයි පමණි වසරකට විනාඩි 52 කින්.

ඔබට සැබවින්ම එවැනි දර්ශක සාක්ෂාත් කර ගැනීමට අවශ්‍ය නම්, ඔබට එකවර යෙදවීම් දෙකක් අවශ්‍ය වේ: 

  • දැන් තිබෙන එක (N);
  • ඊළඟ අනුවාදය (N+1). 

ඔබ ප්‍රතිගමන සඳහා සක්‍රියව නිරීක්ෂණය කරන අතරතුර ගමනාගමනයේ ප්‍රතිශතයක් නව අනුවාදයට (N+1) හරවා යවන ලෙස ඔබ load balancer හට කියයි.

ඔබට වලාකුළු සේවාවක් ඇති විට හොඳින් නිදා ගන්නේ කෙසේද: මූලික වාස්තු විද්‍යාත්මක ඉඟි
මෙන්න අපි හොඳින් වැඩ කරන හරිත N යෙදවීමක් ඇත. අපි මෙම යෙදවීමේ ඊළඟ අනුවාදය වෙත යාමට උත්සාහ කරන්නෙමු

අපගේ N+1 යෙදවීම කුඩා තදබදයක් සමඟ ක්‍රියා කරන්නේ දැයි බැලීමට පළමුව අපි කුඩා පරීක්ෂණයක් යවමු:

ඔබට වලාකුළු සේවාවක් ඇති විට හොඳින් නිදා ගන්නේ කෙසේද: මූලික වාස්තු විද්‍යාත්මක ඉඟි
අවසාන වශයෙන්, අපගේ යෙදවීම සම්පූර්ණ වන තෙක් අවසානයේ ක්‍රියාත්මක වන ස්වයංක්‍රීය චෙක්පත් කට්ටලයක් අප සතුව ඇත. ඔබ නම් ඉතා ඉතා ප්‍රවේශම් වන්න, නරක ප්‍රතිගමනයකදී ඉක්මන් ආපසු හැරීමක් සඳහා ඔබට ඔබේ N යෙදවීම සදහටම සුරැකිය හැක:

ඔබට වලාකුළු සේවාවක් ඇති විට හොඳින් නිදා ගන්නේ කෙසේද: මූලික වාස්තු විද්‍යාත්මක ඉඟි
ඔබට ඊටත් වඩා උසස් මට්ටමකට යාමට අවශ්‍ය නම්, නිල්-කොළ යෙදවුමේ ඇති සියල්ල ස්වයංක්‍රීයව ක්‍රියාත්මක වීමට ඉඩ දෙන්න.

විෂමතා හඳුනා ගැනීම සහ ස්වයංක්‍රීයව අවම කිරීම

ඔබට මධ්‍යගත ලොග් කිරීම සහ හොඳ ලොග් එකතුවක් ඇති බැවින්, ඔබට දැනටමත් ඉහළ ඉලක්ක තැබිය හැකිය. උදාහරණයක් ලෙස, අසාර්ථකත්වය කල්තියා පුරෝකථනය කරන්න. මොනිටරවල සහ ලඝු-සටහන් වල ක්‍රියාකාරකම් නිරීක්ෂණය කරනු ලබන අතර විවිධ රූප සටහන් ගොඩනගා ඇත - තවද ඔබට වැරදෙන්නේ කුමක්දැයි කල්තියා පුරෝකථනය කළ හැකිය:

ඔබට වලාකුළු සේවාවක් ඇති විට හොඳින් නිදා ගන්නේ කෙසේද: මූලික වාස්තු විද්‍යාත්මක ඉඟි
විෂමතා අනාවරණය වූ පසු, ඔබ සේවාව සපයන සමහර ඉඟි පරීක්ෂා කිරීමට පටන් ගනී. උදාහරණයක් ලෙස, CPU භාරයේ වැඩිවීමක් දෘඪ තැටියක් අසමත් වන බව පෙන්නුම් කළ හැකි අතර, ඉල්ලීම්වල වැඩිවීමක් ඔබට පරිමාණය කළ යුතු බව පෙන්නුම් කරයි. මෙම ආකාරයේ සංඛ්‍යාන දත්ත ඔබට සේවාව ක්‍රියාකාරී කිරීමට ඉඩ සලසයි.

මෙම තීක්ෂ්ණ බුද්ධිය සමඟින්, ඔබට ඕනෑම මානයකින් පරිමාණය කළ හැකි අතර යන්ත්‍ර, දත්ත සමුදායන්, සම්බන්ධතා සහ අනෙකුත් සම්පත් වල ලක්ෂණ ප්‍රගාමීව සහ ප්‍රතික්‍රියාශීලීව වෙනස් කළ හැක.

එච්චරයි!

ඔබ වලාකුළු සේවාවක් ඉහළ නංවන්නේ නම් මෙම ප්‍රමුඛතා ලැයිස්තුව ඔබට ගැටලු රාශියක් ඉතිරි කරයි.

මුල් ලිපියේ කතුවරයා පාඨකයින්ට ඔවුන්ගේ අදහස් දැක්වීමට සහ වෙනස්කම් කිරීමට ආරාධනා කරයි. ලිපිය විවෘත මූලාශ්‍ර ලෙස බෙදා හරිනු ලැබේ, කතුවරයාගේ ඉල්ලීම් අදින්න Github මත පිළිගනී.

මාතෘකාව පිළිබඳ තවත් කියවිය යුතු දේ:

  1. යන්න සහ CPU හැඹිලි
  2. ක්‍රියාත්මක කිරීම සඳහා අච්චුවක් සමඟ මුහුදු කොල්ලකෑමේ ආත්මය තුළ Kubernetes
  3. Telegram හි Kubernetes අවට අපගේ නාලිකාව

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න