Service Mesh: Dak li Kull Inġinier tas-Softwer Jeħtieġ li Jaf Dwar l-aktar Teknoloġija Sħana

Nota. transl.: Il-malji tas-servizz huwa fenomenu li għad m'għandux traduzzjoni stabbli bir-Russu (aktar minn 2 snin ilu offrejna l-għażla "malji għas-servizzi", u ftit aktar tard, xi kollegi bdew jippromwovu b'mod attiv il-kombinazzjoni "għarbiel tas-servizz") . Taħdit kostanti dwar din it-teknoloġija wassal għal sitwazzjoni li fiha l-komponenti tal-kummerċjalizzazzjoni u tekniċi huma marbuta wisq mill-qrib. Dan il-materjal mill-isbaħ minn wieħed mill-awturi tat-terminu oriġinali huwa maħsub biex iġib ċarezza lill-inġiniera u mhux biss.

Service Mesh: Dak li Kull Inġinier tas-Softwer Jeħtieġ li Jaf Dwar l-aktar Teknoloġija Sħana
Komik minn Sebastian Caceres

Introduzzjoni

Jekk inti inġinier tas-softwer li taħdem x'imkien fil-qasam tas-sistemi backend, it-terminu "malji tas-servizz" probabbilment diġà sar sod f'moħħok matul l-aħħar ftit snin. Grazzi għal koinċidenza stramba, din il-frażi qed tieħu f'idejha l-industrija dejjem aktar, u l-hype u l-offerti promozzjonali relatati qed jikbru bħal ballun tas-silġ, itir fl-għoljiet u ma juru l-ebda sinjali ta 'tnaqqis.

Il-malji tas-servizz twieldet fl-ilmijiet imċajpra u tendenzjużi tal-ekosistema nattiva tas-sħab. Sfortunatament, dan ifisser li ħafna mill-kontroversja madwarha tvarja minn "chatter b'kaloriji baxxi" għal - biex tuża t-terminu tekniku - bullshit sfaċċat. Imma jekk tiffiltra l-istorbju kollu, tista 'ssib li l-malja tas-servizz għandha funzjoni reali ħafna, definita u importanti.

F'din il-kariga, se nipprova nagħmel dan: ipprovdi gwida onesta, fil-fond, orjentata lejn l-inġinier għall-malji tas-servizz. Se nwieġeb aktar milli sempliċement il-mistoqsija: "X'inhu?", - imma anke "Għaliex?"U "Għaliex issa?". Fl-aħħar nett, se nipprova niddeskrivi għaliex (fl-opinjoni tiegħi) din it-teknoloġija partikolari kkawżat hype daqshekk miġnun, li fih innifsu huwa storja interessanti.

Min jien?

Hi kollha! Jien jisimni William Morgan. Jien wieħed mill-ħallieqa Linkerd - l-ewwel proġett tal-malji tas-servizz u l-proġett li huwa t-tort għad-dehra tat-terminu malji tas-servizz bħala tali (skużani guys!). (Nota transl.: Mill-mod, fil-bidu tad-dehra ta 'dan it-terminu, aktar minn 2,5 snin ilu, diġà ttraduċijna l-materjal bikri tal-istess awtur imsejjaħ "X'inhu xibka ta' servizz u għaliex għandi bżonnha [għal applikazzjoni sħaba b'mikroservizzi]?".) Jien ukoll imexxi Għajjien hija startup li tibni affarijiet ta 'malji ta' servizz jibred bħal Linkerd u Adsa.

