Automātiska mikropakalpojumu pārbaude programmā Docker nepārtrauktai integrācijai

Projektos, kas saistÄ«ti ar mikropakalpojumu arhitektÅ«ras attÄ«stÄ«bu, CI/CD no patÄ«kamas iespējas kategorijas pāriet uz steidzamas nepiecieÅ”amÄ«bas kategoriju. Automatizētā testÄ“Å”ana ir neatņemama nepārtrauktas integrācijas sastāvdaļa, kuras kompetenta pieeja var sniegt komandai daudz patÄ«kamu vakaru Ä£imenes un draugu lokā. Pretējā gadÄ«jumā pastāv risks, ka projekts nekad netiks pabeigts.

Ir iespējams aptvert visu mikropakalpojuma kodu ar vienÄ«bu testiem ar imitācijas objektiem, taču tas tikai daļēji atrisina problēmu un atstāj daudz jautājumu un sarežģījumus, Ä«paÅ”i, pārbaudot darbu ar datiem. Kā vienmēr, aktuālākās ir datu konsekvences pārbaude relāciju datu bāzē, darba ar mākoņpakalpojumiem testÄ“Å”ana un nepareizu pieņēmumu izdarÄ«Å”ana, rakstot imitācijas objektus.

To visu un nedaudz vairāk var atrisināt, pārbaudot visu mikropakalpojumu Docker konteinerā. NeapÅ”aubāma priekÅ”rocÄ«ba, lai nodroÅ”inātu testu derÄ«gumu, ir tas, ka tiek pārbaudÄ«ti tie paÅ”i Docker attēli, kas nonāk ražoÅ”anā.

Šīs pieejas automatizācija rada vairākas problēmas, kuru risinājums tiks aprakstīts tālāk:

  • paralēlu uzdevumu konflikti vienā un tajā paŔā doka resursdatorā;
  • identifikatoru konflikti datu bāzē testa iterāciju laikā;
  • gaida mikropakalpojumu gatavÄ«bu;
  • žurnālu apvienoÅ”ana un izvadÄ«Å”ana uz ārējām sistēmām;
  • izejoÅ”o HTTP pieprasÄ«jumu pārbaude;
  • tÄ«mekļa ligzdas pārbaude (izmantojot SignalR);
  • OAuth autentifikācijas un autorizācijas pārbaude.

Å is raksts ir balstÄ«ts uz mana runa SECR 2019. Tiem, kam ir pārāk slinks lasÄ«t, Å”eit ir runas ieraksts.

Automātiska mikropakalpojumu pārbaude programmā Docker nepārtrauktai integrācijai

Å ajā rakstā es jums pastāstÄ«Å”u, kā izmantot skriptu, lai palaistu pārbaudāmo pakalpojumu, datu bāzi un Amazon AWS pakalpojumus programmā Docker, pēc tam testus pakalpojumā Postman un pēc to pabeigÅ”anas apturēt un dzēst izveidotos konteinerus. Testi tiek izpildÄ«ti katru reizi, kad kods mainās. Tādā veidā mēs pārliecināmies, ka katra versija pareizi darbojas ar AWS datu bāzi un pakalpojumiem.

To paÅ”u skriptu palaiž gan paÅ”i izstrādātāji savos Windows galddatoros, gan Gitlab CI serveris operētājsistēmā Linux.

Lai tas bÅ«tu attaisnojams, jaunu testu ievieÅ”anai nevajadzētu instalēt papildu rÄ«kus ne izstrādātāja datorā, ne serverÄ«, kurā tiek izpildÄ«ti testi. Docker atrisina Å”o problēmu.

Pārbaudei ir jādarbojas vietējā serverÄ« Ŕādu iemeslu dēļ:

  • TÄ«kls nekad nav pilnÄ«bā uzticams. Viens no tÅ«kstoÅ” pieprasÄ«jumiem var neizdoties;
    Šajā gadījumā automātiskā pārbaude nedarbosies, darbs apstāsies, un iemesls būs jāmeklē žurnālos;
  • Daži treÅ”o puÅ”u pakalpojumi neatļauj pārāk biežus pieprasÄ«jumus.

Turklāt statīvu nav vēlams izmantot, jo:

  • StatÄ«vu var salauzt ne tikai slikts kods, kas tajā darbojas, bet arÄ« dati, kurus pareizais kods nevar apstrādāt;
  • NeatkarÄ«gi no tā, cik smagi mēs cenÅ”amies atgriezt visas izmaiņas, kas veiktas testā paÅ”a testa laikā, kaut kas var noiet greizi (pretējā gadÄ«jumā, kāpēc pārbaudÄ«t?).

