
සටහන. පරිවර්තනය.: මෙම ලිපියේ කතුවරයා (Luc Perkins) CNCF සංවිධානයේ සංවර්ධක උපදේශකයෙකි, එය Linkerd, SMI (Service Mesh Interface) සහ Kuma වැනි විවෘත මූලාශ්ර ව්යාපෘති සඳහා නිවහන වේ (මාර්ගයෙන්, ඔබත් කල්පනා කර තිබේද Istio යනු ඇයි? මෙම ලැයිස්තුවේ නැද්ද?.) නැවත වරක් DevOps ප්රජාවට "සේවා දැලක්" නම් වූ නවීන ප්රබෝධය පිළිබඳ වඩා හොඳ අවබෝධයක් ගෙන ඒමට උත්සාහ කරමින්, ඔහු එවැනි විසඳුම් සපයන ලාක්ෂණික හැකියාවන් 16ක් ලැයිස්තුගත කරයි.
අද - මෘදුකාංග ඉංජිනේරු ක්ෂේත්රයේ උණුසුම්ම මාතෘකා වලින් එකකි (සහ නිවැරදිව!). මම හිතන්නේ මෙම තාක්ෂණය ඇදහිය නොහැකි තරම් පොරොන්දු වන අතර එය පුළුල් ලෙස භාවිතා කරනු දැකීමට කැමතියි (එය තේරුමක් ඇති විට, ඇත්ත වශයෙන්ම). කෙසේ වෙතත්, එය තවමත් බොහෝ මිනිසුන් සඳහා අභිරහසකින් වට වී ඇත. ඒ අතරම, අය පවා හොඳින් දන්නා එය සමඟ, එහි වාසි සහ එය හරියටම කුමක්ද (ඔබේ ඇත්ත වශයෙන්ම ඇතුළුව) ප්රකාශ කිරීම බොහෝ විට දුෂ්කර ය. මෙම ලිපියෙන් මම විවිධ ලැයිස්තුගත කිරීමෙන් තත්ත්වය නිවැරදි කිරීමට උත්සාහ කරමි නඩු භාවිතා කරන්න "සේවා දැල්"*.
* සටහන transl.: මෙහි සහ තවදුරටත් ලිපියේ හරියටම මෙම පරිවර්තනය ("සේවා දැල") තවමත් නව යෙදුම සේවා දැල් සඳහා භාවිතා කරනු ඇත.
නමුත් මුලින්ම මට අදහස් කිහිපයක් කිරීමට අවශ්යයි:
- මම කිසි විටෙකත් සේවා දැල් සමඟ වැඩ කර හෝ මගේම අධ්යාපනය සඳහා ආරම්භ කළ ව්යාපෘති වලින් පිටත ඒවා භාවිතා කර නැත. අනෙක් අතට, මම 2015 දී Twitter හි අභ්යන්තර සේවා දැල සඳහා ලියකියවිලි පොකුරක් ලියා ඇත (එය "සේවා දැලක්" ලෙස පවා හැඳින්වූයේ නැත) සහ වෙබ් අඩවියේ සංවර්ධනයට සහ ලේඛනගත කිරීමට සහභාගී වූයේ මමය. , ඒ නිසා යමක් අදහස් වේ.
- මගේ ලැයිස්තුව ආසන්න සහ අසම්පූර්ණයි. මා නොදන්නා භාවිත අවස්ථා තිබිය හැකි අතර, තාක්ෂණය දියුණු වන විට සහ එහි ජනප්රියත්වය වර්ධනය වන විට කාලයත් සමඟ නව විකල්ප පැන නගිනු ඇත.
- ඒ අතරම, පවතින සෑම සේවා දැලක් ක්රියාත්මක කිරීමක්ම ලැයිස්තුගත භාවිත අවස්ථා සියල්ලටම සහය නොදක්වයි. එබැවින්, “සේවා දැල් කළ හැක...” වැනි මගේ ප්රකාශ “තනි පුද්ගල, සහ සමහර විට සියලුම ජනප්රිය සේවා දැල් ක්රියාත්මක කිරීම් කළ හැකිය...” ලෙස කියවිය යුතුය.
- උදාහරණවල අනුපිළිවෙලෙහි වෙනසක් නැත.
කෙටි ලැයිස්තුව:
- සේවා සොයාගැනීම;
- සංකේතනය;
- සත්යාපනය සහ අවසරය;
- බර සමතුලිත කිරීම;
- පරිපථ කඩනය;
- ස්වයංක්රීය පරිමාණය;
- කැනරි යෙදවීම්;
- නිල්-කොළ යෙදවුම්;
- සෞඛ්ය පරීක්ෂාව;
- බර පැටවීම;
- රථවාහන දර්පණය;
- පරිවාරක;
- ඉල්ලීම් අනුපාතය සීමා කිරීම, නැවත උත්සාහ කිරීම සහ කල් ඉකුත්වීම්;
- ටෙලිමෙට්රි;
- විගණන;
- දෘශ්යකරණය.
1. සේවා සොයා ගැනීම
TL;DR: සරල නම් භාවිතයෙන් ජාලයේ වෙනත් සේවාවන් වෙත සම්බන්ධ වන්න.
ප්රමාණවත් නම් භාවිතා කරමින් සේවාවන් ස්වයංක්රීයව එකිනෙකා "සොයා ගැනීමට" හැකි විය යුතුය - උදාහරණයක් ලෙස, service.api.production, pets/staging හෝ cassandra. වලාකුළු පරිසරය ප්රත්යාස්ථ වන අතර, එක් නමකට සේවාවක බොහෝ අවස්ථා සැඟවිය හැක. එවැනි තත්වයක් තුළ සියලුම IP ලිපින දෘඪ කේතය කිරීමට භෞතිකව කළ නොහැකි බව පැහැදිලිය.
තවද, එක් සේවාවක් තවත් සේවාවක් සොයාගත් විට, එහි බිඳුණු අවස්ථාවෙහි ආදානය අවසන් වේ යැයි බියෙන් තොරව එම සේවාව වෙත ඉල්ලීම් යැවීමට එයට හැකි විය යුතුය. වෙනත් වචන වලින් කිවහොත්, සේවා දැල සියලු සේවා අවස්ථා වල සෞඛ්යය නිරීක්ෂණය කළ යුතු අතර සත්කාරක ලැයිස්තුව හැකිතාක් යාවත්කාලීනව තබා ගත යුතුය.
සෑම සේවා දැලක්ම සේවා සොයාගැනීමේ යාන්ත්රණය වෙනස් ලෙස ක්රියාත්මක කරයි. මේ මොහොතේ, වඩාත් පොදු මාර්ගය වන්නේ Kubernetes DNS වැනි බාහිර ක්රියාවලීන් වෙත පැවරීමයි. ඉස්සර ට්විටර් එකේ අපි මේ සඳහා නම් කිරීමේ ක් රමයක් භාවිත කළා . මීට අමතරව, සේවා දැල් තාක්ෂණය මඟින් අභිරුචි නම් කිරීමේ යාන්ත්රණයන් මතු වීමට හැකි වේ (එවැනි ක්රියාකාරීත්වයක් සහිත SM ක්රියාත්මක කිරීමක් මා තවමත් දැක නැතත්).
2. සංකේතනය
TL;DR: සේවා අතර සංකේතනය නොකළ ගමනාගමනයෙන් මිදෙන්න සහ මෙම ක්රියාවලිය ස්වයංක්රීය සහ පරිමාණය කරන්න.
ප්රහාරකයන්ට ඔබේ අභ්යන්තර ජාලයට විනිවිද යාමට නොහැකි බව දැන ගැනීම සතුටක්. ෆයර්වෝල් මේ සඳහා විශාල කාර්යයක් කරයි. නමුත් හැකර් කෙනෙක් ඇතුලට ගියොත් මොකද වෙන්නේ? අන්තර් සේවා ගමනාගමනය සමඟ ඔහුට අවශ්ය ඕනෑම දෙයක් කිරීමට ඔහුට හැකි වේද? කොහොම හරි මෙහෙම දෙයක් වෙන්න එපා කියල ප්රාර්ථනා කරමු. මෙම තත්ත්වය වැලැක්වීම සඳහා, ඔබ සේවා අතර සියලුම ගමනාගමනය සංකේතනය කර ඇති ශුන්ය විශ්වාස ජාලයක් ක්රියාත්මක කළ යුතුය. බොහෝ නවීන සේවා දැල් මෙය සාක්ෂාත් කරගනු ලබන්නේ අන්යෝන්ය මගිනි (අන්යෝන්ය TLS, mTLS). සමහර අවස්ථාවලදී, mTLS සම්පූර්ණ වලාකුළු සහ පොකුරු තුළ ක්රියා කරයි (මම හිතන්නේ අන්තර් ග්රහලෝක සන්නිවේදනය යම් දිනක ඒ හා සමානව සකසනු ඇත).
ඇත්ත වශයෙන්ම, mTLS සේවා දැලක් සඳහා විකල්ප. සෑම සේවාවකටම තමන්ගේම TLS ගැන සැලකිලිමත් විය හැකිය, නමුත් මෙයින් අදහස් කරන්නේ ඔබට සහතික උත්පාදනය කිරීමට, සේවා ධාරක හරහා ඒවා බෙදා හැරීමට සහ ගොනු වලින් මෙම සහතික පූරණය කරන යෙදුමේ කේතය ඇතුළත් කිරීමට ක්රමයක් සොයා ගැනීමට අවශ්ය වනු ඇති බවයි. ඔව්, මෙම සහතික නියමිත කාල සීමාවන් තුළ අලුත් කිරීමට අමතක නොකරන්න. සේවා දැල් වැනි පද්ධති සමඟ mTLS ස්වයංක්රීය කරයි , එය, අනෙක් අතට, සහතික නිකුත් කිරීමේ සහ භ්රමණය කිරීමේ ක්රියාවලිය ස්වයංක්රීය කරයි.
3. සත්යාපනය සහ අවසරය
TL;DR: ඉල්ලුම්කරු කවුරුන්ද යන්න සහ ඉල්ලීම සේවාව වෙත ළඟා වීමට පෙර ඔවුන්ට කිරීමට අවසර ඇත්තේ කුමක්ද යන්න නිර්වචනය කරන්න.
සේවා බොහෝ විට දැන ගැනීමට අවශ්ය වේ කවුද? ඉල්ලීම ඉටු කරයි (සත්යාපනය), සහ මෙම තොරතුරු භාවිතා කරමින්, තීරණය කරයි බව දී ඇති ආයතනයකට (අවසර දීම) කිරීමට අවසර ඇත. මෙම අවස්ථාවේදී, "කවුද" යන සර්වනාමය සැඟවිය හැක:
- වෙනත් සේවා. මෙය "සත්යාපනය" ලෙස හැඳින්වේ. සම වයසේ මිතුරන්" උදාහරණයක් ලෙස, සේවාව
webසේවාව වෙත ප්රවේශ වීමට අවශ්යයිdb. සේවා දැල් සාමාන්යයෙන් mTLS භාවිතයෙන් එවැනි ගැටළු විසඳයි: මෙම නඩුවේ සහතික අවශ්ය හඳුනාගැනීමක් ලෙස ක්රියා කරයි. - සමහර මානව පරිශීලකයන්. මෙය "සත්යාපනය" ලෙස හැඳින්වේ. ඉල්ලීම" උදාහරණයක් ලෙස, පරිශීලක
haxor69නව ලාම්පුවක් මිලදී ගැනීමට අවශ්යයි. සේවා දැල් විවිධ යාන්ත්රණ සපයයි, උදා. .අපෙන් බොහෝ දෙනෙක් මෙය යෙදුම් කේතයෙන් කර ඇත. ඉල්ලීමක් එනවා, අපි මේසය හරහා බලමු
users, පරිශීලකයා සොයාගෙන මුරපදය සංසන්දනය කරන්න, ඉන්පසු තීරුව පරීක්ෂා කරන්නpermissionsආදිය සේවා දැලක් සම්බන්ධයෙන්, ඉල්ලීම සේවාව වෙත ළඟා වීමට පෙර මෙය සිදු වේ.
ඉල්ලීම පැමිණියේ කාගෙන්ද යන්න අප තහවුරු කළ පසු, මෙම ආයතනයට කිරීමට අවසර ඇත්තේ කුමක්ද යන්න තීරණය කළ යුතුය. සමහර සේවා දැල් ඔබට YAML ගොනු ලෙස හෝ විධාන රේඛාවේ මූලික ප්රතිපත්ති (කළ හැක්කේ කාටද යන්න පිළිබඳව) සැකසීමට ඉඩ සලසයි, අනෙක් ඒවා වැනි රාමු සමඟ ඒකාබද්ධ කිරීම ලබා දෙයි. . අවසාන ඉලක්කය වන්නේ ඔබේ සේවාවන් විශ්වාසදායක මූලාශ්රයකින් පැමිණෙන බව ආරක්ෂිතව උපකල්පනය කරමින් ඕනෑම ඉල්ලීමක් පිළිගැනීමයි. и මෙම ක්රියාවට අවසර ඇත.
4. බර සමතුලිත කිරීම
TL;DR: නිශ්චිත රටාවකට අනුව සේවා අවස්ථා හරහා භාරය බෙදාහරින්න.
සේවා අංශයක් තුළ "සේවාවක්" බොහෝ විට සමාන අවස්ථා රාශියකින් සමන්විත වේ. උදාහරණයක් ලෙස, අද සේවාව cache පිටපත් 5 කින් සමන්විත වන අතර, හෙට ඔවුන්ගේ සංඛ්යාව 11 දක්වා වැඩි විය හැක. වෙත ඉල්ලීම් යවනු ලැබේ cache, නිශ්චිත අරමුණක් අනුව බෙදා හැරිය යුතුය. උදාහරණයක් ලෙස, ප්රමාදය අවම කිරීම හෝ වැඩ කරන අවස්ථාවට පැමිණීමේ සම්භාවිතාව උපරිම කිරීම. වඩාත් බහුලව භාවිතා වන ඇල්ගොරිතම රවුන්ඩ් රොබින් වේ, නමුත් තවත් බොහෝ දේ ඇත - උදාහරණයක් ලෙස, බර ක්රමය (බර සහිත) විමසුම් (ඔබට කැමති ඉලක්ක තෝරාගත හැක), නාද කරන්න (මුදු) හැෂිං (උඩු ධාරාවේ ධාරක හරහා ස්ථාවර හැෂිං භාවිතා කිරීම) හෝ අවම ඉල්ලීම් ක්රමය (අඩුම ඉල්ලීම් ඇති අවස්ථාවට මනාප ලබා දෙනු ලැබේ).
Classic balancers වලට HTTP caching සහ DDoS ආරක්ෂාව වැනි වෙනත් කාර්යයන් ඇත, නමුත් ඒවා නැගෙනහිර-බටහිර ගමනාගමනය සඳහා එතරම් අදාළ නොවේ (එනම් දත්ත මධ්යස්ථානයක් තුළ ගලා යන ගමනාගමනය සඳහා - දළ වශයෙන්. පරිවර්තනය.) (සේවා දැලෙහි සාමාන්ය විෂය පථය). ඇත්ත වශයෙන්ම, බර සමතුලිත කිරීම සඳහා සේවා දැලක් භාවිතා කිරීම අවශ්ය නොවේ, නමුත් එය මධ්යගත පාලන ස්ථරයකින් එක් එක් සේවාව සඳහා සමතුලිත කිරීමේ ප්රතිපත්ති සැකසීමට සහ පාලනය කිරීමට ඔබට ඉඩ සලසයි, එමඟින් ජාල තොගයේ වෙනම පැටවුම් සමතුලිතයින් ක්රියාත්මක කිරීමට සහ වින්යාස කිරීමට ඇති අවශ්යතාවය ඉවත් කරයි. .
5. පරිපථ කඩනය
TL;DR: ගැටළු සහගත සේවාව වෙත ගමනාගමනය නවත්වන්න සහ නරකම අවස්ථාවන්හිදී හානිය පාලනය කරන්න.
කිසියම් හේතුවක් නිසා සේවාවට ගමනාගමනය සමඟ සාර්ථකව කටයුතු කළ නොහැකි නම්, සේවා දැල මෙම ගැටළුව විසඳීම සඳහා විකල්ප කිහිපයක් සපයයි (අනෙකුත් ඒවා සුදුසු කොටස්වල සාකච්ඡා කරනු ඇත). ගමනාගමනයෙන් සේවාවක් විසන්ධි කිරීම සඳහා වඩාත්ම දරුණු විකල්පය පරිපථ බිඳීමයි. කෙසේ වෙතත්, එයම තේරුමක් නැත - උපස්ථ සැලැස්මක් අවශ්ය වේ. පිටුපස පීඩනය සැපයිය හැකිය () ඉල්ලීම් කරන සේවාවන් වෙත (මේ සඳහා ඔබේ සේවා දැලක් වින්යාස කිරීමට අමතක නොකරන්න!), හෝ, උදාහරණයක් ලෙස, තත්ව පිටුව රතු පැහැයෙන් වර්ණ ගැන්වීම සහ පරිශීලකයින් “වැටෙන තල්මසුන්” සහිත පිටුවේ වෙනත් අනුවාදයකට හරවා යැවීම (“ට්විටර් යනු පහළ").
සේවා දැල් ඔබට අර්ථ දැක්වීමට පමණක් ඉඩ නොදේ විට වසා දැමීම අනුගමනය කරනු ඇත සහ බව මෙය අනුගමනය කරනු ඇත. මෙම අවස්ථාවෙහිදී, "කවදාද" නිශ්චිත පරාමිතිවල ඕනෑම සංයෝජනයක් ඇතුළත් කළ හැකිය: යම් කාල සීමාවක් සඳහා මුළු ඉල්ලීම් ගණන, සමාන්තර සම්බන්ධතා ගණන, අපේක්ෂිත ඉල්ලීම්, සක්රිය නැවත උත්සාහ කිරීම් ආදිය.
ඔබට පරිපථ කඩනය අනිසි ලෙස භාවිතා කිරීමට අවශ්ය නොවනු ඇත, නමුත් හදිසි අවස්ථාවකදී ඔබට උපස්ථ සැලැස්මක් ඇති බව දැන ගැනීම සතුටක්.
6. ස්වයංක්රීය පරිමාණය
TL;DR: නිශ්චිත නිර්ණායක මත පදනම්ව සේවා අවස්ථා ගණන වැඩි කිරීම හෝ අඩු කිරීම.
සේවා දැල් කාලසටහන් කරන්නන් නොවේ, එබැවින් ඒවා එසේ නොවේ කරගෙන යන්න ඔබම පරිමාණය කිරීම. කෙසේ වෙතත්, ඔවුන්ගේ තීරණ පදනම් කරන්නේ කුමන සැලසුම්කරුවන්ද යන්න පිළිබඳව තොරතුරු සැපයිය හැකිය. සේවා දැල්වලට සේවා අතර ඇති සියලුම ගමනාගමනයට ප්රවේශය ඇති බැවින්, සිදුවන්නේ කුමක්ද යන්න පිළිබඳ පුළුල් තොරතුරු ඔවුන් සතුව ඇත: ගැටළු අත්විඳින සේවාවන් මොනවාද, කුමන සේවාවන් ඉතා සැහැල්ලුවෙන් පටවා තිබේද (ඒවාට වෙන් කර ඇති ධාරිතාව අපතේ යයි) යනාදිය.
උදාහරණයක් ලෙස, Kubernetes Pods CPU සහ මතක භාවිතය මත පදනම්ව සේවා පරිමාණය කරයි (අපගේ වාර්තාව බලන්න""- ආසන්න වශයෙන්. පරිවර්තනය.), නමුත් ඔබ වෙනත් මෙට්රික් එකක් මත පදනම්ව පරිමාණය කිරීමට තීරණය කරන්නේ නම් (අපගේ නඩුවේදී, ගමනාගමනය සම්බන්ධ), ඔබට විශේෂ මෙට්රික් එකක් අවශ්ය වනු ඇත. කළමනාකරණ මෙය කරන්නේ කෙසේදැයි පෙන්වයි , и , නමුත් ක්රියාවලියම තරමක් සංකීර්ණයි. “සේවා අවස්ථා ගණන වැඩි කිරීම වැනි කොන්දේසි සැකසීමට අපට ඉඩ දීමෙන් සේවා දැල මෙය සරල කිරීමට අපි කැමතියි. auth, පොරොත්තු ඉල්ලීම් ගණන විනාඩියක් ඇතුළත සීමාව ඉක්මවන්නේ නම්."
7. කැනරි යෙදවීම්
TL;DR: පරිශීලකයින්ගේ උප කුලකයක් මත නව විශේෂාංග හෝ සේවා අනුවාද පරීක්ෂා කරන්න.
අපි හිතමු ඔබ SaaS නිෂ්පාදනයක් සංවර්ධනය කරමින් එහි නව අනුවාදයක් නිකුත් කිරීමට අදහස් කරන බව. ඔබ එය වේදිකාගත කිරීමේදී පරීක්ෂා කළ අතර එය විශිෂ්ට ලෙස ක්රියාත්මක විය. නමුත් සැබෑ තත්වයන් තුළ ඇයගේ හැසිරීම පිළිබඳව තවමත් යම් යම් කනස්සල්ලක් පවතී. වෙනත් වචන වලින් කිවහොත්, ඔබ පරිශීලක විශ්වාසය අවදානමකින් තොරව සැබෑ ගැටළු මත නව අනුවාදය පරීක්ෂා කළ යුතුය. කැනරි යෙදවීම් මේ සඳහා විශිෂ්ටයි. පරිශීලකයින්ගේ උප කුලකයකට නව විශේෂාංගයක් පෙන්වීමට ඒවා ඔබට ඉඩ සලසයි. මෙම උප කුලකය වඩාත් විශ්වාසවන්ත පරිශීලකයින් හෝ නිෂ්පාදනයේ නිදහස් අනුවාදය සමඟ වැඩ කරන අය හෝ "ගිනියා ඌරන්" වීමට ආශාවක් ප්රකාශ කර ඇති පරිශීලකයන්ගෙන් සමන්විත විය හැකිය.
සේවා දැල් මෙය ක්රියාවට නංවන්නේ යෙදුමේ කුමන අනුවාදය බලන්නේ කවුරුන්ද යන්න තීරණය කරන නිර්ණායක නියම කිරීමට සහ ඒ අනුව ගමනාගමනය මෙහෙයවීමට ඔබට ඉඩ දීමෙනි. කෙසේ වෙතත්, සේවාවන් සඳහාම කිසිවක් වෙනස් නොවේ. සේවාවේ 1.0 අනුවාදය විශ්වාස කරන්නේ සියලුම ඉල්ලීම් පැමිණෙන්නේ එය බැලිය යුතු පරිශීලකයින්ගෙන් වන අතර 1.1 අනුවාදය එහි පරිශීලකයින් සඳහා එයම බව විශ්වාස කරන බවයි. මේ අතර, ඔබට පැරණි සහ නව අනුවාද අතර ගමනාගමන ප්රතිශතය වෙනස් කළ හැකිය, එය ස්ථාවර ලෙස ක්රියා කරන්නේ නම් සහ ඔබේ “ගිනියා ඌරන්” ඉදිරියට යාමට ඉඩ දෙන්නේ නම්, වැඩිවන පරිශීලකයින් සංඛ්යාවක් නව වෙත හරවා යවයි.
8. නිල්-කොළ යෙදවීම්
TL;DR: සිසිල් නව විශේෂාංගයක් ඉදිරිපත් කරන්න, නමුත් වහාම සියල්ල ආපසු ගැනීමට සූදානම් වන්න.
තේරුම පැරණි, "කොළ" එකට සමාන්තරව එය දියත් කරමින් නව "නිල්" සේවාවක් දියත් කිරීමයි. සෑම දෙයක්ම සුමටව සිදු වී නව සේවාව හොඳින් ක්රියාත්මක වන්නේ නම්, පැරණි එක ක්රමයෙන් අක්රිය කළ හැකිය. (අහෝ, කවදා හෝ මෙම නව "නිල්" සේවාව "කොළ" එකේ ඉරණම නැවත නැවතත් අතුරුදහන් වනු ඇත...) නිල්-කොළ යෙදවීම් කැනරි ඒවාට වඩා වෙනස් වන අතර නව කාර්යය ආවරණය කරයි. හැමෝම එකවර පරිශීලකයන් (කොටසක් නොවේ); මෙහි ඇති කාරණය වන්නේ යම් වරදක් සිදුවුවහොත් "ආරක්ෂිත වරායක්" සූදානම් කර තිබීමයි.
සේවා දැල් "නිල්" සේවාවක් පරීක්ෂා කිරීමට ඉතා පහසු ක්රමයක් ලබා දෙන අතර ගැටළු වලදී ක්ෂණිකව වැඩ කරන "කොළ" වෙත මාරු වේ. "නිල්" හි කාර්යය පිළිබඳව ඔවුන් බොහෝ තොරතුරු සපයන අතර (පහත "ටෙලිමෙට්රි" බලන්න), එය සම්පූර්ණ ක්රියාකාරිත්වයට සූදානම්ද යන්න තේරුම් ගැනීමට උපකාරී වන බව සඳහන් නොකරන්න.
සටහන. පරිවර්තනය.: ඔබට Kubernetes හි (සඳහන් කැනරි, නිල්/කොළ සහ අනෙකුත් ඇතුළුව) විවිධ යෙදවුම් උපාය මාර්ග ගැන වැඩිදුර කියවිය හැක .
9. සෞඛ්ය පරීක්ෂාව
TL;DR: කුමන සේවා අවස්ථා ක්රියාකාරීද යන්න නිරීක්ෂණය කර තවදුරටත් ක්රියාකාරී නොවන ඒවාට ප්රතිචාර දක්වන්න.
සෞඛ්ය පරීක්ෂාව (සෞඛ්ය පරීක්ෂාව) ගමනාගමනය පිළිගැනීමට සහ සැකසීමට සේවා අවස්ථා සූදානම්ද යන්න තීරණය කිරීමට උදවු කරයි. උදාහරණයක් ලෙස, HTTP සේවා සම්බන්ධයෙන්, සෞඛ්ය පරීක්ෂණයක් අවසන් ලක්ෂ්යයට GET ඉල්ලීමක් මෙන් දිස් විය හැක /health... පිළිතුර 200 OK මෙම අවස්ථාව සෞඛ්ය සම්පන්න බව, වෙනත් ඕනෑම - එය ගමනාගමනය ලබා ගැනීමට සූදානම් නැති බව අදහස් වනු ඇත. සේවා දැල් මඟින් ක්රියාකාරීත්වය පරීක්ෂා කරන ආකාරය සහ මෙම චෙක්පත සිදු කෙරෙන වාර ගණන යන දෙකම සඳහන් කිරීමට ඔබට ඉඩ සලසයි. මෙම තොරතුරු පසුව වෙනත් අරමුණු සඳහා භාවිතා කළ හැකිය - නිදසුනක් ලෙස, බර සමතුලිත කිරීම සහ පරිපථ බිඳීම සඳහා.
මේ අනුව, සෞඛ්ය පරීක්ෂාව යනු තනි භාවිතයක් නොවේ, නමුත් සාමාන්යයෙන් වෙනත් අරමුණු සාක්ෂාත් කර ගැනීම සඳහා යොදා ගනී. එසේම, සෞඛ්ය පරීක්ෂණවල ප්රතිඵල මත පදනම්ව, වෙනත් සේවා දැල් ඉලක්කවලට බාහිර ක්රියා අවශ්ය විය හැකිය: නිදසුනක් ලෙස, තත්ව පිටුව යාවත්කාලීන කිරීම, GitHub හි ගැටලුවක් නිර්මාණය කිරීම හෝ JIRA ටිකට් පතක් පිරවීම. තවද සේවා දැලක් මේ සියල්ල ස්වයංක්රීය කිරීමට පහසු යාන්ත්රණයක් ඉදිරිපත් කරයි.
10. බර පැටවීම
TL;DR: භාවිතයේ තාවකාලික වැඩිවීමකට ප්රතිචාර වශයෙන් ගමනාගමනය හරවා යවන්න.
යම් සේවාවක් තදබදයෙන් පිරී තිබේ නම්, ඔබට මෙම ගමනාගමනයෙන් කොටසක් තාවකාලිකව වෙනත් ස්ථානයකට හරවා යැවිය හැක (එනම්, "ඩම්ප්", "මාරු කිරීම" (මඩුව) ඔහු එහි). උදාහරණයක් ලෙස, උපස්ථ සේවාවකට හෝ දත්ත මධ්යස්ථානයකට හෝ ස්ථිර ස්ථානයකට මාතෘකාව. එහි ප්රතිඵලයක් වශයෙන්, සේවාව බිඳ වැටීම වෙනුවට සමහර ඉල්ලීම් ක්රියාවට නංවා සියල්ල සම්පූර්ණයෙන් සැකසීම නතර කරනු ඇත. පරිපථය කැඩීමට වඩා බර පැටවීම වඩාත් සුදුසුය, නමුත් එය අනිසි ලෙස භාවිතා කිරීම තවමත් සුදුසු නොවේ. එය පහළට සේවා බිඳ වැටීමට හේතු වන කැස්කැඩින් අසාර්ථක වීම වැළැක්වීමට උපකාරී වේ.
11. රථවාහන සමාන්තරකරණය / දර්පණය
TL;DR: එක් ඉල්ලීමක් ස්ථාන කිහිපයකට එකවර යවන්න.
සමහර විට සේවා කිහිපයකට එකවර ඉල්ලීමක් (හෝ යම් ඉල්ලීම් තේරීමක්) යැවීමට අවශ්ය වේ. සාමාන්ය උදාහරණයක් වන්නේ නිෂ්පාදන ගමනාගමනයෙන් කොටසක් වේදිකාගත සේවාවකට යැවීමයි. ප්රධාන නිෂ්පාදන වෙබ් සේවාදායකය පහල සේවාව වෙත ඉල්ලීමක් යවයි products.production සහ ඔහුට පමණි. තවද සේවා දැල මෙම ඉල්ලීම බුද්ධිමත්ව පිටපත් කර එය වෙත යවයි products.staging, වෙබ් සේවාදායකය පවා නොදැන සිටින.
රථවාහන සමාන්තරකරණයට ඉහළින් ක්රියාත්මක කළ හැකි තවත් අදාළ සේවා දැල් භාවිත අවස්ථාවක් වේ . සේවාවේ විවිධ අනුවාදවලට එකම ඉල්ලීම් යැවීම සහ සියලුම අනුවාද එකම ලෙස හැසිරෙන්නේ දැයි පරීක්ෂා කිරීම එයට ඇතුළත් වේ. වැනි ඒකාබද්ධ ප්රතිගාමී පරීක්ෂණ පද්ධතියක් සහිත සේවා දැලක් ක්රියාත්මක කිරීමක් මට තවම හමු වී නැත , නමුත් අදහසම පොරොන්දු වන බව පෙනේ.
12. පරිවරණය
TL;DR: ඔබේ සේවා දැල කුඩා ජාලවලට කඩන්න.
ලෙසද හැඳින්වේ ඛණ්ඩනයහුදකලා කිරීම යනු සේවා දැලක් එකිනෙකා ගැන කිසිවක් නොදන්නා තර්කානුකූලව වෙනස් කොටස් වලට බෙදීමේ කලාවයි. හුදකලාව යනු අතථ්ය පුද්ගලික ජාල සෑදීමට සමාන ය. මූලික වෙනස නම්, ඔබට තවමත් සේවා දැලක (සේවා සොයා ගැනීම වැනි) සියලු ප්රතිලාභ භුක්ති විඳිය හැකි නමුත් අමතර ආරක්ෂාවක් සහිතවයි. උදාහරණයක් ලෙස, ප්රහාරකයෙකුට එක් උපජාලයක සේවාවක් විනිවිද යාමට හැකි නම්, ඔහුට වෙනත් උපජාලවල ක්රියාත්මක වන සේවාවන් බැලීමට හෝ ඒවායේ ගමනාගමනයට බාධා කිරීමට නොහැකි වනු ඇත.
ඊට අමතරව, ප්රතිලාභ ආයතනික විය හැකිය. ඔබට ඔබේ සමාගම් ව්යුහය මත පදනම්ව ඔබේ සේවාවන් උපජාල කිරීමට අවශ්ය විය හැකි අතර සම්පූර්ණ සේවා දැලක් මතකයේ තබා ගැනීමේ සංජානන බරින් සංවර්ධකයින් නිදහස් කිරීමට ඔබට අවශ්ය විය හැකිය.
13. ඉල්ලීම් අනුපාත සීමා කිරීම, නැවත උත්සාහ කිරීම් සහ කල් ඉකුත්වීම්
TL;DR: ඔබට තවදුරටත් ඔබේ කේත පදනමේ නීටි-ග්රිටි ඉල්ලීම් කළමනාකරණ කාර්යයන් ඇතුළත් කිරීමට අවශ්ය නොවේ.
මේ සියල්ල වෙනම භාවිත අවස්ථා ලෙස සැලකිය හැකි නමුත්, එක් පොදු ලක්ෂණයක් නිසා මම ඒවා ඒකාබද්ධ කිරීමට තීරණය කළෙමි: සාමාන්යයෙන් යෙදුම් පුස්තකාල විසින් හසුරුවන ඉල්ලීම් ජීවන චක්ර කළමනාකරණ කාර්යයන් ඔවුන් භාර ගනී. ඔබ Ruby on Rails හි වෙබ් සේවාදායකයක් සංවර්ධනය කරන්නේ නම් (සේවා දැලක් සමඟ ඒකාබද්ධ නොවේ) එය හරහා පසුපෙළ සේවා සඳහා ඉල්ලීම් කරයි , N ඉල්ලීම් අසාර්ථක වුවහොත් කුමක් කළ යුතුද යන්න තීරණය කිරීමට යෙදුමට සිදුවේ. විශේෂ පුස්තකාලයක් භාවිතයෙන් මෙම පරාමිතීන් සැකසීමට සහ දෘඪ කේත කිරීමට මෙම සේවාවන්ට කොපමණ තදබදයක් තිබේදැයි සොයා බැලීමටද ඔබට සිදු වනු ඇත. තවද, යෙදුම අත්හැරීමට කාලය කවදාද යන්න තීරණය කිරීමට සිදුවනු ඇති අතර ඉල්ලීම නිෂ්ප්රභා කිරීමට ඉඩ දෙනු ඇත (කාල සීමාව මත පදනම්ව). ඉහත සඳහන් ඕනෑම පරාමිතියක් වෙනස් කිරීම සඳහා, වෙබ් සේවාදායකය නවතා, නැවත සකස් කර නැවත ආරම්භ කිරීමට සිදුවේ.
මෙම කාර්යයන් සේවා දැලකට පැටවීමෙන් අදහස් වන්නේ සේවා සංවර්ධකයින්ට ඒවා ගැන සිතීමට අවශ්ය නොවන බව පමණක් නොව, ඒවා වඩාත් ගෝලීය ආකාරයකින් බැලිය හැකි බවයි. සංකීර්ණ සේවා දාමයක් භාවිතා කරන්නේ නම්, A -> B -> C -> D -> E කියන්න, ඉල්ලීමේ සම්පූර්ණ ජීවන චක්රය සැලකිල්ලට ගත යුතුය. කර්තව්යය වන්නේ C සේවාවේ කල් ඉකුත්වීම දීර්ඝ කිරීම නම්, මෙය කොටස් වශයෙන් නොව එකවර කිරීම තාර්කික ය: සේවා කේතය යාවත්කාලීන කිරීමෙන් සහ ඇදීමේ ඉල්ලීම පිළිගන්නා තෙක් බලා සිටීමෙන් සහ CI පද්ධතිය යාවත්කාලීන කරන ලද සේවාව යොදවන තෙක් බලා සිටීමෙන්.
14. Telemetry
TL;DR: සේවා වලින් අවශ්ය සියලුම (සහ තරමක් නොවේ) තොරතුරු රැස් කරන්න.
Telemetry යනු ප්රමිතික, බෙදා හරින ලද ලුහුබැඳීම සහ ලඝු-සටහන් ඇතුළත් සාමාන්ය පදයකි. සේවා දැල් මඟින් දත්ත වර්ග තුනම එකතු කිරීම සහ සැකසීම සඳහා යාන්ත්රණ ඉදිරිපත් කරයි. හැකි විකල්ප ගණන ඉතා විශාල බැවින් දේවල් ටිකක් බොඳ වන්නේ මෙතැනදීය. මිනුම් එකතු කිරීමට තිබේ සහ ලඝු-සටහන් එකතු කිරීමට භාවිතා කළ හැකි වෙනත් මෙවලම් , , I. (උදාහරණයක් ලෙස ClickHouse සමඟ අපගේ K8s සඳහා - දළ වශයෙන්. පරිවර්තනය.), බෙදා හරින ලද ලුහුබැඳීම සඳහා ඇත සහ යනාදි. සෑම සේවා දැලක්ම සමහර මෙවලම් සඳහා සහය විය හැකි අතර අනෙක් ඒවා නොවේ. ව්යාපෘතියට හැකි දැයි බැලීම සිත්ගන්නාසුළු වනු ඇත යම් අභිසාරීතාවයක් ලබා දෙන්න.
මෙම අවස්ථාවෙහිදී, සේවා දැල් තාක්ෂණයේ වාසිය නම්, සයිඩ්කාර් බහාලුම්වලට ප්රතිපත්තිමය වශයෙන්, ඉහත දත්ත සියල්ල ඔවුන්ගේ සේවාවන්ගෙන් එකතු කර ගත හැකි වීමයි. වෙනත් වචන වලින් කිවහොත්, ඔබ සතුව තනි ටෙලිමෙට්රි එකතු කිරීමේ පද්ධතියක් ඇති අතර, සේවා දැලට මෙම සියලු තොරතුරු විවිධ ආකාරවලින් සැකසීමට හැකිය. උදාහරණ වශයෙන්:
- CLI හි යම් සේවාවකින් වලිග ලොග;
- සේවා දැල් උපකරණ පුවරුවෙන් ඉල්ලීම් පරිමාව නිරීක්ෂණය කරන්න;
- බෙදා හරින ලද අංශු එකතු කර ඒවා ජේගර් වැනි පද්ධතියකට යොමු කරන්න.
අවධානය, ආත්මීය විනිශ්චය: සාමාන්යයෙන් කථා කරන විට, ටෙලිමෙට්රි යනු සේවා දැලෙන් ප්රබල මැදිහත්වීම් අනවශ්ය ක්ෂේත්රයකි. මූලික තොරතුරු රැස් කිරීම සහ පියාසර කිරීමේදී ඉල්ලීම් සාර්ථකත්ව අනුපාතය සහ ප්රමාදය වැනි සමහර ස්වර්ණමය ප්රමිතික ලුහුබැඳීම හොඳයි, නමුත් විශේෂිත පද්ධති ප්රතිස්ථාපනය කිරීමට උත්සාහ කරන ෆ්රැන්කන්ස්ටයින් තොග මතු නොවනු ඇතැයි අපි බලාපොරොත්තු වෙමු, සමහර ඒවා දැනටමත් ඔප්පු කර ඇති අතර හොඳින් අධ්යයනය කර ඇත. .
15. විගණනය
TL;DR: ඉතිහාස පාඩම් අමතක කරන අයට ඒවා නැවත නැවත කිරීමට සිදුවනු ඇත.
විගණනය යනු පද්ධතියක වැදගත් සිදුවීම් නිරීක්ෂණය කිරීමේ කලාවයි. සේවා දැලක් සම්බන්ධයෙන්, මින් අදහස් වන්නේ නිශ්චිත සේවා සඳහා නිශ්චිත අන්ත ලක්ෂ්ය වෙත ඉල්ලීම් කළේ කවුරුන්ද යන්න හෝ පසුගිය මාසයේ ආරක්ෂාවට අදාළ සිදුවීම් කී වතාවක් සිදුවීද යන්න සොයා බැලීමයි.
විගණනය ටෙලිමෙට්රි සමඟ ඉතා සමීපව සම්බන්ධ වන බව පැහැදිලිය. වෙනස වන්නේ ටෙලිමෙට්රි සාමාන්යයෙන් ඵලදායිතාව සහ තාක්ෂණික අඛණ්ඩතාව වැනි දේවල් සමඟ සම්බන්ධ වන අතර විගණනය දැඩි තාක්ෂණික ක්ෂේත්රයෙන් ඔබ්බට යන නෛතික සහ වෙනත් ගැටළු වලට සම්බන්ධ විය හැකි වීමයි (උදාහරණයක් ලෙස, GDPR සමඟ අනුකූල වීම - දත්ත ආරක්ෂණය පිළිබඳ EU සාමාන්ය රෙගුලාසි).
16. පෙරදසුන
TL;DR: Long live React.js - විචිත්රවත් අතුරුමුහුණත්වල විස්තර කළ නොහැකි මූලාශ්රයකි.
වඩා හොඳ පදයක් තිබිය හැක, නමුත් මම එය නොදනිමි. මම සරලව අදහස් කරන්නේ සේවා දැලක හෝ එහි සමහර සංරචකවල චිත්රක නිරූපණයකි. මෙම දෘශ්යකරණයන්ට සාමාන්ය ප්රමාදයන්, පැති කාර් වින්යාස තොරතුරු, සෞඛ්ය පරීක්ෂණ ප්රතිඵල, සහ ඇඟවීම් වැනි දර්ශක ඇතුළත් විය හැක.
සේවා-නැඹුරු පරිසරයක වැඩ කිරීම, මොනොලිත් මහිමයට සාපේක්ෂව ඉතා ඉහළ සංජානන බරක් ඇතුළත් වේ. එබැවින්, සංජානන පීඩනය සෑම වියදමකින්ම අඩු කළ යුතුය. බොත්තමක් මත ක්ලික් කර අපේක්ෂිත ප්රතිඵලය ලබා ගැනීමේ හැකියාව සහිත සේවා දැලක් සඳහා සරල චිත්රක අතුරු මුහුණතක් මෙම තාක්ෂණයේ ජනප්රියත්වයේ වර්ධනය සඳහා තීරණාත්මක විය හැකිය.
ලැයිස්තුවට ඇතුළත් කර නොතිබුණි
මම මුලින් ලැයිස්තුවට තවත් භාවිත අවස්ථා කිහිපයක් ඇතුළත් කිරීමට අදහස් කළ නමුත් පසුව එය නොකිරීමට තීරණය කළෙමි. මෙන්න ඒවා, මගේ තීරණයට හේතු:
- බහු දත්ත මධ්යස්ථානය. මගේ මතය අනුව, මෙය සේවා දැල් යෙදීමේ පටු සහ විශේෂිත ප්රදේශයක් හෝ සේවා සොයාගැනීම් වැනි සමහර කාර්යයන් සමූහයක් ලෙස එතරම් භාවිත අවස්ථාවක් නොවේ.
- ඇතුල්වීම සහ පිටවීම. මෙය අදාළ ප්රදේශයකි, නමුත් මම "නැගෙනහිර-බටහිර ගමනාගමනය" භාවිත නඩුවට (සමහර විට කෘත්රිමව) සීමා කර ඇත. ඇතුල්වීම සහ පිටවීම වෙනම ලිපියක් ලැබිය යුතුය.
නිගමනය
දැනට එච්චරයි! නැවතත්, මෙම ලැයිස්තුව ඉතා අත්තනෝමතික වන අතර බොහෝ විට අසම්පූර්ණයි. ඔබ සිතන්නේ මට යමක් මග හැරී ඇති බව හෝ යමක් වැරදී ඇති බව නම්, කරුණාකර Twitter හි මා අමතන්න () කරුණාකර විනීත නීතිවලට ගරු කරන්න.
පරිවර්තකගෙන් PS
ලිපිය සඳහා මාතෘකා නිදර්ශනය "" ලිපියේ පින්තූරයක් මත පදනම් වේ."(ග්රෙගරි මැකිනන් විසිනි). යෙදුම් වලින් (කොළ පැහැයෙන්) යම් ක්රියාකාරීත්වයක් ඒවා අතර අන්තර් සම්බන්ධතා සපයන (නිල් පැහැයෙන්) සේවා දැලක් වෙත මාරු වී ඇති ආකාරය එය පෙන්වයි.
අපගේ බ්ලොග් අඩවියේ ද කියවන්න:
- «»;
- «»;
- «".
මූලාශ්රය: www.habr.com
