3.16 Lango la API na mesh ya huduma
Muhtasari na msukumo
Mara unapogawanya programu moja kuwa huduma nyingi, swali jipya linaibuka: nani anasimamia trafiki kati yake, na trafiki inayoingia kutoka nje? Unaweza kulijibu vibaya kwa kutawanya masuala yale yale (uthibitishaji, majaribio ya kurudia, muda wa kuisha, vikomo vya kasi, kumbukumbu) kwenye kila huduma kwa mkono, au unaweza kulijibu vizuri kwa kusukuma masuala hayo kwenye safu ya pamoja ambayo kila huduma inairithi bure. Sura hii inahusu safu mbili kama hizo. Lango la API liko kwenye mlango wa mbele na husimamia trafiki inayoingia kutoka kwa wateja. Mesh ya huduma iko kati ya huduma zako na husimamia trafiki inayotiririka kati yake. Zinatatua matatizo yanayohusiana mahali tofauti, na kuzichanganya ni kosa la kawaida na ghali.
Tasnia hutaja pande mbili za trafiki kwa mfano wa dira. Trafiki ya kaskazini-kusini ni trafiki inayovuka mpaka wa mfumo wako: programu ya simu, kivinjari, au mshirika anayeita kutoka nje. Trafiki ya mashariki-magharibi ni trafiki inayobaki ndani ya mfumo wako: huduma A ikiita huduma B ikiita huduma C kutimiza ombi moja. Lango la API ni mtaalamu wa kaskazini-kusini. Mesh ya huduma ni mtaalamu wa mashariki-magharibi. Kuweka tofauti hiyo kali ndilo wazo moja lenye manufaa zaidi katika sura hii, kwa sababu linakuambia zana ipi inamiliki sera ipi, na linakuzuia kufanya kazi ileile mara mbili.
Kwa timu kubwa, safu hizi ndizo jinsi unavyotekeleza sera mara moja badala ya mara mia. Uthibitishaji, usimbaji fiche wakati wa kusafiri, na kikomo cha kasi vinapoishi kwenye safu ya pamoja, marekebisho ya usalama husafirishwa kwa kila huduma siku unaposambaza safu hiyo, badala ya kusubiri backlog mia. Katika mazingira ya mashirika makubwa na serikali, kuweka kati huko mara nyingi ndiyo hoja: wakaguzi wanataka mahali pamoja, panapoweza kuthibitishwa ambapo ufikiaji unakaguliwa na trafiki inasimbwa, na lango au mesh ya pamoja linawapa hasa nukta hiyo ya kutekeleza sera. Sura hii inajengwa juu ya mitindo ya usanifu ya sura ya 3.2, hali halisi za mifumo iliyosambazwa za sura ya 3.3, na misingi ya mitandao ya sura ya 3.13, na kuzigeuza kuwa mwongozo madhubuti kuhusu nani anashughulikia trafiki yako.
Kanuni kuu
- Tenganisha kaskazini-kusini (lango) na mashariki-magharibi (mesh); acha kila moja imiliki upande wake.
- Sukuma masuala ya kuvuka sehemu kwenye safu ya pamoja ili uyaandike mara moja, si kwa kila huduma.
- Pokea mesh ya huduma tu pale idadi ya huduma inafanya kuunganisha kwa kila huduma kuwa gharama kubwa zaidi.
- Fafanua nukta moja ya kutekeleza sera kwa kila suala; kamwe usiruhusu lango na mesh vyote kufanya kazi ileile.
- Weka huduma nyembamba: jukwaa linashughulikia usafirishaji, huduma inashughulikia mantiki ya biashara.
- Pendelea mitandao ya uaminifu-sifuri inayotegemea utambulisho kuliko uaminifu unaotegemea mahali pa mtandao.
- Nunua ugumu wa uendeshaji wa mesh ukiwa na macho wazi, na upime kama unalipa.
Mapendekezo
Elewa lango la API linafanya nini
Lango la API ni nukta moja ya kuingia iliyo mbele ya huduma zako na kusuluhisha kila ombi kutoka ulimwengu wa nje. Kwa urahisi zaidi ni wakala wa kinyume mwerevu (seva inayopokea maombi ya mteja na kuyapeleka kwa sehemu ya nyuma sahihi), lakini lango linastahili jina lake kwa kufanya zaidi sana ya kupeleka. Linaelekeza kila ombi kwa huduma sahihi kulingana na njia, mwenyeji, au vichwa. Linathibitisha mpigaji (kukagua ni nani) na kuidhinisha ombi (kukagua anaweza kufanya nini), ili huduma iliyo nyuma yake iweze kuamini kwamba ombi tayari limepita mlango wa mbele. Linatekeleza kikomo cha kasi (kupunguza maombi kwa kila mteja kwa muda) na mgawo (kupunguza jumla ya matumizi kwa dirisha refu) ili mteja mmoja mwenye kelele au mnyanyasaji asiwanyime wengine.
Lango pia huunda upya trafiki. Mabadiliko ya ombi huandika upya vichwa, hutafsiri kati ya itifaki, au hurekebisha umbo la mteja wa zamani kwa matarajio ya huduma mpya. Uunganishaji wa API huruhusu lango kutawanya ombi moja linaloingia kwa huduma kadhaa na kuunganisha majibu yao kuwa moja, ili mteja afanye wito mmoja badala ya sita. Msaada wa matoleo hukuruhusu kuendesha v1 na v2 za API kando kwa kando na kuelekeza kila mteja kwenye toleo analotarajia, ukinunua nafasi ya kubadilika bila kuvunja yeyote. Kuweka masuala haya kati ukingoni huweka huduma zako zikilenga mantiki ya biashara na kukupa mahali pamoja pa kuona, kulinda, na kudhibiti kila kinachoingia. Usanifu wa API ambazo lango linaziwakilisha ni mada ya sura ya 2.3, na ukaguzi wa utambulisho linaofanya unatokana na sura ya 4.7.
Tumia muundo wa backend-for-frontend kwa wateja wanaotofautiana
API moja ya matumizi ya jumla mara nyingi huhudumia programu ya wavuti, programu ya simu, na uunganishaji wa washirika kwa wakati mmoja, na huwahudumia wote vibaya kidogo. Mteja wa simu anataka mizigo midogo na safari chache za kwenda-na-kurudi kwa sababu upana wa bendi na betri ni adimu; mteja wa wavuti anaweza kushughulikia majibu yanayozungumza zaidi, tajiri zaidi; mshirika anataka mkataba thabiti usiomshangaza kamwe. Muundo wa backend for frontend (BFF) unatatua mvutano huu kwa kumpa kila darasa la mteja lango lake jembamba, lililoundwa kwa mahitaji ya mteja huyo, likikaa mbele ya huduma za pamoja zilizo nyuma.
BFF ni lango lenye hadhira nyembamba zaidi. BFF ya simu huunganisha na kupunguza majibu ili programu ifanye wito mmoja wenye ufanisi; BFF ya wavuti hufichua umbo kamili zaidi; BFF ya mshirika inashikilia mkataba unaosonga polepole, wenye matoleo kwa uangalifu. Kila timu inaweza kubadilisha BFF yake bila kusubiri nyingine, ambayo mara nyingi ndiyo ushindi halisi, kwa sababu inatenganisha timu za wateja kutoka kwa kila mmoja. Gharama ni sehemu zaidi zinazosonga na mantiki fulani iliyorudiwa kuvuka BFF, kwa hiyo hifadhi muundo huu kwa visa ambapo mahitaji ya wateja yanatofautiana kweli. Kila mteja anapotaka kitu kilekile, lango moja ni rahisi na bora zaidi.
Elewa mesh ya huduma inafanya nini
Mesh ya huduma husimamia trafiki ya mashariki-magharibi kati ya huduma zako, na hufanya hivyo bila kuomba huduma hizo kubadilisha msimbo wake. Mesh ya kawaida hufanya kazi kwa kusambaza wakala wa sidecar (mchakato mdogo wa wakala unaoendesha kando ya kila tukio la huduma na kukatiza trafiki yake yote ya mtandao). Huduma yako inadhani inazungumza moja kwa moja na huduma nyingine; kwa kweli inazungumza na sidecar yake ya ndani, ambayo inashughulikia wito halisi wa mtandao. Kwa sababu kila ombi sasa linapita kwa wakala ambao jukwaa linaudhibiti, mesh inaweza kutekeleza tabia kwa usawa kuvuka kila huduma, katika kila lugha, bila maktaba ya pamoja ya kuweka sawa.
Inatekeleza nini? Kwanza, TLS ya pande zote (mTLS), ambapo pande zote mbili za kila muunganisho zinawasilisha vyeti na kusimba trafiki, kwa hiyo miito ya huduma-hadi-huduma inathibitishwa na ni ya faragha kwa chaguo-msingi. Pili, usimamizi wa trafiki: mesh inaweza kuhamisha asilimia ndogo ya trafiki kwenda toleo jipya kwa toleo la canary, kugawanya trafiki kwa kichwa kwa majaribio, au kuakisi trafiki kwa huduma ya kivuli. Tatu, ustahimilivu: majaribio ya kurudia, muda wa kuisha, na kuvunja mzunguko (mifumo ya sura ya 2.20) vinavyotumika kwenye safu ya jukwaa, vilivyosanidiwa kwa sera badala ya kuwekwa kwenye msimbo wa kila huduma. Nne, uonekanaji: kwa sababu kila ombi linapita kwa wakala, mesh hutoa vipimo, kumbukumbu, na ufuatiliaji uliosambazwa thabiti kwa trafiki yote ya huduma-hadi-huduma, ikilisha mazoea ya uonekanaji ya sura ya 9.2. Mwandishi wa huduma haandiki chochote kati ya hivi na anapata vyote.
Jua muundo wa sidecar na mbadala zisizo na sidecar
Mfano wa sidecar ni wa kupendeza lakini si bure. Kila tukio la huduma sasa linaendesha kontena ya ziada ya wakala inayotumia kumbukumbu na CPU, na kila wito unafanya miruko miwili ya ziada ya mtandao (ndani ya sidecar ya ndani na nje ya ile ya mbali), ukiongeza ucheleweshaji kidogo. Kwa huduma chache mzigo huu hauonekani; kuvuka maelfu ya pods unakuwa mstari halisi kwenye bili yako ya kokotoo na bajeti yako ya ucheleweshaji. Gharama hiyo imeendesha wimbi la mbinu zisizo na sidecar, au zisizo na wakala.
Mwelekeo mbili ni muhimu. Mmoja huhamisha kazi za mesh kutoka sidecar ya kila pod kwenda wakala wa kila nodi, ili huduma nyingi kwenye mashine ileile zishiriki wakala mmoja badala ya kila moja kuendesha yake; hii inabadilisha kutenga kidogo kwa kushuka kwa kiasi kikubwa kwa mzigo. Mwingine, mbinu isiyo na wakala, huweka mantiki ya mesh moja kwa moja ndani ya huduma kupitia maktaba nyembamba au wakati-wa-kuendesha, ukiondoa miruko ya ziada kabisa kwa gharama ya utegemezi wa kila lugha. Maendeleo mapya zaidi husukuma baadhi ya kazi za mesh ndani ya kiini cha mfumo wa uendeshaji kwa kutumia eBPF (teknolojia ya kuendesha programu zilizowekwa kwenye sanduku ndani ya kiini cha Linux), ambayo inaweza kutekeleza sera na kukusanya telemetri kwa mzigo mdogo kuliko wakala wa nafasi ya mtumiaji. Huhitaji kubashiri mshindi mmoja leo. Unahitaji kujua kodi ya sidecar ni halisi, kwamba mbadala zipo, na kwamba uchaguzi wa jukwaa lako haupaswi kukufungia nje ya kuzipokea baadaye. Mifumo hii inakaa kwenye msingi wa uratibu wa kontena wa sura ya 8.3.
Amua lini mesh inastahili ugumu wake
Mesh ya huduma ina nguvu na ni ngumu kweli kuiendesha. Inaongeza ndege ya udhibiti ya kuendesha, mawakala ya kusasisha, vyeti vya kuzungusha, na safu mpya ya kutatua ombi linapopotea. Ugumu huo unastahili kununuliwa pale una huduma za kutosha kwamba kuunganisha masuala haya kwa mkono, kwa kila huduma na lugha, kunagharimu zaidi ya kuendesha mesh. Ishara ya takriban ni ukubwa na utofauti wa lugha: huduma makumi au mamia, zilizoandikwa kwa lugha kadhaa, ambapo maktaba ya pamoja ya mTLS na majaribio ya kurudia ingekuwa ndoto mbaya kuiweka thabiti. Kwa ukubwa huo, mesh hujilipa kwa usawa na usalama unaothibitishika.
Mesh haistahili ugumu wake pale una huduma chache, lugha moja, au timu ndogo. Kwa mfumo wa wastani, maktaba nzuri au mfumo wa kazi unaweza kukupa mTLS, majaribio ya kurudia, na vipimo kwa mzigo mdogo zaidi sana wa uendeshaji kuliko mesh kamili, na lango la kawaida pamoja na maktaba za mteja zenye busara mara nyingi hufunika kila unachohitaji. Kupokea mesh kwa sababu ni ya mtindo, kabla ukubwa wako haujadai, ni njia ya kawaida ya kutumia mwaka kuendesha miundombinu inayotatua tatizo ambalo huna. Anza na lango, ongeza mifumo ya ustahimilivu kwenye msimbo au maktaba, na ufikie mesh pale idadi ya huduma na lugha inafanya mbinu ya kila huduma kuwa ghali zaidi. Hii ni nidhamu ileile ya “je, inastahili ugumu wake” ambayo sura za wingu na mifumo iliyosambazwa (3.11 na 3.3) zinarudi kwayo mara kwa mara.
Epuka kushughulikia mara mbili pale lango na mesh vinapoingiliana
Malango na mesh huingiliana, na mwingiliano ndipo timu hujiumiza. Vyote vinaweza kufanya majaribio ya kurudia, vyote vinaweza kutekeleza muda wa kuisha, vyote vinaweza kukagua utambulisho, vyote vinaweza kukusanya telemetri. Lango likijaribu upya ombi mara tatu na mesh pia ikaijaribu mara tatu kwenye kila hatua ya ndani, jaribio moja la mteja linaweza kulipuka kuwa miito kadhaa ya sehemu ya nyuma na kugeuza hitilafu ndogo kuwa mkanyagano wa kujaribu upya. Safu zote mbili zikitekeleza muda wa kuisha na wa ndani ukiwa mrefu kuliko wa nje, wa nje unakata tamaa huku wa ndani ukiendelea kufanya kazi, ukipoteza juhudi kwa jibu ambalo hakuna atakayelisoma.
Suluhisho ni mgawanyo wazi wa kazi ulioandikwa na kukubaliwa. Gawia kila suala kwa safu moja hasa. Lango linamiliki masuala ya kaskazini-kusini: uthibitishaji wa mtumiaji wa mwisho, vikomo vya kasi vya nje na mgawo, mabadiliko ya ombi, na uunganishaji wa API kwa wateja. Mesh inamiliki masuala ya mashariki-magharibi: mTLS ya huduma-hadi-huduma, majaribio ya ndani ya kurudia na kuvunja mzunguko, na kuhamisha trafiki kati ya matoleo ya huduma. Pale suala lingeweza kuishi kwenye lolote, chagua mmiliki mmoja na uache safu nyingine ipitishe. Sanidi bajeti za majaribio ya kurudia na madaraja ya muda wa kuisha ili muda wa nje daima uwe mrefu kuliko kazi ya ndani inayosubiriwa. Lengo ni kwamba kila ombi lina mahali pamoja hasa pa kushughulikia kila suala, na hakuna ombi linalojaribiwa upya, kuthibitishwa, au kuandikwa mara mbili kwa bahati mbaya.
Chukulia lango na mesh kama nukta za kutekeleza sera kwa uaminifu-sifuri
Sababu ya kina zaidi ya kuendesha safu hizi ni usanifu wa usalama. Uaminifu-sifuri ni kanuni kwamba hakuna ombi linaloaminiwa kwa sababu ya lilikotoka; kila ombi lazima lithibitishe utambulisho wake na uidhinishaji wake, hata ndani ya mtandao wako mwenyewe. Mfano wa zamani uliamini chochote kilicho ndani ya mzunguko tayari, jambo lililomaanisha huduma moja iliyovunjwa inaweza kuzurura kwa uhuru. Uaminifu-sifuri hubadilisha uaminifu wa mahali pa mtandao na uaminifu unaotegemea utambulisho kwenye kila hatua, na malango na mesh ndizo nukta za asili za kutekeleza ambapo utambulisho huo unakaguliwa.
Lango ndilo nukta ya kutekeleza sera kwa utambulisho wa nje: linathibitisha mtumiaji wa mwisho au mshirika kabla ya chochote kufika huduma zako. Mesh ndiyo nukta ya kutekeleza sera kwa utambulisho wa mzigo wa kazi: kila huduma inapata utambulisho wa kriptografia, mTLS inauthibitisha kwenye kila wito, na sera huamua huduma zipi zinaweza kuzungumza na zipi. Pamoja zinakupa ulinzi wa kina, ambapo ombi linakaguliwa ukingoni na tena kati ya huduma, kwa hiyo kuathiriwa kwa huduma moja hakuipi ruhusa ya kusonga kwa uhuru kwenda zilizobaki. Katika usambazaji wa makundi mengi na kanda nyingi, mesh inaweza kupanua kitambaa hiki cha utambulisho kuvuka mipaka ya makundi, ili huduma katika kundi moja ijithibitishe kwa huduma katika jingine kwa hakikisho zilezile za mTLS inazotumia kwa ndani, ikikupa mitandao thabiti ya uaminifu-sifuri hata alama inavyosambaa. Misingi ya utambulisho hapa inaunganishwa moja kwa moja na sura ya 4.7.
Mabadilishano: faida na hasara
| Mbinu | Faida | Hasara |
|---|---|---|
| Lango la API | Mahali pamoja kwa uthibitishaji, vikomo vya kasi, uunganishaji, matoleo | Kizuizi kimoja cha kupanua na kuweka kinapatikana sana |
| Backend for frontend | Kila mteja anapata API iliyoundwa, inayobadilika kwa kujitegemea | Malango zaidi ya kuendesha; mantiki iliyorudiwa kuvuka BFF |
| Mesh ya huduma (sidecar) | mTLS sare, majaribio ya kurudia, uonekanaji bila badiliko la msimbo | Mzigo wa wakala, ucheleweshaji, na ndege ya udhibiti ya kuendesha |
| Mesh isiyo na sidecar / isiyo na wakala | Mzigo na ucheleweshaji wa chini kuliko sidecar za kila pod | Si ya kukomaa; kutenga dhaifu au utegemezi wa kila lugha |
| Ustahimilivu unaotegemea maktaba | Rahisi kuendesha; hakuna miundombinu ya ziada | Urudiaji wa kila lugha; ngumu kuweka thabiti kwa ukubwa |
| Mesh kuvuka makundi | Utambulisho thabiti wa uaminifu-sifuri kila mahali | Ugumu mkubwa wa uendeshaji na mitandao |
Mvutano wa msingi ni usawa dhidi ya gharama ya uendeshaji. Safu ya pamoja inakununulia uthabiti, usalama unaothibitishika, na sera unayoiandika mara moja, lakini ni mfumo halisi unaopaswa kuuendesha, kuupanua, kuulinda, na kuutatua, na unajiingiza kwenye njia ya kila ombi. Suluhisha mvutano kwa ukubwa na hitaji. Lango karibu daima hulipa mara tu unapokuwa na wateja wa nje, kwa sababu masuala linayoyaweka kati ni yale usiyoweza kuyaepuka. Mesh hulipa baadaye, idadi ya huduma na lugha inapofanya kuunganisha kwa kila huduma kuwa njia ghali zaidi. Chini ya kizingiti hicho, maktaba na lango la kawaida vinakupa faida nyingi kwa sehemu ndogo ya gharama. Juu yake, usawa wa mesh unastahili uzito wake. Kosa pande zote mbili ni kupokea kwa mtindo badala ya hitaji: mesh mapema mno ni mwaka wa kunyoa yak, na mesh iliyoruka kuchelewa mno ni utekelezaji mia wa mTLS usio thabiti, wa mkono.
Maswali ya kujadili na timu yako
Kwa kila suala la kuvuka sehemu (uthibitishaji, majaribio ya kurudia, muda wa kuisha, kikomo cha kasi, usimbaji fiche, telemetri), safu ipi moja inalimiliki, na kila mtu anaweza kutaja mmiliki bila kubahatisha? Hili ndilo swali linalozuia kushughulikia mara mbili, na timu nyingi hazijawahi kulijibu waziwazi, ikimaanisha jibu hutofautiana kwa huduma na kwa mwandishi. Leta orodha madhubuti ya masuala chini upande wa kushoto na safu zenu (maktaba ya mteja, lango, mesh, huduma binafsi) juu, na mjaze gridi pamoja. Mahali ambapo seli mbili zinakagua suala moja ni mikanyagano yenu ya kujaribu upya na ugeuzi wa muda wa kuisha unaosubiri kutokea. Safu tupu ni masuala ambayo hakuna anayeyashughulikia kabisa. Kinachotolewa ni jedwali moja lililokubaliwa, lililochapishwa mahali kila timu inaweza kuliona, linalosema safu moja hasa inamiliki kila suala na zingine zinapitisha. Jedwali hilo lina thamani zaidi ya usanidi wowote wa lango au mesh, kwa sababu ndilo linaloweka safu hizi mbili zisipigane.
Tuna huduma za kutosha na utofauti wa lugha kuhalalisha mesh ya huduma, au tunakaribia kununua ndege ya udhibiti kutatua tatizo ambalo hatuna? Mesh ni ahadi nzito ya uendeshaji, na jibu la uaminifu kwa timu nyingi ni kwamba maktaba nzuri pamoja na lango lingewahudumia vizuri zaidi leo. Leta idadi halisi ya huduma zenu, idadi ya lugha zilizoandikwa, na tathmini ya uaminifu ya mantiki ya mitandao iliyorudiwa inavyowaumiza sasa hivi. Kisha leta upande mwingine: nani ataendesha mesh, kusasisha mawakala yake, kuzungusha vyeti vyake, na kupigiwa simu inapoelekeza ombi vibaya. Maumivu ya kuunganisha kwa kila huduma yakiwa madogo kuliko gharama ya kuendesha mesh, una jibu lako, nalo ni kusubiri. Mkizama katika mTLS na msimbo wa kujaribu upya usio thabiti kuvuka huduma kadhaa za lugha nyingi, mesh inastahili nafasi yake. Hoja ni kuamua kwa ushahidi, si kwa jinsi mazungumzo ya mkutano yalivyofanya mesh ionekane.
Mpaka wetu wa uaminifu-sifuri uko wapi leo, na nini kinatokea huduma moja ya ndani ikiathiriwa? Mifumo mingi bado inaamini chochote kilicho ndani ya mtandao, ikimaanisha huduma moja iliyovunjwa inaweza kusonga kando na kufikia kila kitu kingine, na timu mara nyingi hugundua hili wakati wa tukio tu. Pitia eneo la mlipuko kwa uaminifu: mshambulizi akimiliki mojawapo ya huduma zenu, anaweza kuita nini, kusoma nini, na nini kinamzuia? Leta jibu lenu la sasa la jinsi miito ya huduma-hadi-huduma inavyothibitishwa na kusimbwa, na muwe mahususi ni miito ipi inalindwa na mTLS na ipi ni uaminifu wa maandishi wazi unaotegemea kuwa kwenye mtandao mmoja. Hatua inayofuata ni mpango wa makusudi wa ufikiaji unaotegemea utambulisho kwenye kila hatua, na lango likikagua utambulisho wa nje na mesh au sawa nayo ikikagua utambulisho wa mzigo wa kazi, ili kuathiriwa kuzuiwe badala ya kuwa maafa. Hata kama hamko tayari kuendesha mesh kamili, kutaja mahali mpaka wa uaminifu ulipo kweli ndiyo hatua ya kwanza ya uaminifu.
Ngazi yetu ya lango la API ikishindwa sasa hivi, kiasi gani cha mfumo kinazimika, na je, tumejaribu kushindwa huko badala ya kuliondoa kwa dhana? Lango linaweka kati mengi sana kwamba kukatika kwake kunaondoa kila kitu nyuma yake mtandaoni, na timu kubwa huelekea kuwekeza kidogo kwenye ziada yake hasa kwa sababu linafanya kazi kimyakimya hadi lisipofanya. Pima mivuto inayoshindana: lango moja rahisi ni rahisi kufikiria na nafuu kuendesha, wakati ngazi iliyopanuliwa kwa upana, ya maeneo mengi inagharimu zaidi na kuongeza usanidi wake wa kubadilisha na ugumu. Leta namba halisi kwenye mjadala, ikijumuisha matukio mangapi yanaendesha leo, kuvuka maeneo mangapi ya upatikanaji, muda wa kubadilisha ni upi, na lini mara ya mwisho mliendesha siku ya mchezo iliyoua lango kwa makusudi. Kwa majukwaa ya mashirika makubwa na serikali yanayobeba ahadi za muda wa kufanya kazi au viwango vya huduma vya kisheria, ongeza adhabu ya kimkataba au ya udhibiti kwa kukatika, kwa sababu mlango wa mbele usio na ziada ni hatari ya upatikanaji mliyokubali kimyakimya kwa niaba ya kila huduma na kila raia nyuma yake.
Tumepima kodi ya sidecar ambayo mesh yetu inatoza kweli, na je, tuna mpango wa mbadala zisizo na sidecar na eBPF, au tunailipa kipofu? Kwa ukubwa mzigo wa wakala wa kila pod katika kokotoo na ucheleweshaji huacha kuonekana na kuwa mstari halisi kwenye bajeti, hata hivyo timu nyingi huendesha maelfu ya sidecar bila kupima gharama kamwe. Mvutano ni kati ya ukomavu na kutenga kwa mfano wa sidecar upande mmoja na mzigo wa chini wa mawakala wa kila nodi, maktaba zisizo na wakala, au mbinu za eBPF za kiini upande mwingine, ambazo ni mpya zaidi na hubadilisha kutenga fulani au kuongeza utegemezi wa kila lugha. Leta takwimu zilizopimwa: kumbukumbu na CPU zinazotumiwa na mawakala kuvuka meli, ucheleweshaji wa mkia ulioongezwa kwa kila hatua, na sehemu gani ya bili yenu ya kokotoo mesh inawakilisha. Kwa shirika kubwa linaloendesha mesh kuvuka maelfu ya pods, au jukwaa la serikali chini ya uchunguzi wa bajeti, huu ni uamuzi wa matumizi ambao usimamizi hatimaye utauliza kuuhusu, kwa hiyo kujua kodi na kama uchaguzi wa jukwaa lenu unaweka mbadala za bei nafuu wazi ni bidii ya msingi.
Kila darasa la mteja linahitaji kweli backend for frontend yake, au tunakaribia kurudia mantiki kuvuka malango kwa wateja wanaotaka kitu kilekile? Muundo wa BFF hutenganisha timu za wateja na kila moja kubadilisha mkataba ulioundwa, lakini kila BFF mpya ni lango jingine la kuendesha, kulinda, na kuweka sawa, na mantiki iliyorudiwa kuvuka hizo kimyakimya inakuwa kodi ya matengenezo. Mazingatio yanayoshindana ni uhuru wa timu na ufanisi mahususi wa mteja dhidi ya gharama ya uendeshaji na kuteleza kwa malango mengi karibu yanayofanana. Leta ushahidi wa mahitaji ya wateja yanatofautiana kiasi gani kweli: ukubwa wa mizigo, idadi ya safari za kwenda-na-kurudi, mzunguko wa matoleo, na mara ngapi badiliko la mteja mmoja lingezuia lingine chini ya lango moja la pamoja. Katika shirika kubwa lenye timu nyingi za wateja, au jukwaa la serikali linalohudumia programu ya wavuti ya umma, programu ya simu, na uunganishaji wa washirika kwa wakati mmoja, swali la uaminifu ni kama tofauti inahalalisha kuongezeka, kwa sababu BFF kwa kila mteja wote wakitaka umbo lilelile ni mtawanyiko utakaoulipia matengenezo kwa miaka.
Mtazamo wa sekta
Kampuni changa. Safirisha lango la API na uruke mesh. Ukiwa na huduma chache na timu ndogo, lango moja linashughulikia uthibitishaji, vikomo vya kasi, na uunganishaji, wakati maktaba ya mteja ya pamoja inakupa mTLS na majaribio ya kurudia kwa sehemu ya gharama ya ndege ya udhibiti. Rasilimali yako adimu ni umakini wa kihandisi, kwa hiyo mesh usiyoweza kuiendesha ni dhima, si ngome. Weka lango liwe na ziada ya kutosha kunusurika nodi moja kufa, na utembelee tena mesh tu pale idadi ya huduma na utofauti wa lugha vinapolazimisha swali.
Biashara ndogo. Huna timu ya jukwaa ya kuendesha mesh, kwa hiyo egemea kile jukwaa lako la mwenyeji au bidhaa ya lango inachokupa tayari: TLS inayosimamiwa, kikomo cha kasi kilichojengwa ndani, na lango linalohifadhiwa badala ya lile unalolipachika mwenyewe. Weka uchaguzi kama kununua dhidi ya kujenga, na ununue, kwa sababu lango la API linalosimamiwa linagharimu kidogo kuliko saa za mhandisi za kuendesha lako mwenyewe. Chukulia usimbaji fiche wa huduma-hadi-huduma wa ndani kama kipengele ambacho jukwaa lako linatoa, si mradi unaoajiri.
Biashara kubwa. Ukiwa na mamia ya huduma kuvuka timu na lugha nyingi, mesh inastahili ugumu wake, na kazi halisi ni utawala: mgawanyo mmoja ulioandikwa wa kazi ili lango na mesh visishughulikie suala mara mbili kamwe, mTLS na telemetri sare, na timu ya jukwaa inayomiliki masasisho ya mawakala na kuzungusha vyeti. Wakaguzi wanataka nukta moja inayothibitishika ya kutekeleza ufikiaji na usimbaji fiche, kwa hiyo sawazisha kiolesura na ufanye sera kuwa kitu ambacho timu zinarithi badala ya kutekeleza upya. Simamia kodi ya sidecar kama mstari halisi wa bajeti, na uweke chaguo zisizo na sidecar wazi ili usifungiwe nje ya mbinu za bei nafuu baadaye.
Serikali. Kanuni za ununuzi, uwazi, na uwajibikaji wa umma huumba usanifu. Chukulia lango na mesh kama uti wa mgongo wa uaminifu-sifuri ambao wadhibiti wanatarajia: kila raia na mshirika anathibitishwa mlango wa mbele, kila wito wa ndani unathibitishwa na kusimbwa kwa utambulisho wa mzigo wa kazi, na njia ya ukaguzi kwenye kila nukta ya kutekeleza ikithibitisha ufikiaji ulikaguliwa wapi na trafiki ilisimbwa wapi. Pendelea viwango huria na usanidi unaohamishika kuliko kufungwa kwa umiliki ambako kanuni za ununuzi zinaweza kukataza, na uchapishe, pale panapofaa, jinsi jukwaa linavyolinda data ya raia inapovuka kila mpaka.
Mifano
Kampuni changa. Kampuni changa ya watu kumi na wawili inaendesha huduma nane nyuma ya lango moja la API. Lango linashughulikia kazi yote ya kaskazini-kusini: linathibitisha watumiaji kwa ukaguzi wa tokeni, linatekeleza vikomo vya kasi kwa kila mpango ili watumiaji wa ngazi ya bure wasizamishe mfumo, na linaunganisha vituo vichache vinavyozungumza sana kuwa miito moja rafiki kwa simu. Kwa trafiki ya mashariki-magharibi wanaruka kwa makusudi mesh ya huduma, kwa sababu huduma nane kwa lugha mbili hazihalalishi ndege ya udhibiti. Badala yake wanapata mTLS na majaribio ya kurudia kutoka maktaba ya mteja ya pamoja na usimamizi wa vyeti uliojengwa ndani ya jukwaa lao, na kukusanya ufuatiliaji kwa wakala mwepesi. Baadaye wanapoongeza mteja maalumu wa simu mwenye mahitaji makali ya mizigo, wanaleta backend for frontend ya simu kando ya lango lililopo la wavuti. Wanatembelea tena swali la mesh kila mwaka na kuendelea kuamua, kwa usahihi, kwamba bado hawajavuka kizingiti ambapo ingelipa.
Biashara kubwa. Benki ya kimataifa inaendesha mamia kadhaa ya huduma kuvuka timu na lugha nyingi, na hapa mesh ya huduma inastahili ugumu wake. Kila huduma inapata utambulisho wa mzigo wa kazi na mTLS kwa chaguo-msingi, kwa hiyo trafiki yote ya ndani inathibitishwa na kusimbwa bila timu yoyote kuandika msimbo wa kriptografia, jambo linaloridhisha shirika la usalama na wakaguzi wanaotaka nukta moja inayothibitishika ya kutekeleza. Mesh inatumia majaribio ya kurudia, muda wa kuisha, na kuvunja mzunguko sare kwa sera, na inahamisha trafiki hatua kwa hatua kwa matoleo ya canary ili usambazaji mbaya ugonge asilimia moja ya watumiaji kabla ya wote. Ngazi ya malango ya API inatangulia trafiki ya nje na ya washirika, ikimiliki uthibitishaji, mgawo, na matoleo, na kanuni thabiti iliyoandikwa kwamba majaribio ya ndani ya kurudia yanaishi kwenye mesh tu na vikomo vya nje vya kasi vinaishi kwenye malango tu, kwa hiyo safu hizi mbili hazishughulikii ombi mara mbili kamwe. Telemetri thabiti kutoka kila wakala inalisha jukwaa la uonekanaji la kati linalomruhusu mhandisi mmoja wa zamu kufuatilia ombi kuvuka miruko kadhaa ya huduma.
Serikali. Mamlaka ya kitaifa ya kodi inaboresha jukwaa la kuwasilisha linalomkabili raia na kuchukulia lango na mesh kama uti wa mgongo wa usanifu wa uaminifu-sifuri ambao wadhibiti wanahitaji. Lango la API ni mlango wa mbele unaodhibitiwa: kila raia na kila mshirika anathibitishwa na kuidhinishwa hapo, vikomo vya nje vya kasi vinalinda mfumo wakati wa kilele cha tarehe ya mwisho ya kuwasilisha, na miundo ya wateja wa zamani inabadilishwa ukingoni ili uunganishaji wa urithi uendelee kufanya kazi. Nyuma yake, mesh ya huduma inampa kila huduma ya ndani utambulisho wa kriptografia na kutekeleza mTLS kwenye kila wito, kwa hiyo hakuna huduma inayoaminiwa kwa kuwa ndani ya mtandao tu, na sera ya ufikiaji inaorodhesha waziwazi huduma zipi zinaweza kuita zipi. Kwa sababu jukwaa linavuka vituo kadhaa vya data kwa ustahimilivu, mesh inapanua hakikisho zilezile za utambulisho na usimbaji fiche kuvuka makundi, ikitoa mitandao thabiti ya uaminifu-sifuri nchi nzima. Kila nukta ya kutekeleza inatoa njia ya ukaguzi, kwa hiyo mamlaka inaweza kuthibitisha kwa vyombo vya usimamizi hasa mahali ufikiaji ulikaguliwa na mahali trafiki ilisimbwa.
Kesi ya biashara: sababu, ROI, na TCO
Malipo ya lango ni rahisi kuona na kwa kawaida ni makubwa. Badala ya kila huduma kutekeleza upya uthibitishaji, kikomo cha kasi, na uandishi wa kumbukumbu za ombi, unavijenga mara moja ukingoni na kila huduma inavirithi. Marekebisho ya usalama au sera mpya ya kikomo cha kasi husafirishwa kwa usambazaji mmoja badala ya mia, jambo linalofupisha muda wa kufunga udhaifu na kupunguza gharama ya kila ukaguzi, kwa sababu kuna mahali pamoja pa kukagua. Vipengele vya uunganishaji na matoleo hupunguza safari za kwenda-na-kurudi za wateja na kukuruhusu kubadilisha API bila kuvunja wapigaji, jambo linalopunguza gharama za ucheleweshaji na kodi ya uratibu kati ya timu. Kwa karibu mfumo wowote wenye wateja wa nje, lango hujilipa haraka.
Kesi ya biashara ya mesh ya huduma ni ya hila zaidi, kwa sababu jumla yake ya gharama ya umiliki ni halisi na inayoendelea. Unalipia kokotoo na ucheleweshaji wa mawakala, kwa wahandisi wanaoendesha ndege ya udhibiti, na kwa mkunjo wa kujifunza wa kutatua safu mpya. Gharama hiyo inahalalishwa pale mbadala (utekelezaji wa kila huduma, kila lugha wa mTLS, majaribio ya kurudia, na telemetri) ungekuwa mkubwa zaidi na, mbaya zaidi, usio thabiti kwa njia zinazounda mapengo ya usalama na kukatika. Kwa ukubwa wa juu mesh hubadilisha suluhisho mia dhaifu za mkono kuwa moja sare, inayothibitishika, na ROI inaonekana kama matukio machache ya usalama, usambazaji salama wa haraka zaidi kupitia kuhamisha trafiki, na uonekanaji bora zaidi sana. Chini ya ukubwa huo, hesabu ya uaminifu mara nyingi inapendelea maktaba na lango, na hatua ya nidhamu ni kusubiri. Ili kuweka kesi kwa uongozi, unganisha lango na vipimo wanavyofuatilia tayari (muda wa kurekebisha udhaifu, gharama ya ukaguzi, mzigo wa uratibu wa API) na unganisha mesh na kudhibiti matukio ya usalama, usalama wa usambazaji, na gharama ya urudiaji wa lugha nyingi inayoibadilisha.
Mifumo mibaya na mitego
- Mesh kabla ya kuihitaji: kupokea mesh kamili ya huduma kwa huduma chache, kununua ndege ya udhibiti kutatua tatizo ambalo bado huna.
- Majaribio mara mbili: lango na mesh vyote vinajaribu upya, kwa hiyo wito mmoja wa mteja unazidishwa kuwa mkanyagano wa kujaribu upya wa sehemu ya nyuma unaokuza kukatika.
- Ugeuzi wa muda wa kuisha: muda wa ndani mrefu kuliko wa nje, kwa hiyo mpigaji anakata tamaa huku mpigwaji akiendelea kufanya kazi kwa jibu ambalo hakuna atakayelisoma.
- Lango kama monolith: kujaza mantiki ya biashara kwenye lango hadi linakuwa kizuizi cha pamoja ambacho kila timu lazima iratibu kulibadilisha.
- Nukta moja ya kushindwa: kuendesha tukio moja la lango bila ziada, kwa hiyo mlango wa mbele ukishindwa unaangusha kila huduma nyuma yake.
- Kuamini mtandao: kuchukulia chochote ndani ya mzunguko kama salama, kwa hiyo huduma moja iliyoathirika inaweza kusonga kando na kufikia kila kitu.
- Umiliki unaoingiliana: hakuna mgawanyo ulioandikwa wa kazi, kwa hiyo suala lilelile linashughulikiwa kwenye safu zote mbili kwa bahati mbaya na hakuna anayejua ipi ina mamlaka.
- Kuongezeka kwa BFF: kuanzisha backend for frontend kwa kila mteja wakati wateja wanataka kitu kilekile, kuzidisha malango na kurudia mantiki bila faida.
- Kupuuza kodi ya sidecar: kusambaza maelfu ya sidecar bila kupima mzigo wa kokotoo na ucheleweshaji, kisha kushangaa bajeti ilienda wapi.
Kielelezo cha ukomavu
- Ngazi ya 1, Kuanzisha: Huduma zinazungumza moja kwa moja bila safu ya pamoja. Uthibitishaji, majaribio ya kurudia, na muda wa kuisha vimeandikwa kwa mkono kwa kila huduma na havina uthabiti. Trafiki ya ndani mara nyingi ni maandishi wazi na inaaminiwa kwa kuwa kwenye mtandao, na hakuna mahali pamoja pa kutekeleza sera au kuona trafiki. Maamuzi ni ya kuitikia, yanafanywa huduma kwa huduma matatizo yanapojitokeza.
- Ngazi ya 2, Kuendeleza: Lango la API linatangulia trafiki ya nje na kuweka kati uthibitishaji, kikomo cha kasi, na uelekezaji, lakini masuala ya mashariki-magharibi yanashughulikiwa na maktaba za pamoja zenye upokeaji usio sawa. Baadhi ya huduma zina mTLS; nyingi hazina. Timu zinatambua tofauti ya kaskazini-kusini na mashariki-magharibi, lakini umiliki si rasmi na mazoea hutofautiana timu hadi timu.
- Ngazi ya 3, Kusawazisha: Masuala ya kaskazini-kusini na mashariki-magharibi yametenganishwa kwa usafi na mgawanyo ulioandikwa wa kazi unaotumika kuvuka shirika. Lango linamiliki utambulisho wa nje, mgawo, na uunganishaji; mesh au safu thabiti ya maktaba inamiliki mTLS ya ndani, majaribio ya kurudia, na telemetri. Mwingiliano umetatuliwa ili hakuna suala linaloshughulikiwa mara mbili, trafiki ya ndani inasimbwa na kukaguliwa utambulisho kwa chaguo-msingi, na kiwango kimeandikwa na kutekelezwa badala ya kuachwa kwa hiari ya kila timu.
- Ngazi ya 4, Kusimamia: Safu ya trafiki inapimwa na kudhibitiwa dhidi ya vipimo vya msingi. Unafuatilia kodi ya sidecar katika kokotoo na ucheleweshaji wa mkia kwa kila hatua, upatikanaji wa lango na mesh dhidi ya bajeti za makosa, matukio ya ukuzaji wa majaribio ya kurudia na ugeuzi wa muda wa kuisha, ufikiaji wa mTLS kama asilimia ya miito ya ndani, na muda wa kusukuma badiliko la sera kuvuka meli. Vipimo vinadhibiti maamuzi: sasisho la wakala, bajeti mpya ya kujaribu upya, au kanuni ya canary inahukumiwa kwa data dhidi ya kipimo cha msingi badala ya hisia, na kuteleza kutoka kiwango kunachochea marekebisho.
- Ngazi ya 5, Kuratibu: Lango na mesh ni nukta za kutekeleza sera kwa usanifu uliokomaa wa uaminifu-sifuri, wenye utambulisho unaokaguliwa kwenye kila hatua kuvuka makundi na kanda. Kuhamisha trafiki kunaendesha utoaji salama wa hatua kwa hatua, uonekanaji ni sare na tajiri, na shirika linatathmini na kupokea mara kwa mara mbinu zisizo na sidecar, zisizo na wakala, na eBPF pale zinapolipa. Safu ya trafiki imeunganishwa na usalama, utoaji, na upangaji wa uwezo, na hujirekebisha ukubwa, lugha, na picha ya hatari vinapohama.
Mawazo ya kujadili
- Lango lenu moja la API likishindwa sasa hivi, huduma ngapi zingekosa kufikika, na mpango wenu wa kufanya mlango wa mbele uwe na ziada ni upi?
- Ni suala lipi katika mfumo wenu linashughulikiwa kwa sasa kwenye lango na kwenye huduma (au maktaba), na mngethibitishaje halishughulikiwi mara mbili?
- Kwa idadi gani ya huduma na lugha timu yenu ingekubaliana kuwa mesh hatimaye imestahili ugumu wake, na mko umbali gani kutoka mstari huo?
- Mshambulizi akiathiri huduma moja ya ndani kesho, huduma zipi nyingine angeweza kuzifikia, na ukaguzi gani wa utambulisho ungemzuia?
- Mbinu za mesh zisizo na sidecar au zinazotegemea eBPF zimekomaa vya kutosha kwa jukwaa lenu bado, na mngepima nini kuamua?
- Kila mmoja wa wateja wenu wanaotofautiana anahitaji kweli backend for frontend yake, au mnakaribia kurudia mantiki ambayo ingeweza kubaki ya pamoja?
Mambo muhimu ya kukumbuka
- Tenganisha trafiki ya kaskazini-kusini (inayoshughulikiwa na lango la API) na trafiki ya mashariki-magharibi (inayoshughulikiwa na mesh ya huduma); kila moja inamiliki upande wake, na kuzichanganya husababisha kushughulikia mara mbili.
- Lango huweka kati uelekezaji, uthibitishaji, uidhinishaji, kikomo cha kasi, mgawo, mabadiliko ya ombi, uunganishaji, na matoleo, ili huduma ziwe nyembamba na sera ikae mahali pamoja.
- Mesh ya huduma inakupa mTLS, kuhamisha trafiki, majaribio ya kurudia na kuvunja mzunguko ya kiwango cha jukwaa, na uonekanaji sare bila kubadilisha msimbo wa huduma, kwa kawaida kupitia mawakala wa sidecar.
- Pokea mesh tu pale idadi ya huduma na lugha inafanya kuunganisha kwa kila huduma kuwa njia ghali zaidi; chini ya hapo, maktaba pamoja na lango zinashinda, na kodi ya sidecar ni halisi vya kutosha kuitazama.
- Chukulia lango na mesh kama nukta za kutekeleza sera za usanifu wa uaminifu-sifuri, gawia kila suala la kuvuka sehemu kwa safu moja hasa, na ukague utambulisho kwenye kila hatua kuvuka makundi.
Marejeo na usomaji zaidi
- Sam Newman, Building Microservices: Designing Fine-Grained Systems
- Chris Richardson, Microservices Patterns: With Examples in Java
- Lee Calcote and Zack Butcher, Istio: Up and Running
- Ken Owens, Alois Reitbauer, and others; the CNCF Cloud Native Landscape and service mesh documentation
- Evan Gilman and Doug Barth, Zero Trust Networks: Building Secure Systems in Untrusted Networks
- Scott Rose, Oliver Borchert, Stu Mitchell, and Sean Connelly, Zero Trust Architecture, NIST Special Publication 800-207
- Susan Fowler, Production-Ready Microservices