Par projektu un procesa organizāciju

MÅ«su uzņēmums izstrādāja mikropakalpojumu tÄ«mekļa lietojumprogrammu, kas darbojas Docker Amazon AWS mākonÄ«. Projektā jau tika izmantoti vienÄ«bu testi, taču bieži vien radās kļūdas, kuras vienÄ«bu testi neatklāja. Bija nepiecieÅ”ams pārbaudÄ«t visu mikropakalpojumu kopā ar datu bāzi un Amazon pakalpojumiem.

Projektā tiek izmantots standarta nepārtrauktas integrācijas process, kas ietver mikropakalpojuma testÄ“Å”anu ar katru apņemÅ”anos. Pēc uzdevuma pieŔķirÅ”anas izstrādātājs veic izmaiņas mikropakalpojumā, pārbauda to manuāli un veic visus pieejamos automatizētos testus. Ja nepiecieÅ”ams, izstrādātājs maina testus. Ja problēmas netiek konstatētas, tiek veikta apņemÅ”anās Ŕī jautājuma atzarā. Pēc katras apstiprināŔanas serverÄ« tiek automātiski izpildÄ«ti testi. ApvienoÅ”anās kopējā filiālē un automātisko testu palaiÅ”ana tajā notiek pēc veiksmÄ«gas pārskatÄ«Å”anas. Ja koplietojamā filiāles testi tiek veikti, pakalpojums tiek automātiski atjaunināts Amazon Elastic Container Service (bench) testa vidē. StatÄ«vs ir nepiecieÅ”ams visiem izstrādātājiem un testētājiem, un to nav ieteicams lauzt. Testētāji Å”ajā vidē pārbauda labojumu vai jaunu lÄ«dzekli, veicot manuālas pārbaudes.

Projekta arhitektūra

Automātiska mikropakalpojumu pārbaude programmā Docker nepārtrauktai integrācijai

Lietojumprogramma sastāv no vairāk nekā desmit pakalpojumiem. Daži no tiem ir rakstÄ«ti .NET Core un daži NodeJs. Katrs pakalpojums darbojas Docker konteinerā pakalpojumā Amazon Elastic Container Service. Katrai no tām ir sava Postgres datu bāze, un dažiem ir arÄ« Redis. Nav kopēju datu bāzu. Ja vairākiem pakalpojumiem ir nepiecieÅ”ami vieni un tie paÅ”i dati, tad Å”ie dati, kad tie mainās, tiek pārsÅ«tÄ«ti uz katru no Å”iem pakalpojumiem, izmantojot SNS (Simple Notification Service) un SQS (Amazon Simple Queue Service), un pakalpojumi tos saglabā savās atseviŔķās datubāzēs.

SQS un SNS

SQS ļauj ievietot ziņojumus rindā un lasīt ziņojumus no rindas, izmantojot HTTPS protokolu.

Ja vienu rindu lasa vairāki pakalpojumi, tad katrs ziņojums pienāk tikai vienam no tiem. Tas ir noderīgi, palaižot vairākus viena pakalpojuma gadījumus, lai sadalītu slodzi starp tiem.

Ja vēlaties, lai katrs ziņojums tiktu piegādāts vairākiem pakalpojumiem, katram adresātam ir jābÅ«t savai rindai, un SNS ir nepiecieÅ”ams, lai ziņojumus dublētu vairākās rindās.

SNS jÅ«s izveidojat tēmu un abonējat to, piemēram, SQS rindu. Varat nosÅ«tÄ«t ziņojumus tēmai. Å ajā gadÄ«jumā ziņojums tiek nosÅ«tÄ«ts uz katru rindu, kas abonēta Å”ajā tēmā. SNS nav ziņojumu lasÄ«Å”anas metodes. Ja atkļūdoÅ”anas vai testÄ“Å”anas laikā jums ir jānoskaidro, kas tiek nosÅ«tÄ«ts uz SNS, varat izveidot SQS rindu, abonēt to uz vēlamo tēmu un izlasÄ«t rindu.

Automātiska mikropakalpojumu pārbaude programmā Docker nepārtrauktai integrācijai

API vārteja

Lielākā daļa pakalpojumu nav tieŔi pieejami no interneta. Piekļuve tiek nodroŔināta, izmantojot API vārteju, kas pārbauda piekļuves tiesības. Šis ir arī mūsu pakalpojums, un tam ir arī testi.

