Programmēšana

4 elastīgu mikropakalpojumu izvietošanas stratēģijas

Lietotņu veidošana ar mikropakalpojumiem nodrošina izstrādātājiem lielāku ātrumu un veiklību nekā tradicionālās arhitektūras. Tomēr katra koda maiņa joprojām rada risku, nosakot posmu iespējamām kļūmēm, ja koda kvalitātes problēmas netiek atklātas un novērstas. Lai mazinātu šos riskus, lietojumprogrammu komandām būtu jāievieš modernas mākoņdatošanas maršrutēšanas stratēģijas, kas atvieglo bīstamības pārbaudi un nodrošina, ka lietojumprogrammas ir patiesi gatavas izvietošanai ražošanas vidēs.

Turpmākajās četrās izvietošanas stratēģijās tiek izmantotas maršrutēšanas metodes, lai droši ieviestu jaunus pakalpojumus un funkcijas, pārbaudītu funkcionalitāti un veiktu atkārtotus uzlabojumus, identificētu un novērstu ievainojamības un daudz ko citu. Šīs pieejas kopā ir virtuāla rīkkopa, pie kuras lietojumprogrammu komandas var ķerties, lai samazinātu risku, izstrādājot un izvietojot ar mikropakalpojumiem darbināmas lietojumprogrammas. Izpratne par viņu atšķirībām un līdzībām būs galvenā, lai zinātu, kā tās vislabāk izmantot savā vidē.

Kanāriju salu izvietošana

Nosaukts pēc vēsturiskās prakses sūtīt faktiskos putnus uz ogļu raktuvēm, lai noskaidrotu, vai gaisa kvalitāte ir droša cilvēkiem, kanāriju kanāriju izvietošana ir veids, kā pārbaudīt faktisko ražošanas izvietojumu ar minimālu ietekmi vai risku. Tā sauktais kanārijputniņš ir kandidāta versija pakalpojumam, kas uztver ienākošo pieprasījumu procentuālo daļu (piemēram, 1%), lai izmēģinātu jaunas funkcijas vai būvējumus. Pēc tam komandas var pārbaudīt rezultātus un, ja viss norit gludi, pakāpeniski palieliniet izvietošanu līdz 100% serveru vai mezglu. Un ja nē? Datplūsmu var ātri novirzīt no kanāriju kanāla izvietošanas, kamēr tiek pārkāpts kods un tiek atkļūdots.

Kanāriju salu izvietošanu var īstenot, izmantojot integrācijas ar malu maršrutēšanas komponentiem, kas ir atbildīgi par ienākošā lietotāja trafika apstrādi. Piemēram, Kubernetes vidē kanāriju izvietošana var pieskarties iebraukšanas kontrollera konfigurācijai, lai stabilajai un kanāriju izvietošanai piešķirtu noteiktus trafika pieprasījumu procentus. Šādā veidā virzot satiksmi, tiek nodrošināta iespēja jauniem pakalpojumiem sevi pierādīt pirms pilnas ieviešanas. Ja viņi to nedara, viņi tiek nosūtīti atpakaļ, lai novērstu problēmas, un pēc tam, kad būs gatavs, viņi veiks vēl vienu kanāriju izvietošanas testēšanas kārtu.

A / B testēšana

A / B testēšana ir līdzīga kanārijputniņu izvietošanai ar vienu būtisku atšķirību. Kamēr kanārijputniņu izvietošana mēdz koncentrēties uz kļūdu un veiktspējas sastrēgumu identificēšanu, A / B testēšana koncentrējas uz novērtēšanu lietotāju pieņemšana jaunu lietojumprogrammu funkciju. Piemēram, izstrādātāji varētu vēlēties uzzināt, vai jaunas funkcijas ir populāras lietotāju vidū, vai tās ir viegli atrodamas vai vai lietotāja saskarne darbojas pareizi.

Šis modelis izmanto programmatūras maršrutēšanu, lai aktivizētu un pārbaudītu īpašas funkcijas ar dažādiem trafika segmentiem, pakļaujot jaunus līdzekļus noteiktai trafika procentuālai daļai vai ierobežotām grupām. Maršrutēšanas A un B segmenti var nosūtīt trafiku uz dažādām programmatūras versijām, vai arī pakalpojumu piemēri var pat izmantot to pašu programmatūras būvējumu, bet ar dažādiem konfigurācijas atribūtiem (kā norādīts orķestratorā vai citur).

Zilganzaļa izvietošana

Zilganzaļais izvietošanas modelis ietver divu ražošanas vides paralēlu darbību: vienu pašreizējai stabilai laidienai (zilā krāsā) un otru pakāpeniskai un nākamā laidiena testēšanai (zaļā krāsā). Šī stratēģija ļauj atbrīvot atjauninātas programmatūras versijas viegli atkārtojamā veidā. Devops komandas var izmantot šo paņēmienu, lai automatizētu jaunās versijas izlaišanu, izmantojot CI / CD cauruļvadu.

Izmantojot zili zaļo stratēģiju, izstrādātāji izvieto jaunu servisa versiju blakus esošajam gadījumam, kas pašlaik apstrādā ražošanas trafiku. CI / CD cauruļvadam jābūt iestatītam, lai veiktu automatizētus dūmu testus, lai pārliecinātos, ka jaunajai versijai izdodas panākt galveno funkcionalitāti. Tiklīdz jaunais pakalpojums būs izturējis pēdējos testus, datplūsmu varēs droši un automātiski novirzīt uz to, izmantojot programmatūras maršrutēšanu, lai netraucēti pārvaldītu datplūsmas samazinājumu no zila uz zaļu. Vienlīdz svarīgi ir tas, ka kritisku, pēdējā brīža problēmu gadījumā ir viegli atgriezt izvietošanu zilajā versijā, ja rodas kritiskas problēmas.

