3.16

View in English

3.16 API-gáttir og þjónustunet

Yfirlit og tilgangur

Um leið og þú skiptir einu forriti í margar þjónustur birtist ný spurning: hver stýrir umferðinni milli þeirra og umferðinni sem kemur að utan? Þú getur svarað henni illa með því að dreifa sömu áhyggjuefnum (auðkenningu, endurtekningum, tímamörkum, hraðatakmörkunum, skráningu) í höndunum inn í hverja þjónustu, eða svarað henni vel með því að ýta þessum áhyggjuefnum í sameiginlegt lag sem hver þjónusta erfir ókeypis. Þessi kafli fjallar um tvö slík lög. API-gátt situr við framdyrnar og stýrir umferð sem kemur frá biðlurum. Þjónustunet situr milli þjónusta þinna og stýrir umferðinni sem flæðir þeirra á milli. Þau leysa skyld vandamál á ólíkum stöðum og að rugla þeim saman eru algeng og dýr mistök.

Iðnaðurinn nefnir áttirnar tvær í umferð með áttavitalíkingu. Norður-suður umferð er umferðin sem fer yfir mörk kerfisins þíns: farsímaforrit, vafri eða samstarfsaðili sem kallar inn. Austur-vestur umferð er umferðin sem helst innan kerfisins: þjónusta A kallar á þjónustu B sem kallar á þjónustu C til að fullnægja einni beiðni. API-gátt er sérfræðingurinn í norður-suður. Þjónustunet er sérfræðingurinn í austur-vestur. Að halda þessum greinarmun skörpum er gagnlegasta hugmyndin í þessum kafla, því hún segir þér hvaða verkfæri á hvaða stefnu og kemur í veg fyrir að þú vinnir sama verk tvisvar.

Fyrir stór teymi eru þessi lög hvernig þú framfylgir stefnu einu sinni í stað hundrað sinnum. Þegar auðkenning, dulkóðun á ferð og hraðatakmörkun búa í sameiginlegu lagi fer öryggislagfæring til hverrar þjónustu daginn sem þú setur lagið upp, frekar en að bíða í hundrað verkefnalistum. Í fyrirtækja- og opinberu umhverfi er sú miðlæging oft tilgangurinn: endurskoðendur vilja einn, sannanlegan stað þar sem aðgangur er athugaður og umferð dulkóðuð, og sameiginleg gátt eða net gefur þeim nákvæmlega þann stefnuframfylgdarpunkt. Þessi kafli byggir á arkitektúrstílum kafla 3.2, raunveruleika dreifðra kerfa í kafla 3.3 og netgrunnatriðum kafla 3.13, og breytir þeim í áþreifanlega leiðsögn um hver meðhöndlar umferð þína.

Meginreglur

  • Aðgreindu norður-suður (gátt) frá austur-vestur (net). Láttu hvort eiga sína stefnu.
  • Ýttu þverlægum áhyggjuefnum í sameiginlegt lag svo þú skrifir þau einu sinni, ekki á hverja þjónustu.
  • Taktu upp þjónustunet aðeins þegar fjöldi þjónusta gerir lagnir á hverja þjónustu að stærri kostnaðinum.
  • Skilgreindu einn stefnuframfylgdarpunkt fyrir hvert áhyggjuefni. Láttu gátt og net aldrei bæði vinna sama verkið.
  • Haltu þjónustum þunnum: vettvangurinn sér um flutning, þjónustan um viðskiptarökfræði.
  • Kjóstu auðkennisbyggt, núlltraust netkerfi fram yfir traust byggt á netstaðsetningu.
  • Keyptu rekstrarflækju nets með opin augu og mældu hvort hún borgar sig.

Ráðleggingar

Skildu hvað API-gátt gerir

API-gátt er einn inngangspunktur sem situr fyrir framan þjónustur þínar og miðlar hverri beiðni frá umheiminum. Í einfaldasta formi er hún snjall öfugur milliþjónn (þjónn sem tekur við beiðnum biðlara og áframsendir þær á réttan bakenda), en gátt vinnur sér nafn sitt með því að gera miklu meira en að áframsenda. Hún leiðir hverja beiðni á rétta þjónustu eftir slóð, hýsli eða hausum. Hún auðkennir kallandann (staðfestir hver hann er) og heimilar beiðnina (athugar hvað hann má), svo þjónusta á bak við hana geti treyst að beiðni hafi þegar farið gegnum framdyrnar. Hún framfylgir hraðatakmörkun (að setja þak á beiðnir á biðlara yfir tíma) og kvótum (að setja þak á heildarnotkun yfir lengri glugga) svo einn hávær eða ágengur biðlari geti ekki svelt hina.

Gátt mótar líka umferð. Beiðnabreyting endurskrifar hausa, þýðir milli samskiptareglna eða aðlagar snið gamals biðlara að væntingum nýrrar þjónustu. API-samsetning lætur gáttina dreifa einni komandi beiðni á nokkrar þjónustur og sauma svör þeirra í eitt, svo biðlari geri eitt kall í stað sex. Útgáfustuðningur leyfir þér að keyra v1 og v2 af API hlið við hlið og leiða hvern biðlara á útgáfuna sem hann býst við, sem kaupir þér svigrúm til að þróast án þess að brjóta neinn. Að miðlægja þessi áhyggjuefni á jaðrinum heldur þjónustum þínum einbeittum að viðskiptarökfræði og gefur þér einn stað til að sjá, tryggja og hemja allt sem kemur inn. Hönnun API-anna sem gáttin stendur fyrir framan er efni kafla 2.3, og auðkennisathuganirnar sem hún framkvæmir byggja á kafla 4.7.