Probabilment tista' taqta' li għandi opinjoni preġudikata u suġġettiva ħafna dwar din il-kwistjoni. Madankollu, se nipprova nżomm il-preġudizzju għall-minimu (bl-eċċezzjoni ta 'taqsima waħda: "Għaliex hemm tant diskors dwar il-malji tas-servizz?", - li madankollu se naqsam l-ideat prekonċepiti tiegħi). Se nagħmel minn kollox biex din il-gwida tkun oġġettiva kemm jista' jkun. F'eżempji speċifiċi, ser niddependi prinċipalment fuq l-esperjenza ta 'Linerd, filwaqt li nirrimarka d-differenzi (jekk hemm) li naf bihom fl-implimentazzjoni ta' tipi oħra ta 'malji ta' servizz.

Tajjeb, wasal iż-żmien li ngħaddu għall-kura.

X'inhu xibka tas-servizz?

Minkejja l-hype kollha, il-malja tas-servizz hija strutturalment pjuttost sempliċi. Huwa biss mazz ta 'prokuri tal-ispazju tal-utent li jinsabu "ħdejn" servizzi (se nitkellmu ftit dwar "qrib" aktar tard), flimkien ma' sett ta 'proċessi ta' kontroll. Il-prokuri huma msejħa kollettivament pjan tad-data, u l-proċessi ta 'kontroll jissejħu pjan ta ’kontroll. Il-pjan tad-dejta jinterċetta sejħiet bejn is-servizzi u jagħmel "xi ħaġa differenti" magħhom; il-pjan ta' kontroll, rispettivament, jikkoordina l-imġieba tal-prokura u jipprovdi aċċess għalik, i.e. operatur, lill-API, li jippermetti li n-netwerk jiġi manipulat u mkejjel kollu kemm hu.

Service Mesh: Dak li Kull Inġinier tas-Softwer Jeħtieġ li Jaf Dwar l-aktar Teknoloġija Sħana

X'inhu dan il-prokura? Dan huwa prokura TCP tal-kategorija "Layer 7-aware". (jiġifieri "meta wieħed iqis" is-7 saff tal-mudell OSI) bħal HAProxy u NGINX. Tista' tagħżel prokura skont il-predisposizzjoni tiegħek; Linkerd juża prokura Rust, imsejjaħ bla komplikazzjoni linkerd-proxy. Aħna kkumpilajna speċifikament għall-malji tas-servizz. Malji oħra jippreferu prokuri oħra (Mibgħut huwa għażla komuni). Madankollu, l-għażla ta' prokura hija biss kwistjoni ta' implimentazzjoni.

X'jagħmlu dawn is-servers proxy? Ovvjament, huma jipprokuraw sejħiet lejn u mis-servizzi (b'mod strett, jaġixxu bħala prokuri u prokuraturi inversi, li jimmaniġġjaw sejħiet kemm deħlin kif ukoll ħerġin). U jimplimentaw sett ta 'karatteristiċi li jiffoka fuq sejħiet bejn servizzi. Dan il-fokus fuq it-traffiku bejn is-servizzi huwa dak li jiddistingwi proxy mesh tas-servizz minn, ngħidu aħna, gateways API jew proxys ta 'dħul (dawn tal-aħħar jiffokaw fuq sejħiet li jidħlu fil-cluster mid-dinja ta' barra). (Nota. transl.: Għal paragun ta' kontrolluri eżistenti ta' Kubernetes Ingress, li ħafna minnhom jużaw l-Envoy diġà msemmi, ara Dan l-artikolu.)

Allura, aħna dehret il-pjan tad-dejta. Il-pjan ta 'kontroll huwa aktar sempliċi: huwa sett ta' komponenti li jipprovdu l-mekkaniżmi kollha li l-pjan tad-dejta jeħtieġ biex jaħdem b'mod koordinat, inkluż skoperta ta 'servizz, ħruġ ta' ċertifikat TLS, aggregazzjoni ta 'metriċi, eċċ. Il-pjan tad-dejta jinforma lill-pjan ta' kontroll dwar l-imġieba tagħha; min-naħa tiegħu, il-pjan ta 'kontroll jipprovdi API li tippermettilek tibdel u ssegwi l-imġieba tal-pjan tad-dejta kollu kemm hu.

Hawn taħt hemm dijagramma tal-pjan ta 'kontroll u l-pjan tad-dejta f'Linerd. Kif tistgħu taraw, il-pjan ta’ kontroll jinkludi diversi komponenti differenti, inkluża istanza Prometheus li tiġbor metriċi minn proxy servers, kif ukoll komponenti oħra bħal destination (skoperta tas-servizz), identity (awtorità taċ-ċertifikazzjoni, CA) u public-api (endpoints għall-web u CLI). B'kuntrast, il-pjan tad-dejta huwa linkerd-proxy sempliċi ħdejn l-istanza tal-applikazzjoni. Din hija biss dijagramma loġika; fi skjerament fid-dinja reali, jista 'jkollok tliet repliki ta' kull komponent tal-pjan ta 'kontroll u mijiet jew eluf ta' prokuri fil-pjan tad-dejta.

(Il-kaxxi blu f'din id-dijagramma jirrappreżentaw il-fruntieri tal-imżiewed Kubernetes. Tista' tara li l-kontenituri bil-linkerd-proxy huma fl-istess pod bħall-kontenituri tal-applikazzjoni. Din l-iskema hija magħrufa bħala kontenitur sidecar.)

Service Mesh: Dak li Kull Inġinier tas-Softwer Jeħtieġ li Jaf Dwar l-aktar Teknoloġija Sħana

L-arkitettura tal-malji tas-servizz għandha bosta implikazzjonijiet importanti. L-ewwel, peress li x-xogħol ta’ prokura huwa li jinterċetta sejħiet bejn is-servizzi, xibka ta’ servizz tagħmel sens biss jekk l-applikazzjoni tiegħek tkun inbniet għal sett ta’ servizzi. malji wieħed jista ' użu ma 'monoliths, iżda dan huwa b'mod ċar żejda għall-fini ta' prokura waħda, u l-funzjonalità tagħha x'aktarx li ma tkunx fid-domanda.

Konsegwenza importanti oħra hija li l-malja tas-servizz teħtieġ enormi numru ta' prokuri. Fil-fatt, Linkerd ktajjen linkerd-proxy għal kull istanza ta 'kull servizz (implimentazzjonijiet oħra jżidu prokura għal kull host/host/VM. Dak huwa ħafna xorta waħda). Użu attiv bħal dan ta 'prokura fih innifsu jġorr għadd ta' kumplikazzjonijiet addizzjonali:

  1. Prokuri fil-pjan tad-data għandhom ikunu malajr, għaliex għal kull sejħa hemm ftit sejħiet lill-prokura: waħda fuq in-naħa tal-klijent, waħda fuq in-naħa tas-server.
  2. Ukoll, prokuri għandhom ikunu żgħar и ħfief. Kull wieħed se jikkonsma memorja u riżorsi tas-CPU, u dan il-konsum se jikber b'mod lineari mal-applikazzjoni.
  3. Ikollok bżonn mekkaniżmu biex tuża u taġġorna numru kbir ta' prokuri. Li tagħmel dan manwalment mhix għażla.

B'mod ġenerali, il-malja tas-servizz tidher bħal din (mill-inqas minn ħarsa ta' l-għasafar): inti tiskjera mazz ta 'prokuri ta' spazju għall-utent li "jagħmlu xi ħaġa" bi traffiku intern, bejn is-servizzi, u tuża l-pjan ta 'kontroll biex timmonitorjahom u timmaniġġjahom.

Wasal iż-żmien għall-mistoqsija "Għaliex?"

Għal xiex inhi xibka tas-servizz?

Għal dawk li ltaqgħu l-ewwel ma 'l-idea ta' malja ta 'servizz, huwa ta' maħfra li tkun xi ftit imwerwer. Id-disinn tal-malji tas-servizz ifisser li mhux biss se jżid il-latenza tal-applikazzjoni, iżda wkoll tikkonsma riżorsi u se żżid mazz ta' mekkaniżmi ġodda fl-infrastruttura. L-ewwel twaqqaf xibka ta’ servizz, u mbagħad f’daqqa waħda ssib ruħek li trid taqdi mijiet (jekk mhux eluf) ta’ prokuri. Il-mistoqsija hija, min se joffri volontarjat għal dan?

It-tweġiba għal din il-mistoqsija għandha żewġ partijiet. L-ewwel, l-ispejjeż tat-tranżazzjoni assoċjati mal-iskjerament ta 'dawn il-prokuri jistgħu jitnaqqsu b'mod sinifikanti minħabba xi bidliet li jseħħu fl-ekosistema (aktar dwar dan aktar tard).

It-tieni nett, tali apparat huwa fil-fatt mod tajjeb ħafna biex tintroduċi loġika addizzjonali fis-sistema. U mhux biss għax jistgħu jiżdiedu ħafna karatteristiċi ġodda bl-użu tal-malji tas-servizz, iżda wkoll għax jista 'jsir mingħajr ma jinterferixxi mal-ekosistema. Fil-fatt, il-mudell kollu tal-malji tas-servizz huwa bbażat fuq dan il-postulat: f'sistema b'ħafna servizzi, x'ikun qed tagħmel servizzi individwali, traffiku bejniethom huwa l-punt ideali biex iżżid il-funzjonalità.