Reāllaika paziņojumi

Lietojumprogramma izmanto SignālsRlai rādÄ«tu lietotājam reāllaika paziņojumus. Tas tiek ieviests paziņojumu pakalpojumā. Tas ir pieejams tieÅ”i no interneta un pats darbojas ar OAuth, jo izrādÄ«jās nepraktiski izveidot atbalstu tÄ«mekļa ligzdām Gateway, salÄ«dzinot ar OAuth un paziņojumu pakalpojuma integrÄ“Å”anu.

Labi pazīstama testēŔanas pieeja

VienÄ«bas testi aizstāj tādas lietas kā datu bāze ar imitētiem objektiem. Ja mikropakalpojums, piemēram, mēģina izveidot ierakstu tabulā ar ārējo atslēgu, un ieraksts, uz kuru atsaucas Ŕī atslēga, nepastāv, pieprasÄ«jumu nevar pabeigt. VienÄ«bas testi to nevar noteikt.

Š’ raksts no Microsoft Tiek piedāvāts izmantot atmiņā esoÅ”o datu bāzi un realizēt izspēles objektus.

Atmiņas datu bāze ir viena no DBVS, ko atbalsta entÄ«tiju ietvars. Tas tika izveidots speciāli testÄ“Å”anai. Dati Ŕādā datubāzē tiek glabāti tikai lÄ«dz to izmantoÅ”anas procesa beigām. Tas neprasa izveidot tabulas un nepārbauda datu integritāti.

Izspēles objekti modelē klasi, ko tie aizstāj, tikai tiktāl, cik testa izstrādātājs saprot, kā tas darbojas.

Microsoft rakstā nav norādÄ«ts, kā panākt, lai Postgres automātiski startētu un veiktu migrāciju, kad palaižat testu. Mans risinājums to dara un turklāt paÅ”am mikropakalpojumam nepievieno nekādu kodu Ä«paÅ”i testiem.

Pāriesim pie risinājuma

Izstrādes procesā kļuva skaidrs, ka ar vienÄ«bu testiem nepietiek, lai laikus atrastu visas problēmas, tāpēc tika nolemts Å”im jautājumam pieiet no cita leņķa.

Testa vides iestatīŔana

Pirmais uzdevums ir izvietot testa vidi. Lai palaistu mikropakalpojumu, jāveic Ŕādas darbības:

  • Konfigurējiet pārbaudāmo pakalpojumu vietējai videi, vides mainÄ«gajos norādiet detaļas savienojumam ar datu bāzi un AWS;
  • Palaidiet Postgres un veiciet migrāciju, palaižot Liquibase.
    Relāciju DBVS pirms datu ierakstÄ«Å”anas datu bāzē ir jāizveido datu shēma, citiem vārdiem sakot, tabulas. Atjauninot lietojumprogrammu, tabulas ir jāpārnes uz jaunās versijas izmantoto formu un, vēlams, nezaudējot datus. To sauc par migrāciju. Tabulu izveide sākotnēji tukŔā datu bāzē ir Ä«paÅ”s migrācijas gadÄ«jums. Migrāciju var iebÅ«vēt paŔā lietojumprogrammā. Gan .NET, gan NodeJS ir migrācijas ietvari. MÅ«su gadÄ«jumā droŔības apsvērumu dēļ mikropakalpojumiem tiek liegtas tiesÄ«bas mainÄ«t datu shēmu, un migrācija tiek veikta, izmantojot Liquibase.
  • Palaidiet Amazon LocalStack. Å Ä« ir AWS pakalpojumu ievieÅ”ana mājās. Vietnē Docker Hub ir gatavs LocalStack attēls.
  • Palaidiet skriptu, lai programmā LocalStack izveidotu nepiecieÅ”amās entÄ«tijas. Shell skripti izmanto AWS CLI.

Izmantota projekta testÄ“Å”anai Pastnieks. Tā pastāvēja iepriekÅ”, taču tā tika palaista manuāli un testēja stendā jau izvietotu lietojumprogrammu. Å is rÄ«ks ļauj veikt patvaļīgus HTTP(S) pieprasÄ«jumus un pārbaudÄ«t, vai atbildes atbilst cerÄ«bām. Vaicājumi tiek apvienoti kolekcijā, un var palaist visu kolekciju.

Automātiska mikropakalpojumu pārbaude programmā Docker nepārtrauktai integrācijai

Kā darbojas automātiskā pārbaude?