Notaðu bakenda-fyrir-framenda mynstrið fyrir ólíka biðlara

Eitt almennt API þjónar oft vefforriti, farsímaforriti og samstarfssamþættingum í einu og þjónar þeim öllum lítillega illa. Farsímabiðlarinn vill litlar hleðslur og fáar umferðarlotur því bandvídd og rafhlaða eru af skornum skammti. Vefbiðlarinn ræður við málglaðari, ríkari svör. Samstarfsaðilinn vill stöðugan samning sem kemur honum aldrei á óvart. Bakenda-fyrir-framenda (BFF) mynstrið leysir þessa spennu með því að gefa hverjum flokki biðlara sína eigin þunnu gátt, sniðna að þörfum þess biðlara, sem situr fyrir framan sameiginlegu þjónusturnar á bak við.

BFF er gátt með þrengri áheyrendahóp. Farsíma-BFF setur saman og snyrtir svör svo forritið geri eitt skilvirkt kall. Vef-BFF afhjúpar fyllra form. Samstarfs-BFF heldur hægfara, vandlega útgáfumerktum samningi. Hvert teymi getur þróað eigið BFF án þess að bíða eftir hinum, sem er oft raunverulegi ávinningurinn, því það aftengir biðlarateymi hvert frá öðru. Kostnaðurinn er fleiri hreyfanlegir hlutar og tvítekin rökfræði milli BFF, svo taktu mynstrið frá fyrir tilvik þar sem þarfir biðlara víkja raunverulega. Þegar allir biðlarar vilja það sama er ein gátt einfaldari og betri.

Skildu hvað þjónustunet gerir

Þjónustunet stýrir austur-vestur umferð milli þjónusta þinna og gerir það án þess að biðja þjónusturnar að breyta kóða sínum. Klassíska netið virkar með því að setja upp hliðarvagns milliþjón (lítið milliþjónsferli sem keyrir við hlið hvers þjónustutilviks og hlerar alla netumferð þess). Þjónustan þín heldur að hún tali beint við aðra þjónustu. Í raun talar hún við staðbundna hliðarvagn sinn, sem sér um raunverulega netkallið. Því hver beiðni flæðir nú gegnum milliþjón sem vettvangurinn stýrir getur netið framfylgt hegðun einsleitt yfir hverja þjónustu, á hverju máli, án sameiginlegs bókasafns til að halda samstilltu.

Hverju framfylgir það? Fyrst gagnkvæmu TLS (mTLS), þar sem báðar hliðar hverrar tengingar leggja fram skírteini og dulkóða umferðina, svo þjónustu-í-þjónustu köll eru auðkennd og einkamál sjálfgefið. Í öðru lagi umferðarstjórn: netið getur fært lítið hlutfall umferðar á nýja útgáfu fyrir kanarí-útgáfu, skipt umferð eftir haus til prófunar eða speglað umferð á skuggaþjónustu. Í þriðja lagi seiglu: endurtekningar, tímamörk og rofar (mynstrin úr kafla 2.20) beitt á vettvangslaginu, stillt með stefnu frekar en kóðað inn í hverja þjónustu. Í fjórða lagi sýnileika: því hver beiðni fer gegnum milliþjón gefur netið út samræmda mælikvarða, skrár og dreifða rekjun fyrir alla þjónustu-í-þjónustu umferð, sem nærir sýnileikavinnubrögð kafla 9.2. Þjónustuhöfundurinn skrifar ekkert af þessu og fær allt.

Þekktu hliðarvagnsmynstrið og hliðarvagnslausu valkostina

Hliðarvagnslíkanið er glæsilegt en ekki ókeypis. Hvert þjónustutilvik rekur nú aukamilliþjónsgám sem eyðir minni og örgjörva, og hvert kall bætir við tveimur aukanetstökkum (inn í staðbundna hliðarvagninn og út úr fjarlæga), sem bætir örlítilli töf. Við handfylli þjónusta er þessi aukakostnaður ósýnilegur. Yfir þúsundir pods verður hann raunveruleg lína í reikniaflsreikningnum og tafarfjárhagsáætluninni. Sá kostnaður hefur knúið bylgju hliðarvagnslausra, eða milliþjónslausra, nálgana.

Tvær stefnur skipta máli. Önnur færir netvirkni úr hliðarvagni á pod í milliþjón á hnút, svo margar þjónustur á sömu vél deili einum milliþjóni í stað þess að hver reki sinn eigin. Þetta skiptir einhverri einangrun fyrir mikla lækkun á aukakostnaði. Hin, milliþjónslausa nálgunin, innfellir rökfræði netsins beint í þjónustuna gegnum þunnt bókasafn eða keyrsluumhverfið, sem fjarlægir aukastökkin alveg á kostnað háðar á hvert mál. Nýrri þróun ýtir sumri netvirkni inn í stýrikerfiskjarnann með eBPF (tækni til að keyra sandkassað forrit inni í Linux-kjarnanum), sem getur framfylgt stefnu og safnað fjarmælingum með minni aukakostnaði en milliþjónn í notendarými. Þú þarft ekki að veðja á einn sigurvegara í dag. Þú þarft að vita að hliðarvagnsskatturinn er raunverulegur, að valkostir eru til og að vettvangsval þín ættu ekki að loka þig frá því að taka þá upp síðar. Þessi mynstur sitja á gámastýringargrunni kafla 8.3.

