
PiezÄ«me:: Ŕī raksta autors (Luc Perkins) ā izstrÄdÄtÄju advokÄts organizÄcijÄ CNCF, kas ir mÄjvieta tÄdiem open-source projektiem kÄ Linkerd, SMI (Service Mesh Interface) un Kuma (starpcitu, vai esat kÄdreiz domÄjuÅ”i, kÄpÄc Å”ajÄ sarakstÄ nav Istio?..). Atkal cenÅ”oties ieviest DevOps kopienÄ labÄku izpratni par modÄ«gu burbuli ar nosaukumu Ā«service meshĀ», viÅÅ” izklÄsta 16 raksturÄ«gas iespÄjas, ko sniedz Å”Ädas risinÄjumus.
MÅ«sdienÄs ā viena no karstÄkajÄm tÄmÄm programmatÅ«ras inženierijÄ (un pamatoti!). Es uzskatu, ka Ŕī tehnoloÄ£ija ir neticami perspektÄ«va un sapÅoju redzÄt tÄs plaÅ”u izplatÄ«bu (protams, kad tam ir jÄga). TomÄr tÄ joprojÄm ir apvÄ«ta noslÄpumainÄ«bas aurÄ vairumam cilvÄku. TurklÄt pat tie, kas ir labi pazÄ«stami ar to, bieži vien grÅ«tÄ«bas atrast formulÄjumu tÄs priekÅ”rocÄ«bÄm un tam, ko tÄ tieÅ”i sevÄ« ietver (ieskaitot jÅ«su paklausÄ«go kalpu). Å ajÄ rakstÄ es mÄÄ£inÄÅ”u labot situÄciju, uzskaitot dažÄdus lietojuma scenÄrijus Ā«pakalpojumu tÄ«klamĀ»*.
* PiezÄ«me. tulk.: Å”eit un turpmÄk rakstÄ tiks izmantots tieÅ”i Å”Äds tulkojums (Ā«pakalpojumu tÄ«klsĀ») jaunajam terminam service mesh.
Bet vispirms vÄlos izdarÄ«t dažus novÄrojumus:
- Es nekad neesmu strÄdÄjis ar pakalpojumu tÄ«kliem un neesmu tos izmantojis Ärpus projektiem, kas tika uzsÄkti manas izglÄ«tÄ«bas labad. No otras puses, tieÅ”i es uzrakstÄ«ju daudz dokumentÄcijas iekÅ”ÄjÄ service mesh uzÅÄmumÄ Twitter 2015. gadÄ (toreiz vÄl pat netika dÄvÄts par Ā«pakalpojumu tÄ«kluĀ») un piedalÄ«jos tÄ«mekļa vietnes un dokumentÄcijas izstrÄdÄ, , tÄpÄc tas kaut ko nozÄ«mÄ.
- Mans saraksts ir piemÄrojoÅ”s un nepilnÄ«gs. Ir iespÄjami man nezinÄmi lietojuma scenÄriji, un ar laiku noteikti radÄ«sies jauni varianti, attÄ«stoties tehnoloÄ£ijai un pieaugot tÄs popularitÄtei.
- Vienlaikus tÄlu ne katra esoÅ”Ä service mesh realizÄcija atbalsta visus uzskaitÄ«tos lietojuma gadÄ«jumus. TÄpÄc mani izteikumi, piemÄram, Ā«service mesh varā¦Ā» ir jÄlas kÄ Ā«atseviŔķi, iespÄjams, arÄ« visi populÄrie service mesh realizÄcijas varā¦Ā».
- PiemÄru secÄ«ba nav nekÄdÄ veidÄ nozÄ«mÄ«ga.
ÄŖss saraksts:
- pakalpojumu atklÄÅ”ana;
- Å”ifrÄÅ”anu;
- autentifikÄcija un autorizÄcija;
- slodzes sadalīŔana;
- circuit breaking;
- automÄtiskÄ mÄrogoÅ”ana;
- kanÄriju izvietojumi;
- zilÄ-zaÄ¼Ä izvietojumi;
- veselÄ«bas pÄrbaude;
- load shedding;
- trafika spogulÄÅ”ana;
- izolÄcija;
- pieprasÄ«jumu skaita ierobežoÅ”ana, atkÄrtotas mÄÄ£inÄjumi un laika ierobežojumi;
- telemetrija;
- audits;
- vizualizÄcija.
1. Pakalpojumu atklÄÅ”ana
TL;DR: Pievienojieties citiem pakalpojumiem tÄ«klÄ, izmantojot viegli atpazÄ«stamus nosaukumus.
Pakalpojumiem jÄbÅ«t spÄjÄ«giem automÄtiski Ā«atrastĀ» viens otru, izmantojot atbilstoÅ”us nosaukumus ā piemÄram, service.api.production, pets/staging vai cassandra. MÄkoÅu vidÄm piemÄ«t elastÄ«ba, un aiz viena nosaukuma var slÄpties daudzi pakalpojumu instance. Ir skaidrs, ka Å”ÄdÄ situÄcijÄ fiziski nav iespÄjams ierakstÄ«t visus IP adreses.
TurklÄt, kad viens pakalpojums atrod citu, tam jÄbÅ«t spÄjÄ«gam sÅ«tÄ«t pieprasÄ«jumus Å”im pakalpojumam, neuztraucoties, ka tie nonÄks pie tÄ nedarbojoÅ”Äs instances. Citiem vÄrdiem sakot, service mesh jÄuzrauga visu pakalpojumu instance darbspÄja un jÄatjaunina hostu saraksts maksimÄli aktuÄlÄ stÄvoklÄ«.
Katra service mesh ievieÅ” pakalpojumu atklÄÅ”anas mehÄnismu savÄ veidÄ. PaÅ”reiz visizplatÄ«tÄkais veids ir deleÄ£ÄÅ”ana ÄrÄjiem procesiem, piemÄram, DNS Kubernetes. PagÄtnÄ Twitter Å”iem mÄrÄ·iem mÄs izmantojÄm nosaukumu sistÄmu . TurklÄt service mesh tehnoloÄ£ija padara iespÄjamu pielÄgotu nosaukumu mehÄnismu parÄdīŔanos (lai gan es vÄl neesmu sastapis nevienu SM ar Å”Ädu funkcionalitÄti).
2. Å ifrÄÅ”ana
TL;DR: AtbrÄ«vojieties no neÅ”ifrÄta trafika starp pakalpojumiem, un ļaujiet Å”im procesam bÅ«t automatizÄtam un skalojamam.
Ir patÄ«kami apzinÄties, ka ļaunprÄtÄ«gi lietotÄji nevar iekļūt jÅ«su iekÅ”ÄjÄ tÄ«klÄ. TÄ«kla ugunsmÅ«ri lieliski to panÄk. Bet kas notiks, ja hakeris tomÄr iekļūst iekÅ”Ä? Vai viÅÅ” varÄs darÄ«t ar iekÅ”Äjo pakalpojumu trafiku visu, ko vÄlas? CerÄsim, ka tas tÄ nenotiks. Lai novÄrstu lÄ«dzÄ«gu scenÄriju, bÅ«tu jÄÄ«steno nulles ticamÄ«bas (zero-trust) tÄ«kls, kurÄ viss trafiks starp pakalpojumiem ir Å”ifrÄts. LielÄkÄ daļa mÅ«sdienu pakalpojumu tÄ«klu to sasniedz, izmantojot savstarpÄjo (mutual TLS, mTLS). Dažos gadÄ«jumos mTLS darbojas visa mÄkoÅu un klusteru ietvaros (domÄju, ka arÄ« starpplanÄtas komunikÄcijas kÄdreiz tiks organizÄtas lÄ«dzÄ«gi).
Protams, mTLS service mesh nav obligÄta. Katrs pakalpojums var pats parÅ«pÄties par savu TLS, taÄu tas nozÄ«mÄ, ka bÅ«s jÄatrod veids, kÄ Ä£enerÄt sertifikÄtus, izplatÄ«t tos pa pakalpojuma hostiem, iekļaut lietojumprogrammÄ kodu, kas ielÄdÄ Å”os sertifikÄtus no failiem. JÄ, vÄl nedrÄ«kst aizmirst par Å”o sertifikÄtu atjauninÄÅ”anu noteiktos laika posmos. Pakalpojumu tÄ«kli automatizÄ mTLS, izmantojot sistÄmas, piemÄram, , kas, savukÄrt, automatizÄ sertifikÄtu izdoÅ”anas un rotÄcijas procesu.
3. AutentifikÄcija un autorizÄcija
TL;DR: Uzziniet, kurÅ” ir pieprasÄ«juma iniciators, un nosakiet, ko viÅam ir atļauts darÄ«t vÄl pirms pieprasÄ«jums sasniedz pakalpojumu.
Pakalpojumi bieži vÄlas zinÄt, kas kurÅ” izpilda pieprasÄ«jumu (autentifikÄcija), un, izmantojot Å”o informÄciju, izlemj, ko vai konkrÄtai personai ir atļauts darÄ«t (autorizÄcija). Å ajÄ gadÄ«jumÄ aiz vietniekvÄrda ākurÅ”ā var slÄpties:
- Citi pakalpojumi. To sauc par āpeerā autentifikÄciju. PiemÄram, pakalpojumsvÄlas piekļūt pakalpojumam
web. Pakalpojumu tÄ«kli parasti risina Å”Ädas problÄmas ar mTLS: sertifikÄti Å”ajÄ gadÄ«jumÄ kalpo kÄ nepiecieÅ”amais identifikators.dbDaži cilvÄki lietotÄji. To sauc par āpieprasÄ«jumaā autentifikÄciju. - PiemÄram, lietotÄjs haxor69vÄlas iegÄdÄties jaunu lampu. Pakalpojumu tÄ«kli nodroÅ”ina dažÄdus mehÄnismus, piemÄram,
JSON Web TokensDaudziem no mums ir nÄcies to darÄ«t lietojumprogrammas kodÄ. Ierodas pieprasÄ«jums, mÄs apskatÄm tabulu .permissions
lietotÄjiutt. Pakalpojumu tÄ«klÄ tas notiek vÄl pirms pieprasÄ«jums sasniedz pakalpojumu.permissionsPÄc tam, kad mÄs esam noskaidrojuÅ”i, no kura ir bijis pieprasÄ«jums, ir jÄnosaka, ko konkrÄtai personai ir atļauts darÄ«t. Daži pakalpojumu tÄ«kli ļauj izvirzÄ«t pamata politikas (par to, kas un ko var darÄ«t) kÄ YAML failus vai komandlÄ«nijÄ, savukÄrt citi piedÄvÄ integrÄciju ar ietvariem, piemÄram,
. Galvenais mÄrÄ·is ir panÄkt, lai jÅ«su pakalpojumi pieÅemtu visus pieprasÄ«jumus, droÅ”i pieÅemot, ka tie ir no uzticama avota Ŕī rÄ«cÄ«ba ir atļauta. un 4. Slodzes sadalīŔana
TL;DR: Sadali slodzi pa pakalpojumu instancÄm pÄc noteikta parauga.
TL;DR: Sadaliet slodzi pakalpojuma instancÄm saskaÅÄ ar noteiktu paraugu.
Ā«ServissĀ» sastÄvÄ servisa sektora ļoti bieži ir daudzas identiskas kopijas. PiemÄram, Å”odien serviss cache sastÄv no 5 kopijÄm, bet rÄ«t to skaits var pieaugt lÄ«dz 11. PieprasÄ«jumi, kas tiek sÅ«tÄ«ti uz cache, jÄdistribÅ«Ä atbilstoÅ”i noteiktam mÄrÄ·im. PiemÄram, minimizÄt aizturi vai maksimizÄt iespÄjamo piekļuvi funkcionÄjoÅ”ai kopijai. VisbiežÄk tiek izmantots apaļÄs sadales algoritms (Round-robin), taÄu pastÄv arÄ« daudzi citi ā piemÄram, svÄrto (weighted) pieprasÄ«jumu metode (var izvÄlÄties priekÅ”roces mÄrÄ·us), riÅÄ·a (ring) hashÄÅ”ana (saskaÅotas hashÄÅ”anas izmantoÅ”ana augÅ”upvÄrstu hostu gadÄ«jumÄ) vai vismazÄkÄ pieprasÄ«jumu skaita metoda (priekÅ”roka tiek dota kopijai ar vismazÄkajiem pieprasÄ«jumiem).
Klasiskajiem balancerim ir arÄ« citas funkcijas, kÄ, piemÄram, HTTP keÅ”atmiÅa un DDoS aizsardzÄ«ba, taÄu tÄs nav ļoti aktuÄlas east-west tipa trafika gadÄ«jumÄ (t.i., trafika, kas notiek datu centrÄ ā tulk. piezÄ«me), kas ir tipiska servisa tÄ«klu pielietoÅ”anas joma. Protams, nav obligÄti izmantot servisa tÄ«klu slodzes balansÄÅ”anai, taÄu tas ļauj noteikt un kontrolÄt balansÄÅ”anas politikas katram servisam no centralizÄtas vadÄ«bas slÄÅa, tÄdÄjÄdi novÄrÅ”ot nepiecieÅ”amÄ«bu palaist un konfigurÄt atseviŔķus balancerus tÄ«kla kaudzes ietvaros.
5. Cirku pÄrtraukÅ”ana (circuit breaking)
TL;DR: Apturiet trafiku uz problemÄtisko servisu un kontrolÄjiet bojÄjumus sliktÄko scenÄriju gadÄ«jumÄ.
Ja kÄda iemesla dÄļ serviss netiek galÄ ar trafiku, servisa tÄ«kls nodroÅ”ina vairÄkas Å”o problÄmu risinÄÅ”anas iespÄjas (par citÄm tiks stÄstÄ«ts atbilstoÅ”ajos sadaļÄs). Cirku pÄrtraukÅ”ana ir visstingrÄkais veids, kÄ atslÄgt servisu no trafika. TomÄr pats par sevi tas nav jÄgpilns ā nepiecieÅ”ams rezerves plÄns. Var ieviest pretspiedienu () uz servisiem, kas izpilda pieprasÄ«jumus (tikai neaizmirstiet konfigurÄt savu servisa tÄ«klu Å”im nolÅ«kam!), vai arÄ«, piemÄram, krÄsot statusa lapu sarkanÄ krÄsÄ un novirzÄ«t lietotÄjus uz alternatÄ«vu lapu ar ākrÄ«toÅ”u vaļuā (āTwitter nedarbojasā).
Servisa tÄ«kli ļauj ne tikai noteikt, kad sekos atslÄgÅ”ana un ko pÄc tÄ sekos. Å ajÄ gadÄ«jumÄ "kad" var ietvert jebkuru daudzumu noteiktu parametru: kopÄjo pieprasÄ«jumu skaitu noteiktÄ periodÄ, paralÄlo savienojumu skaitu, gaidoÅ”us pieprasÄ«jumus, aktÄ«vÄs atkÄrtotas mÄÄ£inÄjumu utt.
JÅ«s, iespÄjams, nevÄlÄsieties ļaunprÄtÄ«gi izmantot circuit breaking, bet patÄ«kami apzinÄties, ka ir rezerves plÄns galÄjÄ gadÄ«jumÄ.
6. AutomÄtiskÄ mÄrogoÅ”ana
TL;DR: Palieliniet vai samaziniet pakalpojuma instanÄu skaitu atkarÄ«bÄ no noteiktiem kritÄrijiem.
Service mesh nav plÄnotÄji, tÄpÄc tie nenodroÅ”ina mÄrogoÅ”anu paÅ”i. TomÄr tie var sniegt informÄciju, uz kuras pamata plÄnotÄji pieÅems lÄmumus. TÄ kÄ service mesh piekļūst visam satiksmei starp pakalpojumiem, tiem ir plaÅ”a informÄcija par to, kas notiek: kuri pakalpojumi saskaras ar problÄmÄm, kuri ir ļoti maz noslogoti (resursi tiek izŔķÄrdÄti) utt. PiemÄram, Kubernetes mÄrogo pakalpojumus atkarÄ«bÄ no resurss, ko podi izmanto CPU un atmiÅÄ
(sk. mÅ«su ziÅojumu " ", bet ja jÅ«s nolemsiet veikt mÄrogoÅ”anu, pamatojoties uz jebkuru citu rÄdÄ«tÄju (mÅ«su gadÄ«jumÄ - kas saistÄ«ts ar satiksmi), bÅ«s nepiecieÅ”ama speciÄla metrika. VadlÄ«nijasĀ» ā tulkotÄja piezÄ«me.)kÄ Å”Äda , bet pats process ir diezgan sarežģīts. MÄs vÄlÄtos, lai service mesh to atvieglotu, ļaujot vienkÄrÅ”i uzstÄdÄ«t nosacÄ«jumus, piemÄram, "palieliniet pakalpojuma instanÄu skaitu , un , ja gaidoÅ”o izpildi pieprasÄ«jumu skaits pÄrsniegs sliekÅ”Åa vÄrtÄ«bu minÅ«tes laikÄ." auth7. KanÄriju izlaides
TL;DR: IzmÄÄ£iniet jaunas funkcijas vai pakalpojumu versijas daļai lietotÄju.
TL;DR: TestÄjiet jaunÄs funkcijas vai pakalpojuma versijas noteiktÄ lietotÄju grupÄ.
Teiksim, jÅ«s izstrÄdÄjat kÄdu SaaS produktu un plÄnojat izlaiest tÄ jauno versiju. JÅ«s to esat izmÄÄ£inÄjis testÄÅ”anas vidÄ, un tas ir darbojies lieliski. TomÄr jÅ«s joprojÄm uztrauc jautÄjumi par tÄ uzvedÄ«bu reÄlajos apstÄkļos. Citiem vÄrdiem sakot, ir nepiecieÅ”ams pÄrbaudÄ«t jauno versiju reÄlos uzdevumos, neuzÅemoties risku ar lietotÄju uzticÄ«bu. KanÄriju izvietojumi ir lieliski piemÄroti Å”im mÄrÄ·im. Tie ļauj demonstrÄt jaunu funkciju noteiktai lietotÄju apakÅ”grupai. Å Ä« apakÅ”grupa var sastÄvÄt no vislojalÄkajiem lietotÄjiem vai tiem, kas izmanto bezmaksas produkta versiju, vai no lietotÄjiem, kuri ir izteikuÅ”i vÄlmi bÅ«t "izmÄÄ£inÄjuma trusīŔiem."
Servisa tÄ«kli to realizÄ, ļaujot norÄdÄ«t kritÄrijus, kas nosaka, kurÅ” un kÄdu versiju lietojumprogrammas redzÄs, un attiecÄ«gi marÅ”rutÄjot satiksmi. TajÄ pat laikÄ paÅ”i servisi neko nemaina. 1.0 versijas serviss uzskata, ka visi pieprasÄ«jumi nÄk no lietotÄjiem, kuri tieÅ”i to arÄ« ir jÄredz, savukÄrt 1.1 versijas uzskata to paÅ”u attiecÄ«bÄ uz saviem lietotÄjiem. Bet jÅ«s, tajÄ paÅ”Ä laikÄ, varat mainÄ«t satiksmes procentu starp veco un jauno versiju, pÄradresÄjot pieaugoÅ”o lietotÄju skaitu uz jauno, ja tÄ darbojÄs stabila un jÅ«su "izmÄÄ£inÄjuma" lietotÄji piekrÄ«t.
8. ZilÄ-zaÄ¼Ä izvietojumi
TL;DR: Izlaidiet jaunu forÅ”u funkciju, bet esiet gatavi nekavÄjoties to atgriezt atpakaļ.
JÄga ir izlaist jauno "zilo" servisu, palaižot to paralÄli vecajam, "zaļajam". Ja viss notiek raiti un jaunais serviss izrÄdÄs labs, veco var pakÄpeniski izslÄgt. (DiemžÄl, kÄdreiz arÄ« Å”im jaunajam "zilajam" servisam bÅ«s tÄda pati liktenis kÄ "zaļajam", un tas pazudÄ«sā¦) ZilÄ-zaļie izvietojumi atŔķiras no kanÄriju, jo jaunÄ funkcija aptver uzreiz visus lietotÄjus (nevis daļu); jÄga Å”eit ir bÅ«t gatavam "rezervju piestÄtnei", ja kaut kas notiks ne tÄ.
Servisa mezhi piedÄvÄ Ä¼oti Ärtu veidu, kÄ testÄt "zilÄ" servisa un nekavÄjoties pÄrslÄgties uz darbojoÅ”o "zaļo" gadÄ«jumÄ, ja iestÄjas problÄmas. Nemaz nerunÄjot par to, ka tie sniedz daudz informÄcijas (skatÄ«t punktu "Telemetrija" zemÄk) par "zilÄ" darbu, kas palÄ«dz saprast, vai tas ir gatavs pilnvÄrtÄ«gai ekspluatÄcijai.
PiezÄ«me:: PlaÅ”Äk par dažÄdÄm izvietoÅ”anas stratÄÄ£ijÄm Kubernetes (ieskaitot minÄtÄs kanÄriju, zilo/zaļo un citas) var izlasÄ«t .
9. VeselÄ«bas pÄrbaude
TL;DR: Sekojiet lÄ«dzi tam, kuri servisa instancÄm ir funkcionÄjoÅ”as, un reaÄ£Äjiet uz tÄm, kuras vairs tÄdas nav.
VeselÄ«bas pÄrbaude (health check) palÄ«dz pieÅemt lÄmumu par to, vai servisa instancÄm ir gatavi pieÅemt un apstrÄdÄt trafiku. PiemÄram, HTTP servisa gadÄ«jumÄ veselÄ«bas pÄrbaude var izskatÄ«ties kÄ GET pieprasÄ«jums uz endpoint /health. Atbilde 200 OK norÄdÄ«s, ka instancÄ ir veselÄ«ga, jebkura cita atbilde norÄdÄ«s, ka tÄ nav gatava pieÅemt trafiku. Servisa mezhi ļauj norÄdÄ«t, kÄdÄ veidÄ tiks pÄrbaudÄ«ta funkcionÄÅ”ana un biežumu, ar kÄdu Ŕī pÄrbaude tiks veikta. Å o informÄciju var izmantot citÄm vajadzÄ«bÄm ā piemÄram, slodzes izlÄ«dzinÄÅ”anai un circuit breaking.
TÄdÄjÄdi veselÄ«bas pÄrbaude nav patstÄvÄ«gs lietoÅ”anas scenÄrijs, bet parasti tiek izmantota, lai sasniegtu citas mÄrÄ·us. AtkarÄ«bÄ no veselÄ«bas pÄrbaudes rezultÄtiem var bÅ«t nepiecieÅ”amas ÄrÄjas darbÄ«bas (attiecÄ«bÄ uz citÄm servisa mezhu mÄrÄ·iem): piemÄram, atjauninÄt statusa lapu, izveidot problÄmu GitHub vai aizpildÄ«t JIRA biļeti. Un servisa mezhi piedÄvÄ Ärtu mehÄnismu visu Å”o automatizÄcijai.
10. Slodzes pÄrneÅ”ana (load shedding)
TL;DR: Novirziet trafiku kÄ atbildi uz Ä«slaicÄ«gu pieprasÄ«juma pieaugumu.
Ja kÄds serviss ir pÄrblÄ«vÄts ar trafiku, jÅ«s varat pagaidu novirzÄ«t daļu no Ŕī trafika uz citu vietu (t.i., "nolaist", "pÄrvietot" (shed) to tur). PiemÄram, uz rezerves servisu vai datu centru, vai uz pastÄvÄ«gu TÄma. LÄ«dz ar to pakalpojums turpinÄs apstrÄdÄt daļu pieprasÄ«jumu, nevis pilnÄ«bÄ apstÄsies. Slodzes atlaiÅ”ana ir vÄlams risinÄjums, nevis Ä·Ädes pÄrtraukums, bet tomÄr nevajadzÄtu to pÄrmÄrÄ«gi izmantot. Tas palÄ«dz novÄrst kaskÄdes kļūmes, pÄc kurÄm apstÄjas pakalpojumi lejupplÅ«smÄ.
11. ParalelizÄcija/Ä«spoguļoÅ”anas trafiks
TL;DR: NosÅ«tiet vienu pieprasÄ«jumu uzreiz vairÄkÄs vietÄs.
Dažreiz ir nepiecieÅ”ams nosÅ«tÄ«t pieprasÄ«jumu (vai noteiktu pieprasÄ«jumu kopu) uzreiz vairÄkos pakalpojumos. RaksturÄ«gs piemÄrs ir daļas ražoÅ”anas trafika nosÅ«tīŔana uz staging pakalpojumu. Galvenais tÄ«mekļa serveris ražoÅ”anÄ nosÅ«ta pieprasÄ«jumu uz zemÄk esoÅ”o pakalpojumu products.production un tikai uz to. SavukÄrt pakalpojumu tÄ«kls intelektuÄli kopÄ Å”o pieprasÄ«jumu un nosÅ«ta to uz products.staging, par ko tÄ«mekļa serveris pat nenojauÅ”.
VÄl viens saistÄ«ts scenÄrijs, kas izmanto pakalpojumu tÄ«klu un ko var realizÄt virs trafika paralelizÄcijas, ir . TÄ paredz, ka vieni un tie paÅ”i pieprasÄ«jumi tiek nosÅ«tÄ«ti dažÄdÄm pakalpojuma versijÄm un tiek pÄrbaudÄ«ts, vai visas versijas uzvedas vienÄdi. LÄ«dz Å”im man nav bijusi iespÄja saskarties ar pakalpojumu tÄ«klu, kurÄ bÅ«tu iekļauta regresijas testÄÅ”anas sistÄma, piemÄram, , bet pati ideja izskatÄs perspektÄ«va.
12. IzolÄcija
TL;DR: Sadaliet savu pakalpojumu tÄ«klu mazÄs apakÅ”tÄ«klos.
TÄ arÄ« pazÄ«stama kÄ segmentÄcija, izolÄcija ir mÄksla dalÄ«t pakalpojumu tÄ«klu loÄ£iski atseviŔķos segmentos, kas neko nezin viens par otru. IzolÄcija ir lÄ«dzÄ«ga virtuÄlo privÄto tÄ«klu veidoÅ”anai. PrincipÄ atŔķirÄ«ba ir tÄda, ka jÅ«s joprojÄm varat izmantot visas pakalpojumu tÄ«kla priekÅ”rocÄ«bas (piemÄram, pakalpojumu atklÄÅ”anu), taÄu ar papildu droŔību. PiemÄram, ja uzbrucÄjs spÄj iekļūt pakalpojumÄ kÄdÄ no apakÅ”tÄ«klÄm, viÅÅ” nespÄs redzÄt, kÄdi pakalpojumi darbojas citos apakÅ”tÄ«klos, vai pÄrÅemt to trafiku.
TurklÄt priekÅ”rocÄ«bas var bÅ«t arÄ« organizatoriskas. IespÄjams, vÄlÄsieties dalÄ«t pakalpojumus apakÅ”tÄ«klos atkarÄ«bÄ no uzÅÄmuma struktÅ«ras un atbrÄ«vot izstrÄdÄtÄjus no kognitÄ«vÄs slodzes, kas saistÄ«ta ar nepiecieÅ”amÄ«bu atcerÄties visu pakalpojumu tÄ«klu.
13. PieprasÄ«jumu biežuma ierobežoÅ”ana, atkÄrtoti mÄÄ£inÄjumi un laika ierobežojumi
TL;DR: Vairs nav nepiecieÅ”ams iekļaut kodu bÄzÄ svarÄ«gas uzdevumu pÄrvaldÄ«bas funkcijas.
Visas Ŕīs lietas varÄtu tikt uzskatÄ«tas par atseviŔķiem izmantoÅ”anas gadÄ«jumiem, bet es izlÄmu tÄs apvienot, jo tÄm ir viena kopÄ«ga Ä«paŔība: tÄs uzÅemas uzdevumus par pieprasÄ«jumu dzÄ«ves cikla pÄrvaldÄ«bu, ko parasti veiksmÄ«gi paveic piemÄroÅ”anas bibliotÄkas. Ja jÅ«s attÄ«stÄt tÄ«mekļa serveri, kas veidots Ruby on Rails (neintegrÄts ar pakalpojumu tÄ«klu), kas veic pieprasÄ«jumus pie aizmugures pakalpojumiem caur , lietotnei paÅ”ai bÅ«s jÄnosaka, ko darÄ«t, ja N pieprasÄ«jumi beidzas neveiksmÄ«gi. BÅ«s arÄ« jÄnoskaidro, cik lielu trafiku Å”ie pakalpojumi spÄj apstrÄdÄt, un jÄiekodÄ Å”ie parametri, izmantojot Ä«paÅ”u bibliotÄku. TurklÄt lietotnei bÅ«s jÄizlemj, kad ir laiks padoties un ļaut pieprasÄ«jumam nosacÄ«t.
UZdevu nodoÅ”ana pakalpojumu tÄ«klam nozÄ«mÄ ne tikai to, ka pakalpojumu izstrÄdÄtÄjiem vairs nav jÄdomÄ par to, bet arÄ« to, ka to var apskatÄ«t plaÅ”ÄkÄ kontekstÄ. Ja tiek izmantota sarežģīta pakalpojumu Ä·Äde, teiksim, A ā B ā C ā D ā E, jÄÅem vÄrÄ viss pieprasÄ«juma dzÄ«ves cikls. Ja mÄrÄ·is ir pagarinÄt laika limitus pakalpojumÄ C, ir loÄ£iski to darÄ«t kÄ vienu kopumu, nevis pa daļÄm: atjauninot pakalpojuma kodu un gaidot, kamÄr pull pieprasÄ«jums tiks akceptÄts un CI sistÄma izvietos atjauninÄto pakalpojumu.
14. Telemetrija
TL;DR: IevÄciet visu nepiecieÅ”amo (un ne gluži) informÄciju no pakalpojumiem.
Telemetrija ir vispÄrÄjs termins, kas ietver metrikas, izplatÄ«to izsekoÅ”anu un žurnÄlus. Pakalpojumu tÄ«kli piedÄvÄ mehÄnismus, lai vÄktu un apstrÄdÄtu visus trÄ«s datu tipus. Å eit viss kļūst nedaudz neskaidrs, jo iespÄjamo variantu skaits ir pÄrÄk liels. Metriku vÄkÅ”anai ir un citi rÄ«ki, žurnÄlu vÄkÅ”anai var izmantot , , u.c. (piemÄram, ClickHouse ar mÅ«su K8s ā tulkojumÄ), izplatÄ«tai izsekoÅ”anai ir utt. Katrs pakalpojumu tÄ«kls var atbalstÄ«t vienus rÄ«kus un neatbalstÄ«t citus. Interesanti, vai projekts spÄs nodroÅ”inÄt kÄdu konverÄ£enci.
Å ajÄ gadÄ«jumÄ service mesh tehnoloÄ£ijas priekÅ”rocÄ«ba ir tÄda, ka sidecar konteineri principÄ var savÄkt visus iepriekÅ” uzskaitÄ«tos datus no saviem pakalpojumiem. Citiem vÄrdiem sakot, jums ir pieejama vienota telemetrijas vÄkÅ”anas sistÄma, un service mesh var apstrÄdÄt visu Å”o informÄciju dažÄdos veidos. PiemÄram:
- pÄrraidÄ«t logus no konkrÄta pakalpojuma CLI;
- uzraudzīt pieprasījumu apjomu no service mesh paneles;
- vÄk dublikÄtus izsekojumus un novirzÄ«t tos uz sistÄmu, piemÄram, Jaeger.
UzmanÄ«bu, subjektÄ«vs apgalvojums: VispÄrÄ«gi runÄjot, telemetrija ir joma, kurÄ ir nevÄlams spÄcÄ«gs service mesh iejaukÅ”anÄs. Pamata informÄcijas vÄkÅ”ana un noteiktu āzelta metrijuā, piemÄram, veiksmÄ«gu pieprasÄ«jumu procentu un aizkavi, reÄllaikÄ uzraudzīŔana ir normÄla prakse, taÄu cerÄsim, ka nepiecurlinÄsim tÄdus FrankeÅ”teina stekus, kas mÄÄ£inÄs aizstÄt specializÄtas sistÄmas, no kurÄm dažas jau ir lieliski nostiprinÄjuÅ”Äs un labi izpÄtÄ«tas.
15. Audits
TL;DR: Tas, kurÅ” aizmirst vÄstures mÄcÄ«bas, ir nolemts tÄs atkÄrtot.
Audits ir mÄksla novÄrot svarÄ«gus notikumus sistÄmÄ. Service mesh gadÄ«jumÄ tas var nozÄ«mÄt izsekot, kurÅ” ir veicis pieprasÄ«jumus konkrÄtiem endpoint nÄkamo pakalpojumu vai cik reizes pÄdÄjÄ mÄnesÄ« noticis kÄds notikums, kas attiecas uz droŔību.
Ir acÄ«mredzams, ka audits ir ļoti cieÅ”i saistÄ«ts ar telemetriju. TomÄr atŔķirÄ«ba ir tÄda, ka telemetrija parasti tiek asociÄta ar tÄdÄm lietÄm kÄ veiktspÄja un tehniskÄ precizitÄte, kamÄr audits var attiekties uz juridiskiem un citiem jautÄjumiem, kas pÄrsniedz striktu tehnisko sfÄru (piemÄram, atbilstÄ«bu GDPR ā VispÄrÄjam datu aizsardzÄ«bas regulÄjumam).
16. VizualizÄcija
TL;DR: Lai dzÄ«vo React.js ā neizsmeļams dÄ«vainu interfeisu avots.
VarbÅ«t ir piemÄrotÄks termins, bet es to nezinÄÅ”u. Es vienkÄrÅ”i domÄju par service mesh vai tÄs dažiem komponentiem grafisko attÄlojumu. Å Ä«s vizualizÄcijas var ietvert rÄdÄ«tÄjus, piemÄram, vidÄjÄs aizkaves, informÄciju par sidecar konteineru konfigurÄciju, veselÄ«bas pÄrbaudes rezultÄtus un brÄ«dinÄjumus.
Darbs pakalpojumu orientÄtÄ vidÄ ir saistÄ«ts ar daudz lielÄku kognitÄ«vo slodzi salÄ«dzinÄjumÄ ar ViÅa MajestÄti MonolÄ«tu. TÄdÄļ kognitÄ«vÄ spiediena mazinÄÅ”anai jÄbÅ«t prioritÄtei. BanÄls grafiskais interfeiss pakalpojumu tÄ«klam ar iespÄju vienkÄrÅ”i nospiest pogu un saÅemt nepiecieÅ”amo rezultÄtu var izrÄdÄ«ties izŔķiroÅ”s Ŕīs tehnoloÄ£ijas popularitÄtes pieaugumam.
Netika iekļauti sarakstÄ
SÄkotnÄji es plÄnoju iekļaut sarakstÄ vÄl dažus lietoÅ”anas scenÄrijus, taÄu pÄc tam nolÄmu to nedarÄ«t. LÅ«k, tie kopÄ ar manÄm lÄmumu pieÅemÅ”anas pamatotÄ«bÄm:
- VairÄku datu centru. ManÄ izpratnÄ tas nav tik daudz lietoÅ”anas scenÄrijs, cik Å”aura un specifiska pakalpojumu tÄ«klu vai konkrÄtu funkciju kopuma izmantoÅ”ana, piemÄram, pakalpojumu atklÄÅ”ana.
- Ingress un egress. Tas ir saistÄ«ts ar jomu, taÄu es sevi ierobežoju (iespÄjams, mÄkslÄ«gi) ar lietoÅ”anas scenÄriju "east-west'' trafiks. Ingress un egress pelna atseviŔķu rakstu.
SecinÄjums
PagÄjÄm tas viss! Atkal, Å”is saraksts ir diezgan nosacÄ«ts un visticamÄk nav pilnÄ«gs. Ja jums Ŕķiet, ka esmu ko aizmirsis vai kļūdÄ«jies, sazinieties ar mani Twitter (). LÅ«dzu, ievÄrojiet pieklÄjÄ«bas noteikumus.
P.S. no tulka
KÄ ilustrÄcijas materiÄls rakstam tika izmantots attÄls no raksta "" (autore ā Gregory MacKinnon). TajÄ redzams, kÄ daļa no funkcionalitÄtes, kas iepriekÅ” bija lietotnÄs (zaÄ¼Ä krÄsÄ), pÄrgÄja uz pakalpojumu tÄ«klu, nodroÅ”inot to savstarpÄjÄs attiecÄ«bas (zilÄ krÄsÄ).
Lasiet arÄ« mÅ«su emuÄra rakstos:
- «»;
- «»;
- «».
Avots: habr.com
