Plana daneya tevna karûbarê li hember balafira kontrolê

Hey Habr! Wergera gotarê pêşkêşî we dikim "Balafira daneya tevna karûbarê li hember balafira kontrolê" nivîskar Matt Klein.

Plana daneya tevna karûbarê li hember balafira kontrolê

Vê carê, min danasîna her du hêmanên tevna karûbarê, balafira daneyê û balafira kontrolê "xwest û wergerand". Ev ravekirin ji min re ya herî têgihîştî û balkêş xuya bû, û ya herî girîng jî ber bi têgihîştina "Gelo ew hewce ye?"

Gava ku ramana "tevra karûbarê" di van du salên dawî de her ku diçe populer bûye (Gotara eslî 10 Cotmeh, 2017) û hejmara beşdarên li cîhê zêde bûye, min di nav tevahiyê de zêdebûnek lihevhatî dît. civaka teknolojiyê di derbarê çawaniya berhevkirin û berevajîkirina çareseriyên cihêreng de.

Rewş bi rêze tweetên jêrîn ên ku min di Tîrmehê de nivîsîbûn çêtirîn tête kurt kirin:

Tevliheviya tevna karûbarê #1: Linkerd ~ = Nginx ~ = Haproxy ~ = Şand. Yek ji wan jî bi Îstio re ne. Istio tiştek bi tevahî cûda ye. 1 /

Ya yekem tenê balafirên daneyê ne. Ji xwe tiştekî nakin. Pêdivî ye ku ew ji bo tiştek bêtir dilxweş bin. 2/

Istio mînakek balafirek kontrolê ye ku parçeyan bi hev re girêdide. Ev qatek din e. /dawî

Tweetên berê behsa çend projeyên cihêreng dikin (Linkerd, NGINX, HAProxy, Envoy, û Istio), lê ya girîngtir têgehên giştî yên balafira daneyê, tevna karûbarê, û balafira kontrolê destnîşan dikin. Di vê postê de, ez ê gavekê paşde bavêjim û li ser têgînên "balafira daneyê" û "balafira kontrolê" di astek pir bilind de bipeyivim, û dûv re bipeyivim ka ev şert çawa li ser projeyên ku di tweetan de hatine destnîşan kirin têne bikar anîn.

Bi rastî, tevna karûbarê çi ye?

Plana daneya tevna karûbarê li hember balafira kontrolê
Wêne 1: Pêşniyara tevna karûbarê

Hêjmar 1 têgeha tevna karûbarê di asta xwe ya herî bingehîn de diyar dike. Çar komên xizmetê (AD) hene. Her mînakek karûbar bi serverek proxy ya herêmî ve girêdayî ye. Hemî seyrûsefera torê (HTTP, REST, gRPC, Redis, hwd.) ji yek mînakek serîlêdanê bi navgînek herêmî ve digihîje komên karûbarê derveyî yên guncan. Bi vî rengî, mînaka serîlêdanê ji tevnvîsê bi tevahî nizane û tenê ji proxeya xweya herêmî agahdar e. Di rastiyê de, tora pergala belavkirî ji karûbar hate derxistin.

Balafira daneyê