Ákveddu hvenær net vinnur sér inn flækju sína

Þjónustunet er öflugt og raunverulega flókið að reka. Það bætir við stjórnlagi til að reka, milliþjónum til að uppfæra, skírteinum til að skipta um og nýju lagi til að villuleita þegar beiðni hverfur. Þessi flækja er þess virði að kaupa þegar þú hefur nógu margar þjónustur að það að tengja þessi áhyggjuefni í höndunum, á hverja þjónustu og hvert mál, kostar meira en að reka netið. Grófa merkið er stærð og fjölmála fjölbreytni: tugir eða hundruð þjónusta, skrifaðar á nokkrum málum, þar sem sameiginlegt bókasafn fyrir mTLS og endurtekningar væri martröð að halda samræmdu. Í þeirri stærð borgar net sig í einsleitni og sannanlegu öryggi.

Netið vinnur sér ekki inn flækju sína þegar þú hefur handfylli þjónusta, eitt mál eða lítið teymi. Fyrir hóflegt kerfi getur gott bókasafn eða rammi gefið þér mTLS, endurtekningar og mælikvarða með miklu minni rekstrarbyrði en fullt net, og einföld gátt auk skynsamlegra biðlarasafna dekkar oft allt sem þú þarft. Að taka upp net af því það er í tísku, áður en stærð þín krefst þess, er algeng leið til að eyða ári í að reka innviði sem leysa vanda sem þú hefur ekki. Byrjaðu á gáttinni, bættu við seigluminstrum í kóða eða bókasöfnum og náðu í net þegar fjöldi þjónusta og mála gerir nálgunina á hverja þjónustu dýrari. Þetta er sami „vinnur það sér inn flækju sína“ agi og skýja- og dreifðu kerfa kaflarnir (3.11 og 3.3) snúa aftur til ítrekað.

Forðastu tvímeðhöndlun þar sem gátt og net skarast

Gáttir og net skarast og skörunin er þar sem teymi skaða sig. Hvort tveggja getur endurtekið, hvort tveggja getur framfylgt tímamörkum, hvort tveggja getur athugað auðkenni, hvort tveggja getur safnað fjarmælingum. Ef gáttin endurtekur beiðni þrisvar og netið endurtekur hana líka þrisvar á hverju innra hoppi getur ein biðlaraendurtekning sprungið í tugi bakendakalla og breytt litlu blikki í endurtekningarstorm. Ef bæði lög framfylgja tímamörkum og hið innra er lengra en hið ytra gefst hið ytra upp meðan hið innra heldur áfram að vinna, sem sóar fyrirhöfn í svar sem enginn mun lesa.

Lausnin er skýr verkaskipting skrifuð niður og samþykkt. Úthlutaðu hverju áhyggjuefni á nákvæmlega eitt lag. Gáttin á norður-suður áhyggjuefnin: auðkenningu notenda, ytri hraðatakmarkanir og kvóta, beiðnabreytingu og API-samsetningu fyrir biðlara. Netið á austur-vestur áhyggjuefnin: þjónustu-í-þjónustu mTLS, innri endurtekningar og rofa og umferðarfærslu milli þjónustuútgáfa. Þar sem áhyggjuefni gæti búið í hvoru lagi sem er skaltu velja einn eiganda og láta hitt lagið beina áfram. Stilltu endurtekningarfjárhagsáætlanir og tímamarkastigveldi svo ytra tímamark sé alltaf lengra en innri vinnan sem það bíður eftir. Markmiðið er að sérhver beiðni hafi nákvæmlega einn stað sem meðhöndlar hvert áhyggjuefni og engin beiðni sé endurtekin, auðkennd eða skráð tvisvar fyrir slysni.

Líttu á gátt og net sem stefnuframfylgdarpunkta fyrir núlltraust

Dýpsta ástæðan fyrir að reka þessi lög er öryggisarkitektúr. Núlltraust (zero trust) er sú regla að engri beiðni er treyst vegna þess hvaðan hún kom. Sérhver beiðni verður að sanna auðkenni sitt og heimild, jafnvel innan eigin nets. Gamla líkanið treysti öllu sem þegar var innan jaðarsins, sem þýddi að ein brotin þjónusta gat reikað frjáls. Núlltraust kemur í stað netstaðsetningartrausts með auðkennisbyggðu trausti á hverju hoppi, og gáttir og net eru eðlilegir framfylgdarpunktar þar sem það auðkenni er athugað.

Gáttin er stefnuframfylgdarpunkturinn fyrir ytra auðkenni: hún staðfestir notandann eða samstarfsaðilann áður en nokkuð nær þjónustum þínum. Netið er stefnuframfylgdarpunkturinn fyrir vinnuálagsauðkenni: hver þjónusta fær dulritunarauðkenni, mTLS sannar það á hverju kalli og stefna ræður hvaða þjónustur mega tala við hverjar. Saman gefa þau þér vörn í dýpt, þar sem beiðni er athuguð á jaðrinum og aftur milli þjónusta, svo brot á einni þjónustu veiti hinum ekki frjálsa för. Í fjölklasa og fjölsvæða uppsetningum getur net framlengt þennan auðkennisvef yfir klasamörk, svo þjónusta í einum klasa auðkennir sig við þjónustu í öðrum með sömu mTLS-ábyrgðum og hún notar staðbundið, sem gefur samræmt núlltraust netkerfi jafnvel þegar fótsporið breiðist út. Auðkennisgrunnarnir hér tengjast beint kafla 4.7.