Pereżempju, f'Linerd (bħal fil-biċċa l-kbira tal-malji) il-funzjonalità hija ffukata primarjament fuq sejħiet HTTP, inklużi HTTP/2 u gRPC*. Il-funzjonalità hija pjuttost rikka - tista 'tinqasam fi tliet klassijiet:

  1. Karatteristiċi relatati affidabbiltà. Ipprova mill-ġdid talbiet, timeouts, approċċ kanarju (qasma/ridirezzjoni tat-traffiku), eċċ.
  2. Karatteristiċi relatati monitoraġġ. Aggregazzjoni ta' rati ta' suċċess, dewmien u volumi ta' talbiet għal kull servizz jew destinazzjonijiet individwali; bini ta’ mapep topoloġiċi ta’ servizzi, eċċ.
  3. Karatteristiċi relatati sigurtà. TLS reċiproku, kontroll tal-aċċess, eċċ.

* Mill-perspettiva ta 'Linkerd, gRPC prattikament mhux differenti minn HTTP/2: juża biss protobuf fit-tagħbija. Mill-aspett ta 'żviluppatur, dawn iż-żewġ affarijiet huma, ovvjament, differenti.

Ħafna minn dawn il-mekkaniżmi joperaw fil-livell tat-talba (għalhekk il-"prokura L7"). Pereżempju, jekk is-servizz Foo jagħmel sejħa HTTP għal servizz Bar, il-linkerd-proxy fuq in-naħa ta 'Foo jista' b'mod intelliġenti jibbilanċja u jindirizza sejħiet minn Foo għal każijiet Bar ibbażati fuq latency osservata; jista' jirrepeti t-talba jekk ikun meħtieġ (u jekk ikun idempotenti); huwa jista 'jirreġistra l-kodiċi tar-rispons u timeout, eċċ. Bl-istess mod, il-linkerd-proxy fuq in-naħa tal-Avukatura jista' jirrifjuta talba jekk ma tkunx permessa jew jekk jinqabeż il-limitu tat-talba; jista 'jiffissa d-dewmien min-naħa tiegħu, eċċ.

Prokuri jistgħu "jagħmlu xi ħaġa" fil-livell ta 'konnessjoni wkoll. Pereżempju, linkerd-proxy fuq in-naħa ta' Foo jista' jibda konnessjoni TLS, u linkerd-proxy fuq in-naħa tal-Bar jista' jtemmha, u ż-żewġ naħat jistgħu jivverifikaw iċ-ċertifikati TLS ta' xulxin*. Dan jipprovdi mhux biss encryption bejn is-servizzi, iżda wkoll mod kriptografikament sikur biex jiġu identifikati s-servizzi: Foo u Bar jistgħu "jipprovaw" li huma min jgħidu li huma.

* "Ħabib ta' ħabib" tfisser li ċ-ċertifikat tal-klijent huwa vverifikat ukoll (TLS reċiproku). F'TLS "klassiku", pereżempju, bejn browser u server, iċ-ċertifikat ta 'naħa waħda biss (is-server) huwa normalment ivverifikat.

Kemm jekk joperaw fil-livell tat-talba jew tal-konnessjoni, huwa importanti li jiġi enfasizzat li l-karatteristiċi kollha tal-malji tas-servizz huma operattivi karattru. Linkerd ma jistax jittrasforma s-semantika tat-tagħbija, bħaż-żieda ta' oqsma ma' framment JSON jew li tagħmel bidliet fi protobuf. Nitkellmu dwar din il-karatteristika importanti aktar tard meta nitkellmu dwar ESB u middleware.

Dan huwa s-sett ta 'karatteristiċi li joffri l-malji tas-servizz. Tqum il-mistoqsija: għaliex ma timplimentahomx direttament fl-applikazzjoni? U għaliex mess bi prokura fil-livelli kollha?

Għaliex xibka tas-servizz hija idea tajba

Filwaqt li l-kapaċitajiet tal-malji tas-servizz huma captivating, il-valur ewlieni tagħha ma tantx jinsab fil-karatteristiċi. Fl-aħħar aħna Jista ' timplimentahom direttament fl-applikazzjoni (aktar tard naraw li din kienet l-oriġini tal-malji tas-servizz). Biex tpoġġiha f'sentenza waħda, il-valur ta 'malji tas-servizz huwa: jipprovdi funzjonalità kritika għat-tħaddim ta' softwer modern tas-server b'mod konsistenti, mal-munzell, agnostiku tal-kodiċi tal-applikazzjoni.

Ejja nanalizzaw din il-proposta.

«Funzjonijiet Kritiċi għat-Tħaddim tas-Softwer Modern tas-Server". Jekk qed tibni applikazzjoni ta' server transazzjonali konnessa mal-internet pubbliku li taċċetta talbiet mid-dinja ta' barra u twieġeb għalihom fi żmien qasir - pereżempju, applikazzjoni tal-web, server API, u l-maġġoranza vasta ta' applikazzjonijiet moderni oħra - u jekk timplimentah bħala sett ta 'servizzi li jinteraġixxu b'mod sinkroniku ma' xulxin, u jekk qed jaġġornaw dan is-software kontinwament, iżżid karatteristiċi ġodda, u jekk tkun sfurzat iżżomm din is-sistema f'kondizzjoni ta 'ħidma waqt il-modifika - f'dan il-każ, prosit , qed toħloq softwer modern tas-server. U dawk il-karatteristiċi kbar kollha elenkati hawn fuq fil-fatt jirriżultaw li huma kritiċi għalik. L-applikazzjoni trid tkun affidabbli, sigura, u trid tkun tista' tara x'qed tagħmel. Huma dawn il-mistoqsijiet li l-malja tas-servizz tgħin biex issolvi.