Testa laikā Docker darbojas viss: pārbaudāmais serviss, Postgres, migrācijas rīks un Postman, pareizāk sakot, tā konsoles versija - Newman.

Docker atrisina vairākas problēmas:

  • NeatkarÄ«ba no saimniekdatora konfigurācijas;
  • AtkarÄ«bu instalÄ“Å”ana: Docker lejupielādē attēlus no Docker Hub;
  • Sistēmas atgrieÅ”ana sākotnējā stāvoklÄ«: vienkārÅ”i izņemiet konteinerus.

Docker-komponēt apvieno konteinerus virtuālā tīklā, kas izolēts no interneta, kurā konteineri atrod viens otru pēc domēna nosaukumiem.

Testu kontrolē čaulas skripts. Lai palaistu testu operētājsistēmā Windows, mēs izmantojam git-bash. Tādējādi ar vienu skriptu pietiek gan operētājsistēmai Windows, gan Linux. Git un Docker instalēja visi projekta izstrādātāji. Instalējot Git operētājsistēmā Windows, tiek instalēts git-bash, tāpēc arī tas ir pieejams ikvienam.

Skripts veic Ŕādas darbības:

  • Docker attēlu veidoÅ”ana
    docker-compose build
  • Datu bāzes un LocalStack palaiÅ”ana
    docker-compose up -d <ŠŗŠ¾Š½Ń‚ŠµŠ¹Š½ŠµŃ€>
  • Datu bāzes migrācija un LocalStack sagatavoÅ”ana
    docker-compose run <ŠŗŠ¾Š½Ń‚ŠµŠ¹Š½ŠµŃ€>
  • Testējamā pakalpojuma palaiÅ”ana
    docker-compose up -d <сŠµŃ€Š²Šøс>
  • Testa izpilde (Ņūmens)
  • Visu konteineru apturÄ“Å”ana
    docker-compose down
  • Rezultātu publicÄ“Å”ana pakalpojumā Slack
    Mums ir tērzÄ“Å”ana, kurā nonāk ziņojumi ar zaļu atzÄ«mi vai sarkanu krustiņu un saiti uz žurnālu.

Å ajās darbÄ«bās ir iesaistÄ«ti Ŕādi Docker attēli:

  • Testējamais pakalpojums ir tāds pats attēls kā produkcijai. Testa konfigurācija tiek veikta, izmantojot vides mainÄ«gos.
  • Postgres, Redis un LocalStack tiek izmantoti gatavi attēli no Docker Hub. Ir arÄ« gatavi attēli Liquibase un Newman. Mēs veidojam savējo uz viņu skeleta, pievienojot tur savus failus.
  • Lai sagatavotu LocalStack, izmantojiet gatavu AWS CLI attēlu un izveidojiet attēlu, kurā ir uz tā balstÄ«ts skripts.

Izmantojot apjomi, jums nav jāizveido Docker attēls tikai tāpēc, lai konteineram pievienotu failus. Tomēr apjomi nav piemēroti mÅ«su videi, jo paÅ”i Gitlab CI uzdevumi darbojas konteineros. JÅ«s varat kontrolēt Docker no Ŕāda konteinera, bet sējumi pievieno mapes tikai no resursdatora sistēmas, nevis no cita konteinera.

Problēmas, ar kurām jūs varat saskarties

Gaida gatavību

Ja darbojas konteiners ar pakalpojumu, tas nenozīmē, ka tas ir gatavs pieņemt savienojumus. Jums jāgaida, līdz savienojums turpināsies.

Šī problēma dažreiz tiek atrisināta, izmantojot skriptu gaidi-to.sh, kas gaida iespēju izveidot TCP savienojumu. Tomēr LocalStack var parādīt 502 Bad Gateway kļūdu. Turklāt tas sastāv no daudziem pakalpojumiem, un, ja viens no tiem ir gatavs, tas neko neizsaka par pārējiem.

Å Ä·Ä«dums: LocalStack nodroÅ”ināŔanas skripti, kas gaida 200 atbildi gan no SQS, gan SNS.

Paralēli uzdevumu konflikti

Tajā paŔā Docker resursdatorā var veikt vairākus testus vienlaikus, tāpēc konteinera un tÄ«kla nosaukumiem ir jābÅ«t unikāliem. Turklāt vienlaikus var darboties arÄ« testi no dažādiem viena pakalpojuma atzariem, tāpēc nepietiek tikai ar to nosaukumu ierakstÄ«Å”anu katrā sastādÄ«Å”anas failā.

Šķīdums: skripts iestata mainīgajam COMPOSE_PROJECT_NAME unikālu vērtību.