Málamiðlanir: kostir og gallar

NálgunKostirGallar
API-gáttEinn staður fyrir auðkenningu, hraðatakmarkanir, samsetningu, útgáfustýringuStakur flöskuháls til að stigvaxa og halda mjög aðgengilegum
Bakendi fyrir framendaHver biðlari fær sniðið, óháð þróandi APIFleiri gáttir til að reka. Rökfræði tvítekin milli BFF
Þjónustunet (hliðarvagn)Einsleitt mTLS, endurtekningar, sýnileiki án kóðabreytingaMilliþjónsaukakostnaður, töf og stjórnlag til að reka
Hliðarvagnslaust / milliþjónslaust netMinni aukakostnaður og töf en hliðarvagnar á podMinna þroskað. Veikari einangrun eða háð á hvert mál
Bókasafnsbyggð seiglaEinfalt í rekstri. Engir aukainnviðirTvítekning á hvert mál. Erfitt að halda samræmdu í stærð
Net yfir klasaSamræmt núlltraustauðkenni alls staðarVeruleg rekstrar- og netflækja

Meginspennan er einsleitni gegn rekstrarkostnaði. Sameiginlegt lag kaupir þér samræmi, sannanlegt öryggi og stefnu sem þú skrifar einu sinni, en það er raunverulegt kerfi sem þú verður að reka, stigvaxa, tryggja og villuleita, og það setur sig inn í slóð hverrar beiðni. Leystu spennuna eftir stærð og þörf. Gátt borgar sig nánast alltaf um leið og þú hefur ytri biðlara, því áhyggjuefnin sem hún miðlægir eru þau sem þú kemst ekki hjá. Net borgar sig síðar, þegar fjöldi þjónusta og mála gerir lagnir á hverja þjónustu að dýrari leiðinni. Undir þeim þröskuldi gefa bókasöfn og einföld gátt þér mestan hluta ávinningsins á broti af kostnaðinum. Ofan hans er einsleitni netsins þyngdar sinnar virði. Mistökin í báðar áttir eru að taka upp af tísku frekar en þörf: net of snemma er ár af yak-rakstri, og net sleppt of seint er hundrað ósamræmdar, handsmíðaðar útfærslur á mTLS.