Di tevnek karûbarê de, serverek proxy ku ji bo serîlêdanê herêmî ye, karên jêrîn pêk tîne:

  • Vedîtina xizmetê. Ji bo serîlêdana we çi karûbar / sepan hene?
  • Kontrolkirina tenduristiyê. Mînakên karûbarê ji hêla vedîtina karûbarê ve têne vegerandin saxlem in û amade ne ku seyrûsefera torê qebûl bikin? Ev dikare hem çalak (mînak bersiv/kontrolkirina tenduristiyê) û hem jî pasîf (mînak bikaranîna 3 xeletiyên 5xx yên li pey hev wekî nîşana rewşa karûbarê netendurist) kontrolên tenduristiyê pêk bîne.
  • Routing. Dema ku ji karûbarek REST daxwazek "/foo" distîne, divê daxwaz ji kîjan komê karûbarê re were şandin?
  • hevsengkirina barkirinê. Dema ku komek karûbarê di dema rêvekirinê de hate hilbijartin, divê daxwaz ji kîjan nimûneya karûbarê re were şandin? Bi çi demê re? Bi kîjan mîhengên şikandina çerxê? Ger daxwaz têk neçe, gelo divê ew ji nû ve were ceribandin?
  • Authentication û destûr. Ji bo daxwazên hatinê, gelo karûbarê bangê bi karanîna mTLS an hin mekanîzmayek din bi şîfreya krîptografîk were nasîn / destûr were dayîn? Ger ew were nas kirin/destûr, gelo destûr heye ku li ser karûbarê bangî operasyona daxwazkirî (xala dawî) bike an divê bersivek nerastkirî were vegerandin?
  • Çavdêrîbûn. Divê ji bo her daxwazekê statîstîkên hûrgulî, têketin / têketin, û daneyên şopê yên belavbûyî werin çêkirin da ku operator dema ku çêdibin karibin herikîna seyrûsefera belavbûyî û pirsgirêkên xeletkirinê fam bikin.

Balafira daneyê ji hemî xalên berê yên di tevna karûbarê de berpirsiyar e. Bi rastî, proxy herêmî ya karûbarê (sidecar) balafira daneyê ye. Bi gotinek din, balafira daneyê berpirsiyar e ku bi şert û merc weşan, şandin, û şopandina her pakêtek torê ya ku ji karûbarek an ji karûbarek tê şandin.

Balafira kontrolê

Raberkirina torê ya ku proxyek herêmî di balafira daneyê de peyda dike sêrbaz e(?). Lêbelê, proxy bi rastî bi riya "/foo" ya karûbarê B çawa dizane? Daneyên vedîtina karûbarê ku ji hêla daxwazên proxy ve têne tije kirin çawa dikare were bikar anîn? Parametreyên ji bo hevsengkirina barkirinê, dema derbasbûnê, qutbûna çerxê, hwd. çawa têne mîheng kirin? Meriv çawa serîlêdanek bi karanîna rêbaza şîn/kesk an jî rêbaza veguherîna seyrûsefera dilşewat bi kar tîne? Kî mîhengên erêkirin û destûrnameyê li seranserê pergalê mîheng dike?

Hemî tiştên jorîn di bin kontrola balafira kontrolê ya tevna karûbarê de ne. Balafira kontrolê komek wekîlên bêdewlet ên îzole digire û wan vediguherîne pergalek belavbûyî.

Ez difikirim ku sedema ku gelek teknolog têgînên cihêreng ên balafira daneyê û balafira kontrolê tevlihev dibînin ev e ku ji bo pir kesan balafira daneyê nas e dema ku balafira kontrolê biyanî / nefêmkirî ye. Em ji bo demeke dirêj bi rêgezên torê yên fîzîkî û guhêrbar re dixebitin. Em fam dikin ku pêdivî ye ku pakêt / daxwaz ji xala A biçin xala B û ku em dikarin hardware û nermalavê bikar bînin da ku vê bikin. Nifşa nû ya proxeyên nermalavê tenê guhertoyên xweşik ên amûrên ku em ji demek dirêj ve bikar tînin ne.

Plana daneya tevna karûbarê li hember balafira kontrolê
Wêne 2: Balafira kontrola mirovan

Lêbelê, em ji demek dirêj ve firokeyên kontrolê bikar tînin, her çend pir operatorên torê dibe ku vê beşa pergalê bi ti pêkhateyek teknolojiyê ve girê nedin. Sedem hêsan e:
Piraniya balafirên kontrolê yên ku îro têne bikar anîn ... em in.