Windows līdzekļi

Lietojot Docker operētājsistēmā Windows, vēlos norādÄ«t vairākas lietas, jo Ŕīs pieredzes ir svarÄ«gas, lai saprastu, kāpēc rodas kļūdas.

  1. Korpusa skriptiem konteinerā ir jābūt Linux rindu galotnēm.
    Apvalka CR simbols ir sintakses kļūda. Pēc kļūdas ziņojuma ir grÅ«ti pateikt, ka tas tā ir. Rediģējot Ŕādus skriptus operētājsistēmā Windows, jums ir nepiecieÅ”ams atbilstoÅ”s teksta redaktors. Turklāt versiju kontroles sistēmai jābÅ«t pareizi konfigurētai.

Lūk, kā git tiek konfigurēts:

git config core.autocrlf input

  1. Git-bash emulē standarta Linux mapes un, izsaucot exe failu (tostarp docker.exe), absolÅ«tos Linux ceļus aizstāj ar Windows ceļiem. Tomēr tas nav jēgas ceļiem, kas nav vietējā maŔīnā (vai ceļiem konteinerā). Å o darbÄ«bu nevar atspējot.

Å Ä·Ä«dums: pievienojiet papildu slÄ«psvÄ«tru ceļa sākumam: //bin, nevis /bin. Linux saprot Ŕādus ceļus; tam vairākas slÄ«psvÄ«tras ir tādas paÅ”as kā viena. Bet git-bash neatpazÄ«st Ŕādus ceļus un nemēģina tos pārveidot.

Žurnāla izvade

Veicot testus, es vēlētos redzēt žurnālus gan no Ņūmena, gan pārbaudāmā pakalpojuma. Tā kā Å”o žurnālu notikumi ir savstarpēji saistÄ«ti, to apvienoÅ”ana vienā konsolē ir daudz ērtāka nekā divi atseviŔķi faili. Ņūmens palaiž caur docker-compose palaist, un tā izvade nonāk konsolē. Atliek tikai pārliecināties, ka tur nonāk arÄ« pakalpojuma izvade.

Sākotnējais risinājums bija darÄ«t sastādÄ«tājs nav karoga -d, bet izmantojot čaulas iespējas, nosÅ«tiet Å”o procesu uz fonu:

docker-compose up <service> &

Tas darbojās, lÄ«dz bija nepiecieÅ”ams nosÅ«tÄ«t žurnālus no Docker uz treŔās puses pakalpojumu. sastādÄ«tājs pārtrauca izvadÄ«t žurnālus konsolei. Tomēr komanda strādāja docker piestiprināt.

Å Ä·Ä«dums:

docker attach --no-stdin ${COMPOSE_PROJECT_NAME}_<сŠµŃ€Š²Šøс>_1 &

Identifikatora konflikts testa iterāciju laikā

Testi tiek veikti vairākās iterācijās. Datubāze nav notīrīta. Ierakstiem datu bāzē ir unikāli ID. Ja pieprasījumos pierakstīsim konkrētus ID, otrajā atkārtojumā mēs iegūsim konfliktu.

Lai no tā izvairÄ«tos, vai nu ID ir jābÅ«t unikāliem, vai arÄ« ir jāizdzÄ“Å” visi pārbaudē izveidotie objekti. Dažus objektus nevar izdzēst prasÄ«bu dēļ.

Šķīdums: ģenerējiet GUID, izmantojot Postman skriptus.

var uuid = require('uuid');
var myid = uuid.v4();
pm.environment.set('myUUID', myid);

Pēc tam vaicājumā izmantojiet simbolu {{myUUID}}, kas tiks aizstāts ar mainīgā vērtību.

Sadarbība, izmantojot LocalStack

Ja pārbaudāmais pakalpojums lasa vai raksta SQS rindā, tad, lai to pārbaudītu, paŔam testam ir jādarbojas arī ar Ŕo rindu.

Šķīdums: pieprasījumi no pastnieka uz LocalStack.

AWS pakalpojumu API ir dokumentēta, ļaujot veikt vaicājumus bez SDK.

Ja pakalpojums raksta rindā, mēs to izlasām un pārbaudām ziņojuma saturu.

Ja pakalpojums sÅ«ta ziņojumus uz SNS, sagatavoÅ”anas posmā LocalStack arÄ« izveido rindu un abonē Å”o SNS tēmu. Tad viss atnāk uz iepriekÅ” aprakstÄ«to.