Spurningar til að ræða með teyminu

  1. Fyrir hvert þverlægt áhyggjuefni (auðkenningu, endurtekningar, tímamörk, hraðatakmörkun, dulkóðun, fjarmælingu), hvaða eitt lag á það og geta allir nefnt eigandann án þess að giska? Þetta er spurningin sem kemur í veg fyrir tvímeðhöndlun og flest teymi hafa aldrei svarað henni skýrt, sem þýðir að svarið er ólíkt eftir þjónustu og höfundi. Komdu með áþreifanlegan lista yfir áhyggjuefni niður vinstri hliðina og lögin þín (biðlarabókasafn, gátt, net, stakar þjónustur) yfir toppinn og fylltu í ristina saman. Staðirnir þar sem tveir reitir eru merktir fyrir eitt áhyggjuefni eru endurtekningarstormar og tímamarkaviðsnúningar þínir sem bíða þess að gerast. Tómu línurnar eru áhyggjuefnin sem enginn meðhöndlar yfirleitt. Afurðin er ein samþykkt tafla, birt þar sem hvert teymi sér, sem segir að nákvæmlega eitt lag eigi hvert áhyggjuefni og hin beini áfram. Sú tafla er meira virði en nokkurt magn gáttar- eða netstillingar, því hún er það sem heldur lögunum tveimur frá því að berjast.

  2. Höfum við í raun nógu margar þjónustur og málafjölbreytni til að réttlæta þjónustunet, eða erum við um það bil að kaupa stjórnlag til að leysa vanda sem við höfum ekki? Net er alvarleg rekstrarskuldbinding og heiðarlega svarið fyrir mörg teymi er að gott bókasafn auk gáttar myndi þjóna þeim betur í dag. Komdu með raunverulegan fjölda þjónusta, fjölda mála sem þær eru skrifaðar á og heiðarlegt mat á því hve mikið tvítekin netrökfræði skaðar þig í raun núna. Komdu síðan með hina hliðina: hver mun reka netið, uppfæra milliþjóna þess, skipta um skírteini og vera kallaður út þegar það leiðir beiðni skakkt. Ef sársauki lagna á hverja þjónustu er minni en kostnaður við að reka netið hefurðu svarið þitt, og það er að bíða. Ef þú drukknar í ósamræmdum mTLS- og endurtekningarkóða yfir tugi fjölmála þjónusta vinnur netið sér inn gildi sitt. Málið er að ákveða á sönnunargögnum, ekki út frá því hvernig ráðstefnuerindi lét netið líta út.

  3. Hvar er núlltrausts mörkin okkar í dag og hvað gerist ef ein innri þjónusta er brotin? Mörg kerfi treysta enn öllu sem þegar er innan netsins, sem þýðir að ein brotin þjónusta getur hreyfst til hliðar og náð öllu öðru, og teymi uppgötva þetta oft aðeins í atviki. Gakktu heiðarlega í gegnum sprengjusvæðið: ef árásaraðili á eina af þjónustum þínum, hvað getur hún kallað á, hvað getur hún lesið og hvað stöðvar hana? Komdu með núverandi svar þitt um hvernig þjónustu-í-þjónustu köll eru auðkennd og dulkóðuð og vertu nákvæmur um hvaða köll eru vernduð með mTLS og hver eru skýr texti byggð á trausti af því að vera á sama neti. Aðgerðin sem fylgir er yfirveguð áætlun um auðkennisbyggðan aðgang á hverju hoppi, með gáttina að athuga ytra auðkenni og netið eða jafngildi að athuga vinnuálagsauðkenni, svo brot sé afmarkað frekar en skelfilegt. Jafnvel ef þú ert ekki tilbúinn að reka fullt net er fyrsta heiðarlega skrefið að nefna hvar traustmörkin sitja í raun.

  4. Ef API-gáttarlag okkar bilaði núna, hve mikið af kerfinu fer dimmt og höfum við prófað þá bilun frekar en að gera ráð fyrir að hún gerist ekki? Gáttin miðlægir svo mikið að rekstrarrof hennar tekur allt á bak við hana af netinu, og stór teymi vanfjárfesta gjarnan í offramleiðslu hennar einmitt því hún virkar hljóðlega þar til hún gerir það ekki. Vegðu togin sem keppa: ein einföld gátt er auðveld að rökræða um og ódýr í rekstri, á meðan láréttu stigvaxið, fjölsvæða lag kostar meira og bætir við eigin yfirtökustillingu og flækju. Komdu með raunverulegar tölur í umræðuna, þar á meðal hve mörg tilvik keyra í dag, yfir hve mörg aðgengissvæði, hver yfirtökutíminn er og hvenær þú keyrðir síðast leikdag sem drap gáttina viljandi. Fyrir fyrirtækja- og opinbera vettvanga sem bera uppitímaskuldbindingar eða lögbundin þjónustustig skaltu bæta við samnings- eða regluverkssektinni fyrir rekstrarrof, því framdyr án offramleiðslu er aðgengisáhætta sem þú hefur hljóðlega samþykkt fyrir hönd hverrar þjónustu og hvers borgara á bak við hana.

  5. Höfum við mælt hliðarvagnsskattinn sem netið okkar rukkar í raun og höfum við áætlun um hliðarvagnslausu og eBPF-valkostina, eða borgum við hann blindandi? Í stærð hættir milliþjónsaukakostnaðurinn á hvert pod í reikniafli og töf að vera ósýnilegur og verður raunveruleg lína í fjárhagsáætluninni, samt reka mörg teymi þúsundir hliðarvagna án þess að mæla kostnaðinn. Spennan er milli þroska og einangrunar hliðarvagnslíkansins öðrum megin og minni aukakostnaðar milliþjóna á hnút, milliþjónslausra bókasafna eða eBPF-nálgana í kjarna hinum megin, sem eru nýrri og skipta burt einhverri einangrun eða bæta við háð á hvert mál. Komdu með mældu tölurnar: minni og örgjörva sem milliþjónar nota yfir flotann, aukna halatöf á hvert hopp og hve stór hluti reikniaflsreikningsins netið er. Fyrir stórt fyrirtæki sem rekur netið yfir þúsundir pods, eða opinberan vettvang undir fjárhagsáætlunareftirliti, er þetta útgjaldaákvörðun sem eftirlit mun á endanum spyrja um, svo að þekkja skattinn og hvort vettvangsval þín halda ódýrari valkostunum opnum er grunnkostgæfni.

  6. Þarf hver biðlaraflokkur í raun sinn eigin bakenda fyrir framenda, eða erum við um það bil að tvítaka rökfræði milli gátta fyrir biðlara sem vilja í raun það sama? BFF-mynstrið aftengir biðlarateymi og leyfir hverju að þróa sniðinn samning, en hvert nýtt BFF er enn ein gátt til að reka, tryggja og halda samstilltri, og tvítekna rökfræðin milli þeirra verður hljóðlega viðhaldsskattur. Sjónarmiðin sem togast á eru sjálfræði teyma og biðlarasértæk skilvirkni gegn rekstrarkostnaði og reki margra næstum eins gátta. Komdu með sönnunargögn um hve mikið þarfir biðlaranna víkja í raun: hleðslustærðir, umferðarlotufjölda, útgáfutakt og hve oft breyting eins biðlara hefði hindrað annan undir einni sameiginlegri gátt. Í stórri skipulagsheild með mörg biðlarateymi, eða opinberum vettvangi sem þjónar opinberu vefforriti, farsímaforriti og samstarfssamþættingum í einu, er heiðarlega spurningin hvort frávikið réttlæti útbreiðsluna, því BFF fyrir hvern biðlara sem allir vilja sama formið er útbreiðsla sem þú munt borga fyrir að viðhalda árum saman.

Sjónarhorn eftir geirum