li ser jimara 2 Tiştê ku ez jê re dibêjin "Balafira Kontrola Mirovan" nîşan dide. Di vê celebê bicîhkirinê de, ku hîn jî pir gelemperî ye, operatorek mirovî ya belkî gemar mîhengên statîk diafirîne - potansiyel bi riya nivîsan - û wan di nav hin pêvajoyek taybetî de li hemî proxy-an belav dike. Dûv re proxies dest bi karanîna vê veavakirinê dikin û bi karanîna mîhengên nûvekirî dest bi hilberandina balafira daneyê dikin.

Plana daneya tevna karûbarê li hember balafira kontrolê
Wêne 3: Balafira kontrola tevna karûbarê pêşkeftî

li ser jimara 3 balafira kontrolê ya "dirêjkirî" ya tevna karûbarê nîşan dide. Ew ji beşên jêrîn pêk tê:

  • Mirov: Hîn kesek heye (hêvîdarim kêmtir hêrs bibe) ku biryarên di asta bilind de di derbarê tevahî pergalê de bi tevahî digire.
  • UI balafira kontrolê: Kesek bi cûreyek navrûya bikarhêner re têkildar dibe da ku pergalê kontrol bike. Ev dibe ku portalek malperê, serîlêdana rêzika fermanê (CLI), an navgînek din be. Bi karanîna navbeynkariya bikarhêner, operator xwedan pîvanên veavakirina pergala gerdûnî ye wek:
    • Kontrola bicîhkirinê, şîn / kesk û / an veguherîna trafîkê ya gav bi gav
    • Vebijarkên Nasname û Destûrdanê
    • Taybetmendiyên tabloya rêwîtiyê, mînakî dema ku serîlêdana A agahdariya li ser "/foo" çi diqewime bixwaze
    • Mîhengên hevsengkerê barkirin, wek dem, ji nû ve hewldan, mîhengên şikandina dorpêçê, hwd.
  • Plansazkarê bargiraniyê: Karûbar li ser binesaziyê bi navgîniya cûreyek pergala plansazkirinê/orkestrasyonê, wek Kubernetes an Nomad, têne meşandin. Bersazker ji barkirina karûbarê digel nûnerê xweya herêmî berpirsiyar e.
  • Vedîtina xizmetê. Dema ku plansazker dest pê dike û mînakên karûbarê rawestîne, ew rewşa tenduristiyê ji pergala vedîtina karûbarê re radigihîne.
  • API-yên veavakirina proxyê alîgir : Proxyên herêmî bi dînamîk dewletê ji pêkhateyên pergalê yên cihêreng bi karanîna modelek domdar bêyî destwerdana operatorê derdixin. Tevahiya pergal, ku ji hemî mînakên karûbarê ku niha têne xebitandin û serverên proxy yên herêmî pêk tê, di dawiyê de di yek ekosîstemê de digihîje hev. API-ya daneya gerdûnî ya Envoy yek mînakek e ku ev di pratîkê de çawa dixebite.

Di bingeh de, mebesta balafira kontrolê ev e ku polîtîkaya ku dê di dawiyê de ji hêla balafirgeha daneyê ve were pejirandin saz bike. Balafirên kontrolê yên pêşkeftî dê bêtir beşên hin pergalan ji operatorê derxînin û kêmtir operasyona destan hewce dike, bi şertê ku ew rast bixebitin!...

Balafira daneyê û balafira kontrolê. Balafira daneyan beramberî kurteya balafira kontrolê

  • Balafira daneya tevna xizmetê: Di pergalê de bandorê li her pakêt / daxwazek dike. Berpirsiyar ji bo vedîtina serîlêdanê / karûbarê, kontrolkirina tenduristiyê, rêkirin, hevsengkirina barkirinê, rastkirin / destûrkirin û çavdêrîkirinê.
  • Xizmeta balafira kontrola tevna: Siyaset û veavakirinê ji bo hemî balafirên daneya xebitandinê di nav tora karûbarê de peyda dike. Destê xwe nade tu pakêtan/daxwazên pergalê. Balafira kontrolê hemî balafirên daneyê vediguherîne pergalek belavkirî.

Pergala projeya heyî