Satiksmes ēnojums

Satiksmes ēnojums ir līdzīgs zilganzaļajām izvietojumiem, taču maršrutēšanas tehnoloģija tā vietā, lai sintētiskos testus apstiprinātu “zaļajā” vidē, dublē visu ienākošo ražošanas datplūsmu un atspoguļo to atsevišķā testa izvietojumā, kas vēl nav publiski pieejams. Tādējādi satiksmes aizēnojums rada precīzu priekšstatu par to, kas notiktu, ja tiktu izvietota jaunā versija, pamatojoties uz patiesu datplūsmu. Tajā pašā laikā satiksmes aizēnojums nodrošina, ka testi neietekmē faktisko ražošanu. Praksē izstrādātāji var izvēlēties kopēt noteiktu pieprasījumu procentuālo daudzumu testa pakalpojumam, kur pēc tam viņi var veikt integrācijas testēšanu un veiktspējas salīdzinošo novērtēšanu (vai nu manuāli, vai automatizētas CI / CD cauruļvada ietvaros).

Uzņēmumu izstrādātāji jau izmanto virkni testēšanas metožu, kas izstrādātas, lai pārliecinātos, ka jaunais lietojumprogrammas kods atbilst noteiktām prasībām. Piemēram, vienības un funkcionālie testi joprojām ir svarīgi pasākumi, kas kodam ir jānotīra. Tomēr uz mikropakalpojumiem balstītu arhitektūru raksturs padara gala-gala integrācijas testēšanu izšķirošāku nekā jebkad agrāk. Ņemot vērā savstarpējo atkarību apjomu un ilgtermiņa saskarnes novirzīšanās risku, kas raksturīgs mikropakalpojumu arhitektūrai, sintētiskajiem testiem joprojām ir vērtība, taču galu galā tie nespēs precīzi attēlot visu mijiedarbību starp pakalpojumiem ražošanas vidēs.

Četras stratēģijas, viens mērķis

Šīs maršrutēšanas metodes visas piedāvā atšķirīgas, tomēr saistītas metodes, lai palīdzētu atklāt, mazināt un pārbaudīt defektus uz mikropakalpojumiem balstītās lietojumprogrammās. Tie ir spēcīgi rīki kļūdu, veiktspējas problēmu un drošības ievainojamības novēršanai, īpaši, ja tie tiek izvietoti kā daļa no nepārtrauktas integrācijas un piegādes (CI / CD) cauruļvada.

Kura no šīm metodēm ir vispiemērotākā jūsu gadījumam, lielā mērā būs atkarīga no tā, kādas problēmas ir vissvarīgākās. Piemēram, ievērojams lietotāja interfeisa kapitālais remonts var gūt lielu labumu no A / B testēšanas, savukārt zilganzaļa izvietošana varētu būt nenovērtējama, lai redzētu, kā jauna funkcija varētu ietekmēt esošā datu krātuves veiktspēju.

Bieži vien šo paņēmienu kombinācija var piedāvāt vislabāko pārklājumu. Tomēr ir svarīgi apsvērt, cik labi katrs no tiem integrēsies jūsu esošajā attīstības modelī. Kanāriju atsevišķu funkciju izvietošana varētu būt piemērotāka veiklām izstrādes metodēm nekā, piemēram, pilnu versiju zilganzaļa izvietošana. Lai gan satiksmes aizēnojums var nodrošināt lielisku redzamību lietojumprogrammas veiktspējas pirms izvietošanas, to var būt grūti un laikietilpīgi īstenot, kā arī dārgi aprēķināt resursus.

Lai arī kā jūs tos izmantojat, maršrutēšanas paņēmieni, piemēram, šie, var būt nenovērtējama programmatūras izstrādes procesa sastāvdaļa, it īpaši, ja nozare pāriet no tradicionālajām, monolītajām lietojumprogrammām uz mākoņdatošanas sistēmām, kuru pamatā ir mikropakalpojumi. Lietojot vienu, dažus vai visus šos paņēmienus, vienlaikus ņemot vērā savas specifiskās priekšrocības, lietojumprogrammu komandas var labāk nodrošināt savu projektu integritāti un panākumus un pārliecinošāk pāriet uz ražošanu.

Manuels Zapfs ir produktu mijiedarbības vadītājs Containous, kas ir mākoņdatošanas tīkla uzņēmums, kurš darbojas atklātā pirmkoda projektos Traefik un Maesh.

Jauno tehnoloģiju forums nodrošina vietu, kur bezprecedenta dziļumā un plašumā izpētīt un pārrunāt topošās uzņēmuma tehnoloģijas. Izvēle ir subjektīva, balstoties uz mūsu izvēlētajām tehnoloģijām, kuras, mūsuprāt, ir svarīgas un interesē lasītājus. nepieņem mārketinga nodrošinājumu publicēšanai un patur tiesības rediģēt visu ieguldīto saturu. Nosūtiet visus jautājumus uz [email protected].

$config[zx-auto] not found$config[zx-overlay] not found