Sprotafyrirtæki. Afhentu API-gátt og slepptu netinu. Með handfylli þjónusta og örlítið teymi sér ein gátt um auðkenningu, hraðatakmarkanir og samsetningu, á meðan sameiginlegt biðlarabókasafn gefur þér mTLS og endurtekningar fyrir brot af kostnaði stjórnlags. Knappasta auðlind þín er verkfræðiathygli, svo net sem þú getur ekki rekið er skuld, ekki varnargarður. Haltu gáttinni nógu offramleiddri til að lifa einn hnút deyja og endurskoðaðu netið aðeins þegar þjónustufjöldi og málafjölbreytni þvinga í raun spurninguna fram.

Lítið fyrirtæki. Þú hefur ekkert vettvangsteymi til að reka net, svo hallaðu þér að því sem hýsingarvettvangur þinn eða gáttarvara gefur þér úr kassanum: stýrt TLS, innbyggða hraðatakmörkun og hýsta gátt frekar en eina sem þú plástrar sjálfur. Rammaðu valið sem kaupa-eða-smíða og keyptu, því stýrð API-gátt kostar minna en verkfræðingastundirnar til að reka þína eigin. Líttu á innri þjónustu-í-þjónustu dulkóðun sem eiginleika sem vettvangur þinn veitir, ekki verkefni sem þú mannar.

Stórfyrirtæki. Með hundruð þjónusta yfir mörg teymi og mál vinnur net sér inn flækju sína og raunverulega verkið er stjórnarhættir: ein skrifuð verkaskipting svo gátt og net tvímeðhöndli aldrei áhyggjuefni, einsleitt mTLS og fjarmæling og vettvangsteymi sem á milliþjónsuppfærslur og skírteinaskipti. Endurskoðendur vilja einn sannanlegan framfylgdarpunkt fyrir aðgang og dulkóðun, svo staðlaðu viðmótið og gerðu stefnu að einhverju sem teymi erfa frekar en endurútfæra. Stýrðu hliðarvagnsskattinum sem raunverulegri fjárhagslínu og haltu hliðarvagnslausum valkostum opnum svo þú sért ekki lokaður frá ódýrari nálgunum síðar.

Hið opinbera. Innkaupareglur, gagnsæi og opinber ábyrgð móta arkitektúrinn. Líttu á gáttina og netið sem núlltraust burðarás sem eftirlitsaðilar ætlast til: hver borgari og samstarfsaðili auðkenndur við framdyrnar, hvert innra kall auðkennt og dulkóðað með vinnuálagsauðkenni og úttektarslóð við hvern framfylgdarpunkt sem sannar hvar aðgangur var athugaður og hvar umferð var dulkóðuð. Kjóstu opna staðla og flytjanlega stillingu fram yfir séreignarbindingu sem innkaupareglur kunna að banna, og birtu, þar sem við á, hvernig vettvangurinn ver gögn borgara þegar þau fara yfir hver mörk.

Dæmi

Sprotafyrirtæki. Tólf manna sprotafyrirtæki rekur átta þjónustur á bak við eina API-gátt. Gáttin sér um alla norður-suður vinnuna: hún auðkennir notendur með táknathugun, framfylgir hraðatakmörkunum á áskriftarþrep svo ókeypis notendur geti ekki yfirbugað kerfið og setur saman nokkra málglaða endapunkta í einstök, farsímavæn köll. Fyrir austur-vestur umferð sleppa þau vísvitandi þjónustuneti, því átta þjónustur á tveimur málum réttlæta ekki stjórnlag. Í staðinn fá þau mTLS og endurtekningar úr sameiginlegu biðlarabókasafni og innbyggðri skírteinastjórnun vettvangs síns, og safna rekjun með léttum umboðsmanni. Þegar þau bæta síðar við sérstökum farsímabiðlara með þrengri hleðsluþarfir kynna þau farsíma-bakenda-fyrir-framenda við hlið núverandi vefgáttar. Þau endurskoða netspurninguna á hverju ári og komast ítrekað, réttilega, að þeirri niðurstöðu að þau hafi ekki enn farið yfir þröskuldinn þar sem það myndi borga sig.

Stórfyrirtæki. Fjölþjóðlegur banki rekur nokkur hundruð þjónustur yfir mörg teymi og mál, og hér vinnur þjónustunet sér inn flækju sína. Hver þjónusta fær vinnuálagsauðkenni og mTLS sjálfgefið, svo öll innri umferð er auðkennd og dulkóðuð án þess að nokkurt teymi skrifi dulritunarkóða, sem fullnægir bæði öryggisskipulagsheildinni og endurskoðendum sem vilja einn sannanlegan framfylgdarpunkt. Netið beitir einsleitum endurtekningum, tímamörkum og rofum með stefnu og færir umferð smám saman fyrir kanarí-útgáfur svo slæm uppsetning snerti eitt prósent notenda áður en hún snertir alla. Lag API-gátta fer fyrir framan ytri umferð og samstarfsumferð, á ytri auðkenningu, kvótum og útgáfustýringu, með fastri skrifaðri reglu um að innri endurtekningar búi aðeins í netinu og ytri hraðatakmarkanir aðeins í gáttunum, svo lögin tvö tvímeðhöndli aldrei beiðni. Samræmd fjarmæling frá hverjum milliþjóni nærir miðlægan sýnileikavettvang sem leyfir einum bakvaktarverkfræðingi að rekja beiðni yfir tugi þjónustuhoppa.