Piştî ku ravekirina jorîn fêm kir, em li rewşa heyî ya projeya tevna karûbarê binêrin.

  • balafirên Daneyên: Linkerd, NGINX, HAProxy, Envoy, Traefik
  • Balafirên kontrolê: Istio, Nelson, SmartStack

Li şûna ku biçim nav analîzek kûr a her yek ji çareseriyên li jor, ez ê bi kurtasî behsa hin xalên ku ez bawer dikim ku niha di ekosîstemayê de dibe sedema pir tevliheviyê bikim.

Linkerd di destpêka sala 2016-an de yek ji yekem serverên proxy balafirê daneya ji bo tevna karûbarê bû û ji bo bilindkirina hişmendî û baldariyê li ser modela sêwirana tevna karûbarê karekî fantastîk kiriye. Nêzîkî 6 meh şûnda, Envoy beşdarî Linkerd bû (her çend ew ji dawiya 2015-an vir ve bi Lyft re bû). Linkerd û Envoy du proje ne ku bi gelemperî dema ku li ser tevnên karûbarê nîqaş têne behs kirin.

Istio di Gulana 2017 de hate ragihandin. Armancên projeya Istio pir dişibin balafira kontrolê ya dirêjkirî ku tê de tê xuyang kirin jimara 3. Nûnerê ji bo Istio wekîlê xwerû ye. Bi vî rengî, Istio balafira kontrolê ye, û Envoy balafira daneyê ye. Di demek kin de, Istio gelek heyecan çêkir, û balafirên daneya din wekî şûna Envoy dest bi yekbûnê kirin (hem Linkerd û hem jî NGINX bi Istio re entegrasyonê nîşan dan). Rastiya ku balafirên daneyên cihêreng dikarin di heman balafira kontrolê de werin bikar anîn tê vê wateyê ku balafira kontrolê û balafira daneyê ne hewce ye ku bi hevûdu ve girêdayî ne. API-yek wekî API-ya daneya giştî ya Envoy dikare di navbera du beşên pergalê de pirek ava bike.

Nelson û SmartStack ji hev veqetandina balafira kontrolê û balafira daneyê bêtir ronî dikin. Nelson Envoy wekî wekîlê xwe bikar tîne û balafirek kontrolê ya pêbawer ji bo tevna karûbarê li ser bingeha stoka HashiCorp ava dike, ango. Koçer û hwd. SmartStack belkî yekem pêla nû ya tevnên karûbarê bû. SmartStack balafirek kontrolê li dora HAProxy an NGINX ava dike, û jêhatîbûna veqetandina balafira kontrolê ji tevna karûbarê ji balafira daneyê nîşan dide.

Mîmariya Microservice bi tevnek karûbarê her ku diçe balê dikişîne (rast!), û her ku diçe bêtir proje û firoşkar di vî alî de dest bi xebatê dikin. Di çend salên pêş de em ê hem di balafira daneyê û hem jî di balafira kontrolê de, û hem jî di tevlihevkirina hêmanên cûda de gelek nûbûn bibînin. Di dawiyê de, mîmariya mîkroxizmetê divê ji bo operatorê zelaltir û efsûnî (?) bibe.
Hêvîdarim ku kêmtir û kêmtir hêrs bibe.

Vebijarkên sereke

  • Meshek karûbarê ji du beşên cûda pêk tê: balafira daneyê û balafira kontrolê. Her du beş hewce ne, û bêyî wan pergal dê nexebite.
  • Her kes bi balafira kontrolê nas e, û di vê nuqteyê de, balafira kontrolê dibe ku hûn bin!
  • Hemî balefirên daneyê li ser taybetmendî, performans, veavakirin û berfirehbûnê bi hev re pêşbaziyê dikin.
  • Hemî balafirên kontrolê di taybetmendî, veavakirin, berfirehbûn û karanîna hêsan de bi hev re pêşbaziyê dikin.
  • Yek balafirek kontrolê dikare abstractions û API-yên rast bihewîne da ku gelek firokeyên daneyê werin bikar anîn.

Source: www.habr.com

Add a comment