(Okay, il-konvinzjoni tiegħi li dan l-approċċ huwa l-mod modern biex jinbena s-softwer tas-server daħlet fil-paragrafu preċedenti. Oħrajn jippreferu jiżviluppaw monoliti, "mikroservizzi reattivi" u affarijiet oħra li ma jaqgħux taħt id-definizzjoni ta 'hawn fuq. Dawn in-nies probabbilment għandhom opinjoni li huwa differenti minn tiegħi, u min-naħa tiegħu, nemmen li huma "żbaljati" - għalkemm fi kwalunkwe każ, il-malja tas-servizz mhix utli ħafna għalihom).

«Uniformi għall-munzell kollu". Il-karatteristiċi pprovduti mill-malji tas-servizz mhumiex biss kritiċi. Japplikaw għas-servizzi kollha fl-applikazzjoni, irrispettivament minn liema lingwa huma miktuba, liema qafas jużaw, min kitbuhom, kif ġew skjerati, u l-irqaq l-oħra kollha tal-iżvilupp u l-użu tagħhom.

«Kodiċi tal-applikazzjoni indipendenti". Fl-aħħarnett, il-malja tas-servizz mhux biss tipprovdi funzjonalità konsistenti mal-munzell kollu, iżda tagħmel dan b'mod li ma jeħtieġx l-editjar tal-applikazzjoni. Il-bażi fundamentali tal-funzjonalità ta 'malja tas-servizz, inklużi l-kompiti ta' konfigurazzjoni, aġġornament, tħaddim, manutenzjoni, eċċ., hija purament fil-livell tal-pjattaforma u hija indipendenti mill-applikazzjoni. L-applikazzjoni tista 'tinbidel mingħajr ma taffettwa l-malji tas-servizz. Min-naħa tagħha, il-malja tas-servizz tista 'tinbidel mingħajr ebda intervent ta' applikazzjoni.

Fil-qosor, il-malja tas-servizz mhux biss tipprovdi funzjonalità vitali, iżda tagħmel dan b'mod globali, uniformi u indipendenti mill-applikazzjoni. U għalhekk, filwaqt li l-funzjonalità ta 'malji ta' servizz tista 'tiġi implimentata fil-kodiċi tas-servizz (per eżempju, bħala librerija inkluża ma' kull servizz), dan l-approċċ mhux se jipprovdi l-uniformità u l-indipendenza li hija tant siewja fil-każ ta 'malji ta' servizz. .

U kull ma trid tagħmel hu li żżid mazz ta 'prokuri! Inwiegħed, dalwaqt se nħarsu lejn l-ispejjeż operattivi assoċjati maż-żieda ta 'dawn il-prokuri. Imma l-ewwel, ejja nieqfu u nħarsu lejn din l-idea ta 'indipendenza mill-perspettiva ta' diversi nies.

Il-malji tas-servizz lil min jgħin?

Kemm jista' jkun inkonvenjenti, sabiex teknoloġija ssir parti importanti mill-ekosistema, trid tiġi aċċettata min-nies. Allura min hu interessat f'malja tas-servizz? Min jibbenefika mill-użu tiegħu?

Jekk tiżviluppa softwer modern tas-server, tista' bejn wieħed u ieħor timmaġina t-tim tiegħek bħala grupp sidien tas-servizzili flimkien jiżviluppaw u jimplimentaw il-loġika tan-negozju, u sidien tal-pjattaformiinvoluti fl-iżvilupp tal-pjattaforma interna li fuqha jaħdmu dawn is-servizzi. F'organizzazzjonijiet żgħar, dawn jistgħu jkunu l-istess nies, iżda hekk kif il-kumpanija tikber, dawn ir-rwoli għandhom it-tendenza li jsiru aktar evidenti u saħansitra maqsuma f'sub-rwoli ... (Hemm ħafna xi jingħad hawn dwar in-natura li qed tinbidel tad-devops, l-impatt organizzattiv tal-mikroservizzi, eċċ.) n. Imma għalissa, ejja nieħdu dawn id-deskrizzjonijiet for granted).

Minn dan il-lat, il-benefiċjarji ċari tal-malji tas-servizz huma s-sidien tal-pjattaforma. Wara kollox, l-għan aħħari tat-tim tal-pjattaforma huwa li joħloq pjattaforma interna li fuqha s-sidien tas-servizzi jistgħu jimplimentaw il-loġika tan-negozju u jagħmlu dan b'mod li jiggarantilhom indipendenza massima mid-dettalji skura tal-operat tiegħu. Il-malja tas-servizz mhux biss toffri l-kapaċitajiet kritiċi biex jintlaħaq dan il-għan, iżda tagħmel dan b'mod li, imbagħad, ma timponi l-ebda dipendenza fuq is-sidien tas-servizz.

Is-sidien tas-servizzi jibbenefikaw ukoll, għalkemm b'mod aktar indirett. L-għan tas-sid tas-servizz huwa li jkun produttiv kemm jista 'jkun fl-implimentazzjoni tal-loġika tal-proċess tan-negozju, u inqas ma jkollu għalfejn jinkwieta dwar kwistjonijiet operattivi, aħjar. Minflok jinfurzaw, ngħidu aħna, politiki mill-ġdid jew TLS, jistgħu jiffokaw biss fuq in-negozju u jittamaw li l-pjattaforma tieħu ħsieb il-bqija. Għalihom, dan huwa vantaġġ kbir.

Il-valur organizzattiv ta' tali diviżjoni bejn is-sidien tal-pjattaformi u s-servizzi ma jistax jiġi stmat iżżejjed. Naħseb li tikkontribwixxi il-prinċipali kontribuzzjoni għall-valur tal-malji tas-servizz.

Tgħallimna din il-lezzjoni meta fan minn kmieni Linkerd qalilna għaliex għażlu l-malja tas-servizz: għax ippermettilhom "ikomplu jitkellmu għall-minimu." Hawn huma xi dettalji: guys minn kumpanija kbira waħda emigraw il-pjattaforma tagħhom għal Kubernetes. Peress li l-applikazzjoni ħadmet b'informazzjoni sensittiva, riedu jikkriptaw il-komunikazzjonijiet kollha fir-raggruppamenti. Madankollu, is-sitwazzjoni kienet ikkumplikata bil-preżenza ta 'mijiet ta' servizzi u mijiet ta 'timijiet ta' żvilupp. Il-prospett li jikkuntattjaw lil kulħadd u jikkonvinċuhom biex jinkludu appoġġ għat-TLS fil-pjanijiet tagħhom ma għoġobhom xejn. Billi installa Linkerd, emigraw responsabbiltà mill-iżviluppaturi (minn il-lat tagħhom kien inkwiet bla bżonn) għal platformers, li għalihom din kienet prijorità tal-ogħla livell. Fi kliem ieħor, Linkerd kien qed isolvi għalihom mhux tant problema teknika daqs kemm waħda organizzattiva.

Fil-qosor, il-malji tas-servizz huwa, pjuttost, mhux soluzzjoni teknika, iżda soċjo-tekniċi Problemi. (Grazzi Cindy Sridharan għall-introduzzjoni ta’ dan it-terminu.

Il-malja tas-servizz issolvi l-problemi kollha tiegħi?

Iva. Jiġifieri, le!

Meta wieħed iħares lejn it-tliet klassijiet ta 'karatteristiċi deskritti hawn fuq - affidabilità, sigurtà u osservabilità - jidher ċar li l-malja tas-servizz mhix soluzzjoni sħiħa għal xi waħda minn dawn il-problemi. Għalkemm Linkerd jista 'jibgħat talbiet ripetuti (jekk ikun jaf li huma idempotenti), mhuwiex f'pożizzjoni li jieħu deċiżjonijiet dwar x'għandu jirritorna lill-utent jekk is-servizz finalment niżel - deċiżjonijiet bħal dawn għandhom jittieħdu mill-applikazzjoni. Linkerd jista' jżomm statistika dwar talbiet li rnexxew, iżda mhux kapaċi jħares lejn is-servizz u jipprovdi l-metriċi interni tiegħu - applikazzjoni għandu jkollha kit ta' għodda bħal dan. U filwaqt li Linkerd kapaċi jospita mTLS, is-soluzzjonijiet ta’ sigurtà sħiħa jeħtieġu ħafna aktar.

Sottogrupp tal-karatteristiċi f'dawn l-oqsma offruti mill-malji tas-servizz huma relatati magħhom karatteristiċi tal-pjattaforma. B'dan irrid infisser funzjonijiet li:

  1. Indipendenti mill-loġika tan-negozju. Il-mod li bih l-istogrammi tas-sejħiet huma mibnija bejn Foo u Bar huwa kompletament indipendenti minn jekk għaliex Foo jsejjaħ lil Bar.
  2. Diffiċli biex timplimenta b'mod korrett. F'Linerd, tentattivi mill-ġdid huma parametrizzati b'kull xorta ta 'għalf fancy bħal baġits mill-ġdid. (erġa pprova l-baġits), peress li approċċ sempliċi għall-implimentazzjoni ta 'affarijiet bħal dawn żgur li se jwassal għall-emerġenza tal-hekk imsejħa "valanga ta' talbiet" (erġa' pprova maltempata) u problemi oħra speċifiċi għal sistemi distribwiti.
  3. L-aktar effettiv meta applikat b'mod konsistenti. Il-mekkaniżmu TLS jagħmel sens biss jekk jiġi applikat kullimkien.

Minħabba li dawn il-karatteristiċi huma implimentati fis-saff tal-prokura (u mhux fis-saff tal-applikazzjoni), il-malji tas-servizz jesponihom fil- pjattaformi, mhux applikazzjonijiet. Għalhekk, ma jimpurtax f'liema lingwa huma miktuba s-servizzi, f'liema qafas jużaw, min kitebhom u għaliex. Il-prokuri jaħdmu lil hinn minn dawn id-dettalji kollha, u l-bażi fundamentali ta 'din il-funzjonalità, inklużi l-kompiti ta' konfigurazzjoni, aġġornament, tħaddim, manutenzjoni, eċċ., tinsab biss fil-livell tal-pjattaforma.

Eżempji ta' kapaċitajiet tal-malji tas-servizz

Service Mesh: Dak li Kull Inġinier tas-Softwer Jeħtieġ li Jaf Dwar l-aktar Teknoloġija Sħana

Fil-qosor, xibka tas-servizz mhix soluzzjoni kompluta għall-affidabbiltà, l-osservabilità jew is-sigurtà. L-ambitu ta 'dawn l-oqsma jimplika l-parteċipazzjoni obbligatorja tas-sidien tas-servizzi, timijiet Ops / SRE u partijiet interessati oħra tal-kumpaniji. Il-malji tas-servizz jipprovdi biss "porzjon" fil-livell tal-pjattaforma għal kull waħda minn dawn iż-żoni.

Għaliex il-malja tas-servizz saret popolari bħalissa?

Probabbilment qed tistaqsi bħalissa: OK, jekk il-malja tas-servizz hija daqshekk tajba, għaliex ma bdejniex inħaddmu miljuni ta 'prokuri fuq il-munzell għaxar snin ilu?

Hemm tweġiba banali għal din il-mistoqsija: għaxar snin ilu kulħadd bena monoliti, u ħadd ma kellu bżonn xibka ta 'servizz. Dan huwa minnu, iżda fl-opinjoni tiegħi, din it-tweġiba ma tissodisfax il-punt. Anke għaxar snin ilu, il-kunċett ta 'mikroservizzi bħala mod promettenti biex jinħolqu sistemi fuq skala kbira kien diskuss u applikat b'mod wiesa' f'kumpaniji bħal Twitter, Facebook, Google u Netflix. Il-perċezzjoni ġenerali - għall-inqas fil-partijiet tal-industrija li kont f'kuntatt magħhom - kienet li l-mikroservizzi huma l-"mod it-tajjeb" biex jinbnew sistemi kbar, anke jekk kien diffiċli ħafna.

Naturalment, għalkemm kien hemm kumpaniji li jisfruttaw il-mikroservizzi għaxar snin ilu, ma waħħalx prokuri kullimkien li setgħu biex jiffurmaw xibka tas-servizz. Madankollu, jekk tħares mill-qrib, għamlu xi ħaġa simili: ħafna minn dawn il-kumpaniji talbu l-użu ta 'librerija interna speċjali għan-netwerking (xi kultant imsejħa l-librerija tal-klijenti tax-xaħam, librerija tal-klijenti tax-xaħam).

Netflix kellha Hysterix, Google kellha Stubby, Twitter kellha l-librerija Finagle. Finagle, pereżempju, kien obbligatorju għal kull servizz ġdid fuq Twitter. Immaniġġja kemm in-naħa tal-klijent kif ukoll is-server tal-konnessjonijiet, ippermetta talbiet ripetuti, appoġġa r-rotot tat-talbiet, l-ibbilanċjar tat-tagħbija u l-kejl. Hija pprovdiet saff konsistenti ta 'affidabbiltà u osservabilità tul il-munzell kollu ta' Twitter, irrispettivament minn x'kien qed jagħmel is-servizz. Naturalment, ħadmet biss għal-lingwi JVM u kienet ibbażata fuq mudell ta 'programmar li kellu jintuża għall-applikazzjoni kollha. Madankollu, il-funzjonalità tagħha kienet kważi l-istess bħal dik tal-malja tas-servizz. (Fil-fatt, l-ewwel verżjoni ta 'Linerd kienet biss Finagle mgeżwra f'forma ta' prokura.)

Għalhekk, għaxar snin ilu ma kienx hemm biss mikroservizzi, iżda wkoll libreriji speċjali proto-service-mesh li solvew l-istess problemi li ssolvi l-malji tas-servizz illum. Madankollu, il-malja tas-servizz innifsu ma kienx jeżisti dak iż-żmien. Kellu jkun hemm bidla oħra qabel ma dehret.

U dan huwa fejn tinsab it-tweġiba aktar profonda, moħbija f'bidla oħra li seħħet matul l-aħħar 10 snin: kien hemm tnaqqis qawwi fl-ispiża tal-iskjerament tal-mikroservizzi. Il-kumpaniji msemmija hawn fuq li użaw mikroservizzi għaxar snin ilu—Twitter, Netflix, Facebook, Google—kienu kumpaniji ta’ skala kbira u riżorsi enormi. Huma mhux biss kellhom il-ħtieġa, iżda wkoll il-ħila li jibnu, jużaw, u joperaw applikazzjonijiet kbar ibbażati fuq mikroservizzi. L-enerġija u l-isforz li l-inġiniera ta 'Twitter għamlu biex jimxu minn approċċ monolitiku għal approċċ ta' mikroservizzi huma aqwa. (Onestament, kif kien il-fatt li ħadmet.) Dan it-tip ta' manuvrar tal-infrastruttura kien imbagħad impossibbli għal kumpaniji iżgħar.

Ejja nimxu għall-preżent. Illum hemm startups fejn il-proporzjon tal-mikroservizzi għall-iżviluppaturi huwa 5:1 (jew saħansitra 10:1), u barra minn hekk, ilaħħqu magħhom b'suċċess! Jekk istartjar ta '5 persuni tkun kapaċi topera 50 mikroservizz mingħajr tensjoni, allura xi ħaġa naqqset b'mod ċar l-ispiża tal-implimentazzjoni tagħhom.

Service Mesh: Dak li Kull Inġinier tas-Softwer Jeħtieġ li Jaf Dwar l-aktar Teknoloġija Sħana
1500 mikroservizz f’Monzo; kull linja hija regola tan-netwerk preskritta li tippermetti t-traffiku

It-tnaqqis drammatiku fl-ispiża tal-operat tal-mikroservizzi huwa r-riżultat ta' proċess wieħed: popolarità dejjem tikber tal-kontenituri и orkestraturi. Din hija preċiżament it-tweġiba profonda għall-mistoqsija dwar x'ikkontribwixxa għall-emerġenza tal-malji tas-servizz. L-istess teknoloġija għamlet kemm il-malja tas-servizz kif ukoll il-mikroservizzi attraenti: Kubernetes u Docker.

Għaliex? Ukoll, Docker issolvi problema waħda kbira - il-problema tal-ippakkjar. Billi tippakkja applikazzjoni u d-dipendenzi tar-runtime tagħha (mhux tan-netwerk) f'kontenitur, Docker jibdel l-applikazzjoni f'unità funġibbli li tista 'tiġi ospitata u titħaddem kullimkien. Fl-istess ħin, tissimplifika ħafna l-operat. multilingwi munzell: Peress li kontenitur huwa unità atomika ta 'eżekuzzjoni, ma jimpurtax x'hemm ġewwa, kemm jekk hija applikazzjoni JVM, Node, Go, Python, jew Ruby, għal skopijiet ta' skjerament u operattivi. Inti sempliċiment tmexxiha u dak hu.

Kubernetes jieħu kollox fil-livell li jmiss. Issa li hemm mazz ta '"affarijiet eżekubbli" u ħafna magni biex imexxuhom, hemm bżonn ta' għodda li tista 'tqabbilhom ma' xulxin. F'sens wiesa', inti tagħti lil Kubernetes ħafna kontenituri u ħafna magni, u tqabbelhom ma' xulxin (naturalment, dan huwa proċess dinamiku u li qed jinbidel kontinwament: kontenituri ġodda jimxu madwar is-sistema, magni jibdew u jieqfu, eċċ. Madankollu, Kubernetes iqis dan kollu).

Ladarba Kubernetes jiġi stabbilit, iż-żmien li jieħu biex jiġi skjerat u tħaddem servizz wieħed ma jkunx ħafna differenti mill-ispiża biex jiġu skjerati u operati għaxar servizzi (fil-fatt, huwa kważi l-istess għal 100 servizz). Żid ma 'dan il-kontenituri bħala mekkaniżmu ta' ippakkjar li jinkoraġġixxi l-implimentazzjoni multilingwi, u għandek ton ta 'applikazzjonijiet ġodda implimentati bħala mikroservizzi miktuba f'diversi lingwi, eżatt it-tip ta' ambjent li l-malja tas-servizz hija tant adattata għalih.

Allura, naslu għat-tweġiba għall-mistoqsija dwar għaliex l-idea ta 'malja ta' servizz saret popolari bħalissa: l-uniformità li Kubernetes jipprovdi għas-servizzi hija applikabbli direttament għall-kompiti operattivi li tiffaċċja l-malja tas-servizz. Inti tippakkja prokuri f'kontenituri, tagħti lil Kubernetes il-kompitu li twaħħalhom kull fejn ikun possibbli, u voila! Fl-output, ikollok xibka tas-servizz, filwaqt li Kubernetes jikkontrolla l-mekkaniżmi kollha tal-iskjerament tiegħu. (Mill-inqas minn ħarsa ta' l-għasafar. Naturalment, hemm ħafna sfumaturi għal dan il-proċess.)

Fil-qosor: ir-raġuni li l-malja tas-servizz saret popolari issa u mhux għaxar snin ilu hija li Kubernetes u Docker mhux biss żdiedu b'mod sinifikanti bżonn fiha, tissimplifika l-implimentazzjoni ta 'applikazzjonijiet bħala settijiet ta' mikroservizzi multilingwi, iżda wkoll imnaqqsa b'mod sinifikanti spejjeż għat-tħaddim tagħha billi tipprovdi mekkaniżmi għall-iskjerament u ż-żamma ta' parks ta' prokura sidecar.

Għaliex hemm tant diskors dwar il-malji tas-servizz?

Twissija: F'din it-taqsima, nirrikorri għal kull xorta ta' suppożizzjonijiet, konġetturi, fabbrikazzjonijiet u informazzjoni minn ġewwa.

It-tfittxija għal "malji tas-servizz" se tirriżulta mazz ta 'kontenut riċiklat, ta' kaloriji baxxi, proġetti fard, u kalejdoskopju ta 'distorsjoni denja ta' kamra tal-eku. Kwalunkwe teknoloġija ġdida trendy għandha dan, iżda fil-każ tal-malji tas-servizz, il-problema hija speċjalment akuta. Għaliex?

Ukoll, huwa parzjalment tort tiegħi. Għamilt l-almu tiegħi biex nippromwovi Linkerd u l-malja tas-servizz f’kull opportunità, permezz ta’ għadd ta’ blogs u artikli bħal dan. Imma jien mhux daqshekk qawwi. Biex verament inwieġbu din il-mistoqsija, irridu nitkellmu ftit dwar is-sitwazzjoni ġenerali. U huwa impossibbli li titkellem dwarha mingħajr ma ssemmi proġett wieħed: Istio hija xibka ta 'servizz ta' sors miftuħ żviluppat b'mod konġunt minn Google, IBM u Lyft.

(Dawk it-tliet kumpaniji għandhom rwoli differenti ħafna: L-involviment ta' Lyft jidher li huwa limitat għall-isem biss; huma awturi ta' Envoy iżda ma jużawx jew huma involuti fl-iżvilupp ta' Istio. IBM hija involuta fl-iżvilupp ta' Istio u tużaha. Google hija ħafna involut fl-iżvilupp ta 'Istio, iżda sa fejn nista' ngħid, fil-fatt ma jużahx.)

Il-proġett Istio huwa notevoli għal żewġ affarijiet. L-ewwelnett, huwa l-isforz kbir ta 'kummerċjalizzazzjoni li Google, b'mod partikolari, tpoġġi fil-promozzjoni tagħha. Nistma li ħafna nies bħalissa konxji tal-kunċett tal-malji tas-servizz l-ewwel tgħallmu dwaru grazzi għal Istio. It-tieni karatteristika hija kemm Istio ġie milqugħ ħażin. F'din il-kwistjoni, jien, ovvjament, jien parti interessata, imma nipprova nibqa' kemm jista' jkun oġġettiv, xorta ma nistax ma ma nistaxx marka ħafna negattiv attitudni, mhux speċifiku ħafna (għalkemm mhux uniku: tiġi f'moħħna systemd, paragun twettqet diġà ripetutament...) għal proġett Open Source.

(Fil-prattika, Istio jidher li għandu problemi mhux biss bil-kumplessità u l-UX, iżda wkoll bil-prestazzjoni. Per eżempju, waqt Evalwazzjonijiet tal-prestazzjoni Linkerdimmexxija minn parti terza, esperti sabu sitwazzjonijiet li fihom il-latency ta’ Istio kienet 100 darba ogħla minn dik ta’ Linkerd, kif ukoll sitwazzjonijiet b’nuqqas ta’ riżorsi, meta Linkerd kompla jiffunzjona b’suċċess, u Istio waqaf kompletament jaħdem.)

Inħalli fil-ġenb it-teoriji tiegħi dwar għaliex ġara dan, nemmen li l-hype off-scale madwar il-malja tas-servizz huwa dovut għall-involviment ta 'Google. Jiġifieri, taħlita tat-tliet fatturi li ġejjin:

  1. promozzjoni ossessiva ta' Istio minn Google;
  2. attitudni xierqa ta' diżapprovazzjoni u kritika lejn il-proġett;
  3. il-popolarità reċenti ta 'Kubernetes li qed tiżdied, li l-memorja tagħha għadha friska.

Flimkien, dawn il-fatturi jingħaqdu f’tip ta’ ambjent anossiku li jsakkar li fih il-kapaċità ta’ ġudizzju razzjonali tonqos, u jħallu biss varjetà stramba ta’ tulipani manija.

Mill-perspettiva ta' Linkerd, dan huwa... Jien niddeskriviha bħala barka mħallta. Jiġifieri, huwa kbir li l-malja tas-servizz daħlet fil-mainstream - li ma kienx il-każ fl-2016 meta Linkerd deher għall-ewwel darba u kien verament diffiċli li tiġbed l-attenzjoni tan-nies fuq il-proġett. Issa m'hemm l-ebda problema bħal din! Iżda l-aħbar ħażina hija li s-sitwazzjoni tal-malji tas-servizz hija tant konfuża llum li huwa kważi impossibbli li wieħed jifhem liema proġetti verament jappartjenu fil-kategorija tal-malji tas-servizz (aħseb u ara liema waħda hija l-aħjar għal każ ta 'użu partikolari). Dan ċertament ifixkel lil kulħadd (u żgur f'xi każijiet Istio jew proġett ieħor huwa aħjar minn Linkerd, peress li dan tal-aħħar mhuwiex soluzzjoni waħda għal kulħadd).

Min-naħa ta 'Linkerd, l-istrateġija tagħna kienet li ninjoraw l-istorbju, nibqgħu niffukaw fuq is-soluzzjoni tal-problemi reali fil-komunità, u essenzjalment nistennew li l-hype jintefa. Eventwalment il-hype se jonqos u nistgħu nkomplu naħdmu fil-paċi.

Sa dakinhar, ilkoll ikollna nkunu paċenzjużi.

Il-malja tas-servizz se tkun utli għalija, inġinier modest tas-softwer?

Il-kwestjonarju li ġej jgħin biex iwieġeb din il-mistoqsija:

Inti tittratta esklussivament l-implimentazzjoni tal-loġika tan-negozju? F'dan il-każ, il-malja tas-servizz mhux se tkun utli għalik. Jiġifieri, ovvjament, tista 'tkun interessat fiha, iżda idealment, il-malja tas-servizz m'għandhiex taffettwa direttament xejn fl-ambjent tiegħek. Kompli aħdem fuq dak li titħallas għalih.

Inti żżomm pjattaforma f'kumpanija li tuża Kubernetes? Iva, f'dan il-każ għandek bżonn ta 'malji ta' servizz (naturalment, jekk m'intix qed tuża K8s biss biex tmexxi monolith jew ipproċessar ta 'lott - iżda mbagħad nixtieq nistaqsi għaliex għandek bżonn K8s). Ħafna probabbli, issib ruħek f'sitwazzjoni b'ħafna mikroservizzi miktuba minn nies differenti. Kollha jinteraġixxu ma 'xulxin u huma marbuta fi taħbil ta' dipendenzi runtime, u għandek bżonn issib mod kif tittratta dan kollu. L-użu ta 'Kubernetes jippermettilek li tagħżel xibka ta' servizz "għalik innifsek". Biex tagħmel dan, iffamiljarizza ruħek mal-kapaċitajiet u l-karatteristiċi tagħhom u wieġeb il-mistoqsija dwar jekk xi wieħed mill-proġetti disponibbli jaqbillekx (nirrakkomanda li tibda r-riċerka tiegħek ma 'Linerd).

Qed tmexxi pjattaforma għal kumpanija li MHUX tuża Kubernetes iżda tuża mikroservizzi? F'dan il-każ, il-malja tas-servizz tkun utli għalik, iżda l-użu tagħha mhux trivjali. Naturalment tista’ jimitaw servizz malji billi jospita mazz ta 'prokuri, iżda vantaġġ importanti ta' Kubernetes huwa preċiżament il-mudell ta 'skjerament: iż-żamma manwalment ta' dawn il-prokuri se teħtieġ ħafna aktar ħin, sforz u spiża.

Int responsabbli mill-pjattaforma f'kumpanija li taħdem ma 'monoliths? F'dan il-każ, inti probabilment m'għandekx bżonn ta 'malji ta' servizz. Jekk qed taħdem ma 'monoliths (jew anke kollezzjonijiet ta' monoliths) li għandhom mudelli ta 'interazzjoni definiti tajjeb u li rari jinbidlu, allura l-malja tas-servizz ftit li xejn toffrilek. Allura tista' tinjoraha u tittama li tisparixxi bħal ħolma ħażina...

Konklużjoni

Probabbilment, il-malji tas-servizz xorta m'għandhomx jissejħu "l-aktar teknoloġija hyped fid-dinja" - dan l-unur dubjuż probabbilment jappartjeni għal bitcoin jew AI. Forsi hi fl-ewwel ħamsa. Imma jekk tkisser is-saffi tal-istorbju u d-din, jidher ċar li l-malji tas-servizz iġibu benefiċċji reali għal dawk li joħolqu applikazzjonijiet f'Kubernetes.

Nixtieq li tipprova Linkerd - tinstallah fi cluster Kubernetes (jew saħansitra Minikube fuq laptop) jieħu madwar 60 sekondau tista’ tara għalik innifsek dak li qed nitkellem.

FAQ

- Jekk ninjora l-malji tas-servizz, se tisparixxi?
- Irrid niddiżappuntak: il-malja tas-servizz hija magħna għal żmien twil.

— Imma MA RIDIX nuża xibka tas-servizz!
- Ukoll, mhuwiex meħtieġ! Aqra biss il-kwestjonarju tiegħi hawn fuq biex tara jekk għandekx għall-inqas tiffamiljarizza ruħek mal-punti bażiċi tiegħu.

— Mhuwiex tajjeb ESB/middleware antik bi zalza ġdida?
- Il-malja tas-servizz tittratta loġika operattiva, mhux semantika. Dan kien l-iżvantaġġ ewlieni xarabank tas-servizz tal-intrapriża (ESB). Iż-żamma ta 'din is-separazzjoni tgħin lill-malja tas-servizz tevita l-istess destin.

- Kif hija differenti xibka tas-servizz mill-gateways tal-API?
Hemm miljun artiklu dwar dan is-suġġett. Biss google.

L-Envoy huwa xibka tas-servizz?
- Le, Envoy mhix xibka tas-servizz, hija server prokura. Jista 'jintuża biex jorganizza xibka ta' servizz (u ħafna aktar - huwa prokura ta 'skop ġenerali). Iżda minnu nnifsu, mhuwiex malji tas-servizz.

- Network Service Mesh - huwa malji tas-servizz?
- Le. Minkejja l-isem, din mhix malja tas-servizz (kif tħobb il-meravilji tal-marketing?).

- Il-malja tas-servizz se tgħin fis-sistema asinkronika reattiva tiegħi bbażata fuq kju tal-messaġġi?
- Le, il-malji tas-servizz mhux se jgħinek.

- Liema malji tas-servizz għandi nuża?
- Linkerd, ebda brainer.

- L-artiklu sucks! / L-awtur - fuq is-sapun!
— Jekk jogħġbok aqsam il-link magħha mal-ħbieb tiegħek kollha sabiex ikunu jistgħu jkunu konvinti minn dan!

Rikonoxximenti

Kif tista' taħsbu mit-titlu, dan l-artikolu kien ispirat mit-trattat meraviljuż ta' Jay Kreps "Il-Logg: Dak li kull inġinier tas-softwer għandu jkun jaf dwar l-astrazzjoni li tgħaqqad id-dejta f'ħin reali". Iltqajt ma’ Jay għaxar snin ilu waqt li kont qed nagħmel intervista fuq Linked In u minn dakinhar kien ta’ ispirazzjoni għalija.

Filwaqt li nħobb insejjaħ lili nnifsi "iżviluppatur Linkerd", ir-realtà hija li jien aktar manutenzjoni tal-fajl README.md fi proġett. Naħdmu fuq Linkerd illum ħafna, ħafna, ħafna много nies, u dan il-proġett ma kienx ikun possibbli mingħajr il-komunità aqwa ta 'kontributuri u utenti.

U fl-aħħarnett, grazzi speċjali lill-kreatur ta' Linkerd, Oliver Gould (primus inter pares), li, flimkien miegħi ħafna snin ilu, għaddas rasu f’dan it-taħwid kollu mal-malja tas-servizz.

PS minn traduttur

Aqra wkoll fuq il-blog tagħna:

Sors: www.habr.com