Hið opinbera. Landsbundið skattayfirvald nútímavæðir borgarasnúinn skilavettvang og lítur á gáttina og netið sem burðarás núlltraustarkitektúrs sem eftirlitsaðilar krefjast. API-gátt er stýrðar framdyrnar: hver borgari og samstarfsaðili er auðkenndur og heimilaður þar, ytri hraðatakmarkanir vernda kerfið í skilafrestsbylgjunni og gömul biðlarasnið eru umbreytt á jaðrinum svo eldri samþættingar haldi áfram að virka. Á bak við hana gefur þjónustunet hverri innri þjónustu dulritunarauðkenni og framfylgir mTLS á hverju kalli, svo engri þjónustu er treyst aðeins fyrir að vera innan netsins, og aðgangsstefna listar skýrt hvaða þjónustur mega kalla á hverjar. Því vettvangurinn spannar mörg gagnaver fyrir seiglu framlengir netið sömu auðkennis- og dulkóðunarábyrgðir yfir klasa, sem gefur samræmt núlltraust netkerfi um allt land. Hver framfylgdarpunktur gefur út úttektarslóð, svo yfirvaldið getur sannað fyrir eftirlitsaðilum nákvæmlega hvar aðgangur var athugaður og hvar umferð var dulkóðuð.

Viðskiptarök: hvatar, ávöxtun fjárfestingar og heildarkostnaður

Ávöxtun gáttar er auðsæ og yfirleitt mikil. Í stað þess að hver þjónusta endurútfæri auðkenningu, hraðatakmörkun og beiðnaskráningu smíðarðu þau einu sinni á jaðrinum og hver þjónusta erfir þau. Öryggislagfæring eða ný hraðatakmörkunarstefna fer út í einni uppsetningu frekar en hundrað, sem styttir tímann til að loka veikleika og lækkar kostnað hverrar úttektar, því einn staður er til að skoða. Samsetningar- og útgáfueiginleikarnir skera umferðarlotur biðlara og leyfa þér að þróa API án þess að brjóta kallendur, sem lækkar bæði tafarkostnað og samhæfingarskattinn milli teyma. Fyrir nánast hvert kerfi með ytri biðlara borgar gátt sig fljótt.

Þjónustunet hefur lúmskari viðskiptarök, því heildareignarkostnaður þess er raunverulegur og viðvarandi. Þú borgar fyrir reikniafl og töf milliþjónanna, fyrir verkfræðingana sem reka stjórnlagið og fyrir námsferil þess að villuleita nýtt lag. Sá kostnaður er réttlættur þegar valkosturinn (útfærslur á hverja þjónustu og hvert mál á mTLS, endurtekningum og fjarmælingu) væri stærri og, verra, ósamræmdur á vegu sem skapa öryggisbil og rekstrarrof. Í mikilli stærð breytir netið hundrað brothættum handsmíðuðum lausnum í eina einsleita, sannanlega, og ávöxtunin birtist sem færri öryggisatvik, hraðari öruggar uppsetningar gegnum umferðarfærslu og stórbættur sýnileiki. Undir þeirri stærð hallar heiðarlegi útreikningurinn oft að bókasöfnum og gátt, og agaða hreyfingin er að bíða. Til að færa rök við forystu skaltu tengja gáttina við mælikvarða sem hún fylgist þegar með (tími til úrbóta á veikleikum, úttektarkostnaður, API-samhæfingarkostnaður) og tengja netið við afmörkun öryggisatvika, uppsetningaröryggi og kostnað tvítekningarinnar á hvert mál sem það kemur í stað.

Andmynstur og gildrur

  • Net áður en þú þarft það: að taka upp fullt þjónustunet við handfylli þjónusta og kaupa stjórnlag til að leysa vanda sem þú hefur ekki enn.
  • Tvöfaldar endurtekningar: gáttin og netið endurtaka bæði, svo eitt biðlarakall margfaldast í bakendaendurtekningarstorm sem magnar rekstrarrof.
  • Tímamarkaviðsnúningur: innra tímamark lengra en hið ytra, svo kallandinn gefst upp meðan kallaðili heldur áfram að vinna í svari sem enginn mun lesa.
  • Gátt sem einlitt kerfi: að troða viðskiptarökfræði inn í gáttina þar til hún verður sameiginlegur flöskuháls sem hvert teymi verður að samhæfa til að breyta.
  • Einn bilunarpunktur: að reka eitt gáttartilvik án offramleiðslu, svo framdyr sem bila taka niður hverja þjónustu á bak við.
  • Að treysta netinu: að líta á allt innan jaðarsins sem öruggt, svo ein brotin þjónusta geti hreyfst til hliðar og náð öllu.
  • Skarast eignarhald: engin skrifuð verkaskipting, svo sama áhyggjuefni er meðhöndlað í báðum lögum fyrir slysni og enginn veit hvort er valdbært.
  • BFF-útbreiðsla: að ræsa bakenda fyrir framenda fyrir hvern biðlara þegar biðlararnir vilja það sama, sem margfaldar gáttir og tvítekur rökfræði án ávinnings.
  • Að hunsa hliðarvagnsskattinn: að setja upp þúsundir hliðarvagna án þess að mæla reikniafls- og tafaraukakostnaðinn og furða sig síðan á hvert fjárhagsáætlunin fór.

