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
Å 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
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.
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
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.
Š
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
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
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
Å Ä·Ä«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.
- 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
- 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
OAuth autentifikÄcijas un autorizÄcijas pÄrbaude
MÄs izmantojam OAuth un
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.
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
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