Ja pakalpojumam ir jānolasa ziņojums no rindas, tad iepriekŔējā testa darbÄ«bā mēs ierakstām Å”o ziņojumu rindā.

Tiek pārbaudīti HTTP pieprasījumi, kas nāk no testējamā mikropakalpojuma

Daži pakalpojumi darbojas, izmantojot HTTP, ar kaut ko citu, nevis AWS, un daži AWS līdzekļi nav ieviesti programmā LocalStack.

Å Ä·Ä«dums: Å”ajos gadÄ«jumos tas var palÄ«dzēt MockServer, kurā ir gatavs attēls Dokera centrmezgls. Paredzamos pieprasÄ«jumus un atbildes uz tiem konfigurē HTTP pieprasÄ«jums. API ir dokumentēta, tāpēc mēs veicam pieprasÄ«jumus no Pastnieka.

OAuth autentifikācijas un autorizācijas pārbaude

Mēs izmantojam OAuth un JSON tÄ«mekļa marÄ·ieri (JWT). Pārbaudei ir nepiecieÅ”ams OAuth nodroÅ”inātājs, kuru mēs varam palaist lokāli.

Visa mijiedarbÄ«ba starp pakalpojumu un OAuth nodroÅ”inātāju ir saistÄ«ta ar diviem pieprasÄ«jumiem: pirmkārt, tiek pieprasÄ«ta konfigurācija /.labi zināma/openid-configuration, un pēc tam konfigurācijas adresē tiek pieprasÄ«ta publiskā atslēga (JWKS). Tas viss ir statisks saturs.

Å Ä·Ä«dums: MÅ«su pārbaudes OAuth nodroÅ”inātājs ir statisks satura serveris un divi faili tajā. Tokens tiek Ä£enerēts vienreiz un pieŔķirts Git.

SignalR testēŔanas iezīmes

Pastnieks nedarbojas ar websockets. SignalR testēŔanai tika izveidots īpaŔs rīks.

SignalR klients var būt vairāk nekā tikai pārlūkprogramma. Tam ir klienta bibliotēka zem .NET Core. Klients, kas rakstīts .NET Core, izveido savienojumu, tiek autentificēts un gaida noteiktu ziņojumu secību. Ja tiek saņemts negaidīts ziņojums vai savienojums tiek zaudēts, klients iziet ar kodu 1. Ja tiek saņemts pēdējais gaidītais ziņojums, klients iziet ar kodu 0.

Ņūmens strādā vienlaicÄ«gi ar klientu. Vairāki klienti tiek palaisti, lai pārbaudÄ«tu, vai ziņojumi tiek piegādāti visiem, kam tie ir nepiecieÅ”ami.

Automātiska mikropakalpojumu pārbaude programmā Docker nepārtrauktai integrācijai

Lai palaistu vairākus klientus, izmantojiet opciju -- mērogs komandrindā docker-compose.

Pirms palaiŔanas Postman skripts gaida, līdz visi klienti izveido savienojumus.
Mēs jau esam saskāruÅ”ies ar savienojuma gaidÄ«Å”anas problēmu. Bet bija serveri, un Å”eit ir klients. Ir vajadzÄ«ga cita pieeja.

Å Ä·Ä«dums: klients konteinerā izmanto mehānismu VeselÄ«bas pārbaudelai informētu skriptu resursdatorā par tā statusu. Klients izveido failu noteiktā ceļā, piemēram, /healthcheck, tiklÄ«dz savienojums ir izveidots. HealthCheck skripts docker failā izskatās Ŕādi:

HEALTHCHECK --interval=3s CMD if [ ! -e /healthcheck ]; then false; fi

Komanda dokeris pārbauda Parāda konteinera parasto statusu, veselības stāvokli un izejas kodu.

Kad Ņūmens ir pabeidzis, skripts pārbauda, ā€‹ā€‹vai visi klienta konteineri ir pārtraukti ar kodu 0.

Laime pastāv

Kad bijām pārvarējuÅ”i iepriekÅ” aprakstÄ«tās grÅ«tÄ«bas, mums bija stabilas skrieÅ”anas testu kopums. Testos katrs pakalpojums darbojas kā viena vienÄ«ba, mijiedarbojoties ar datu bāzi un Amazon LocalStack.

Å ie testi aizsargā vairāk nekā 30 izstrādātāju komandu no kļūdām lietojumprogrammā ar sarežģītu vairāk nekā 10 mikropakalpojumu mijiedarbÄ«bu ar biežu izvietoÅ”anu.

Avots: www.habr.com

Pievieno komentāru