Þroskalíkan

  • Stig 1, Upphaf: Þjónustur tala beint saman án sameiginlegs lags. Auðkenning, endurtekningar og tímamörk eru handkóðuð á hverja þjónustu og ósamræmd. Innri umferð er oft í skýrum texta og treyst fyrir að vera á netinu, og enginn einn staður er til að framfylgja stefnu eða fylgjast með umferð. Ákvarðanir eru viðbragðsdrifnar, teknar þjónustu fyrir þjónustu þegar vandamál birtast.
  • Stig 2, Þróun: API-gátt fer fyrir framan ytri umferð og miðlægir auðkenningu, hraðatakmörkun og leiðsögn, en austur-vestur áhyggjuefni eru meðhöndluð af sameiginlegum bókasöfnum með ójafnri upptöku. Sumar þjónustur hafa mTLS. Margar hafa það ekki. Teymi þekkja norður-suður á móti austur-vestur greinarmuninn, en eignarhald er óformlegt og vinnubrögð eru mismunandi frá einu teymi til næsta.
  • Stig 3, Stöðlun: Norður-suður og austur-vestur áhyggjuefni eru hreint aðgreind með skrifaðri verkaskiptingu beitt um alla skipulagsheildina. Gáttin á ytra auðkenni, kvóta og samsetningu. Net eða samræmt bókasafnslag á innri mTLS, endurtekningar og fjarmælingu. Skörun er leyst svo ekkert áhyggjuefni sé tvímeðhöndlað, innri umferð er dulkóðuð og auðkennisathuguð sjálfgefið og staðallinn er skjalfestur og framfylgt frekar en látinn eftir geðþótta hvers teymis.
  • Stig 4, Stjórnun: Umferðarlagið er mælt og stýrt gegn grunnlínum. Þú rekur hliðarvagnsskattinn í reikniafli og halatöf á hvert hopp, gáttar- og netaðgengi gegn villufjárhagsáætlunum, endurtekningarmögnunar- og tímamarkaviðsnúningsatvik, mTLS-þekju sem hlutfall innri kalla og tímann til að ýta stefnubreytingu yfir flotann. Mælikvarðar hliða ákvarðanir: milliþjónsuppfærsla, ný endurtekningarfjárhagsáætlun eða kanarí-regla er dæmd á gögnum gegn grunnlínu frekar en innsæi, og rek frá staðlinum kallar fram lagfæringu.
  • Stig 5, Samhæfing: Gátt og net eru stefnuframfylgdarpunktar fyrir þroskaðan núlltraustarkitektúr, með auðkenni athugað á hverju hoppi yfir klasa og svæði. Umferðarfærsla knýr örugga stigvaxandi afhendingu, sýnileiki er einsleitur og ríkur og skipulagsheildin metur og tekur samfellt upp hliðarvagnslausar, milliþjónslausar og eBPF-nálganir þar sem þær borga sig. Umferðarlagið er samþætt öryggi, afhendingu og getuáætlun og aðlagast eftir því sem stærð, mál og áhættumynd breytast.

Hugmyndir til umræðu

  1. Ef eina API-gáttin þín bilaði núna, hve margar þjónustur yrðu óaðgengilegar og hver er áætlun þín um að gera framdyrnar offramleiddar?
  2. Hvaða áhyggjuefni í kerfinu þínu er nú meðhöndlað bæði í gáttinni og í þjónustu (eða bókasafni) og hvernig myndirðu sanna að það sé ekki tvímeðhöndlað?
  3. Við hvaða fjölda þjónusta og mála myndi teymið þitt vera sammála um að net hafi loksins unnið sér inn flækju sína og hve langt ertu frá þeirri línu?
  4. Ef árásaraðili braut eina innri þjónustu á morgun, hvaða aðrar þjónustur gæti hún náð og hvaða auðkennisathugun myndi stöðva hana?
  5. Eru hliðarvagnslausar eða eBPF-byggðar netnálganir nógu þroskaðar fyrir vettvang þinn enn og hvað myndirðu mæla til að ákveða?
  6. Þarf hver af ólíku biðlurum þínum í raun sinn eigin bakenda fyrir framenda, eða ertu um það bil að tvítaka rökfræði sem gæti verið sameiginleg?

Helstu atriði

  • Aðgreindu norður-suður umferð (meðhöndlaða af API-gátt) frá austur-vestur umferð (meðhöndlaða af þjónustuneti). Hvort á sína stefnu og að rugla þeim saman veldur tvímeðhöndlun.
  • Gátt miðlægir leiðsögn, auðkenningu, heimild, hraðatakmörkun, kvóta, beiðnabreytingu, samsetningu og útgáfustýringu, svo þjónustur haldist þunnar og stefna búi á einum stað.
  • Þjónustunet gefur þér mTLS, umferðarfærslu, endurtekningar og rofa á vettvangsstigi og einsleitan sýnileika án þess að breyta þjónustukóða, klassískt gegnum hliðarvagnsmilliþjóna.
  • Taktu upp net aðeins þegar fjöldi þjónusta og mála gerir lagnir á hverja þjónustu að dýrari leiðinni. Undir því vinna bókasöfn auk gáttar og hliðarvagnsskatturinn er raunverulegur nóg til að fylgjast með.
  • Líttu á gátt og net sem stefnuframfylgdarpunkta núlltraustarkitektúrs, úthlutaðu hverju þverlægu áhyggjuefni á nákvæmlega eitt lag og athugaðu auðkenni á hverju hoppi yfir klasa.

Heimildir og frekari lestur

  • 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