Profi microwasanaethau yn awtomataidd yn Docker ar gyfer integreiddio parhaus

Mewn prosiectau sy'n ymwneud â datblygu pensaernïaeth microwasanaeth, mae CI / CD yn symud o'r categori cyfle dymunol i'r categori anghenraid brys. Mae profion awtomataidd yn rhan annatod o integreiddio parhaus, a gall ymagwedd gymwys tuag ato roi llawer o nosweithiau dymunol i'r tîm gyda theulu a ffrindiau. Fel arall, mae perygl na fydd y prosiect byth yn cael ei gwblhau.

Mae'n bosibl gorchuddio'r cod microservice cyfan gyda phrofion uned gyda gwrthrychau ffug, ond dim ond yn rhannol y mae hyn yn datrys y broblem ac yn gadael llawer o gwestiynau ac anawsterau, yn enwedig wrth brofi gwaith gyda data. Fel bob amser, y rhai mwyaf dybryd yw profi cysondeb data mewn cronfa ddata berthynol, profi gwaith gyda gwasanaethau cwmwl, a gwneud rhagdybiaethau anghywir wrth ysgrifennu gwrthrychau ffug.

Gellir datrys hyn i gyd ac ychydig mwy trwy brofi'r microwasanaeth cyfan mewn cynhwysydd Docker. Mantais ddiamheuol ar gyfer sicrhau dilysrwydd profion yw bod yr un delweddau Docker sy'n mynd i mewn i gynhyrchu yn cael eu profi.

Mae awtomeiddio’r dull hwn yn cyflwyno nifer o broblemau, a disgrifir yr ateb iddynt isod:

  • gwrthdaro tasgau cyfochrog yn yr un gwesteiwr docwr;
  • gwrthdaro dynodwyr yn y gronfa ddata yn ystod iteriadau prawf;
  • aros i ficrowasanaethau fod yn barod;
  • uno ac allbynnu logiau i systemau allanol;
  • profi ceisiadau HTTP sy'n mynd allan;
  • profi soced gwe (gan ddefnyddio SignalR);
  • profi dilysu ac awdurdodi OAuth.

Mae'r erthygl hon yn seiliedig ar fy araith yn SECR 2019. Felly i'r rhai sy'n rhy ddiog i ddarllen, dyma recordiad o'r araith.

Profi microwasanaethau yn awtomataidd yn Docker ar gyfer integreiddio parhaus

Yn yr erthygl hon byddaf yn dweud wrthych sut i ddefnyddio sgript i redeg y gwasanaeth dan brawf, cronfa ddata a gwasanaethau Amazon AWS yn Docker, yna profion ar Postman ac, ar ôl iddynt gael eu cwblhau, stopio a dileu'r cynwysyddion a grëwyd. Cynhelir profion bob tro y bydd y cod yn newid. Fel hyn, rydym yn sicrhau bod pob fersiwn yn gweithio'n gywir gyda chronfa ddata a gwasanaethau AWS.

Mae'r un sgript yn cael ei rhedeg gan y datblygwyr eu hunain ar eu byrddau gwaith Windows a chan weinydd CI Gitlab o dan Linux.

I'w gyfiawnhau, ni ddylai cyflwyno profion newydd olygu bod angen gosod offer ychwanegol naill ai ar gyfrifiadur y datblygwr nac ar y gweinydd lle mae'r profion yn cael eu rhedeg ar gomsiwn. Mae Docker yn datrys y broblem hon.

Rhaid i'r prawf redeg ar weinydd lleol am y rhesymau canlynol:

  • Nid yw'r rhwydwaith byth yn gwbl ddibynadwy. Allan o fil o geisiadau, gall un fethu;
    Yn yr achos hwn, ni fydd y prawf awtomatig yn gweithio, bydd y gwaith yn dod i ben, a bydd yn rhaid ichi edrych am y rheswm yn y logiau;
  • Ni chaniateir ceisiadau rhy aml gan rai gwasanaethau trydydd parti.

Yn ogystal, mae'n annymunol defnyddio'r stondin oherwydd:

  • Gellir torri stondin nid yn unig gan god drwg yn rhedeg arno, ond hefyd gan ddata na all y cod cywir ei brosesu;
  • Ni waeth pa mor galed y byddwn yn ceisio dychwelyd yr holl newidiadau a wnaed gan y prawf yn ystod y prawf ei hun yn ôl, gall rhywbeth fynd o'i le (fel arall, pam prawf?).

Am y prosiect a threfniadaeth prosesau

Datblygodd ein cwmni raglen we microservice yn rhedeg yn Docker yng nghwmwl Amazon AWS. Defnyddiwyd profion uned eisoes ar y prosiect, ond digwyddodd gwallau yn aml nad oedd y profion uned wedi'u canfod. Roedd angen profi microwasanaeth cyfan ynghyd â'r gronfa ddata a gwasanaethau Amazon.

Mae'r prosiect yn defnyddio proses integreiddio barhaus safonol, sy'n cynnwys profi'r microwasanaeth gyda phob ymrwymiad. Ar ôl aseinio tasg, mae'r datblygwr yn gwneud newidiadau i'r microwasanaeth, yn ei brofi â llaw ac yn rhedeg yr holl brofion awtomataidd sydd ar gael. Os oes angen, mae'r datblygwr yn newid y profion. Os na cheir unrhyw broblemau, gwneir ymrwymiad i'r gangen o'r mater hwn. Ar ôl pob ymrwymiad, cynhelir profion yn awtomatig ar y gweinydd. Mae uno i gangen gyffredin a lansio profion awtomatig arno yn digwydd ar ôl adolygiad llwyddiannus. Os bydd y profion ar y gangen a rennir yn pasio, caiff y gwasanaeth ei ddiweddaru'n awtomatig yn yr amgylchedd prawf ar Amazon Elastic Container Service (mainc). Mae'r stondin yn angenrheidiol ar gyfer pob datblygwr a phrofwr, ac nid yw'n ddoeth ei dorri. Mae profwyr yn yr amgylchedd hwn yn gwirio atgyweiriad neu nodwedd newydd trwy gynnal profion â llaw.

Pensaernïaeth prosiect

Profi microwasanaethau yn awtomataidd yn Docker ar gyfer integreiddio parhaus

Mae'r cais yn cynnwys mwy na deg gwasanaeth. Mae rhai ohonynt wedi'u hysgrifennu yn .NET Core a rhai yn NodeJs. Mae pob gwasanaeth yn rhedeg mewn cynhwysydd Docker yng Ngwasanaeth Cynhwysydd Elastig Amazon. Mae gan bob un ei gronfa ddata Postgres ei hun, ac mae gan rai Redis hefyd. Nid oes cronfeydd data cyffredin. Os oes angen yr un data ar sawl gwasanaeth, yna mae'r data hwn, pan fydd yn newid, yn cael ei drosglwyddo i bob un o'r gwasanaethau hyn trwy SNS (Gwasanaeth Hysbysu Syml) a SQS (Gwasanaeth Ciw Syml Amazon), ac mae'r gwasanaethau'n ei gadw yn eu cronfeydd data ar wahân eu hunain.

SQS a SNS

Mae SQS yn caniatáu ichi roi negeseuon mewn ciw a darllen negeseuon o'r ciw gan ddefnyddio protocol HTTPS.

Os bydd sawl gwasanaeth yn darllen un ciw, yna dim ond i un ohonynt y bydd pob neges yn cyrraedd. Mae hyn yn ddefnyddiol wrth redeg sawl achos o'r un gwasanaeth i ddosbarthu'r llwyth rhyngddynt.

Os ydych chi am i bob neges gael ei danfon i wasanaethau lluosog, rhaid i bob derbynnydd gael ei giw ei hun, ac mae angen SNS i ddyblygu negeseuon yn giwiau lluosog.

Yn SNS rydych chi'n creu pwnc ac yn tanysgrifio iddo, er enghraifft, ciw SQS. Gallwch anfon negeseuon i'r pwnc. Yn yr achos hwn, anfonir y neges i bob ciw sy'n tanysgrifio i'r pwnc hwn. Nid oes gan SNS ddull ar gyfer darllen negeseuon. Os bydd angen i chi ddarganfod beth sy'n cael ei anfon at SNS yn ystod dadfygio neu brofi, gallwch greu ciw SQS, tanysgrifio i'r pwnc a ddymunir a darllen y ciw.

Profi microwasanaethau yn awtomataidd yn Docker ar gyfer integreiddio parhaus

Porth API

Nid yw'r rhan fwyaf o wasanaethau ar gael yn uniongyrchol o'r Rhyngrwyd. Ceir mynediad trwy API Gateway, sy'n gwirio hawliau mynediad. Dyma ein gwasanaeth hefyd, ac mae profion ar ei gyfer hefyd.

Hysbysiadau amser real

Mae'r cais yn defnyddio SignalRi ddangos hysbysiadau amser real i'r defnyddiwr. Gweithredir hyn yn y gwasanaeth hysbysu. Mae'n hygyrch yn uniongyrchol o'r Rhyngrwyd ac mae ei hun yn gweithio gydag OAuth, oherwydd daeth yn anymarferol i adeiladu cefnogaeth ar gyfer socedi Gwe i Gateway, o'i gymharu ag integreiddio OAuth a'r gwasanaeth hysbysu.

Dull Profi Adnabyddus

Mae profion uned yn disodli pethau fel y gronfa ddata gyda gwrthrychau ffug. Os yw microwasanaeth, er enghraifft, yn ceisio creu cofnod mewn tabl gydag allwedd dramor, ac nad yw'r cofnod y mae'r allwedd honno'n cyfeirio ato yn bodoli, yna ni ellir cwblhau'r cais. Ni all profion uned ganfod hyn.

В erthygl gan Microsoft Cynigir defnyddio cronfa ddata er cof a gweithredu gwrthrychau ffug.

Mae cronfa ddata er cof yn un o'r DBMS a gefnogir gan y Fframwaith Endidau. Fe'i crëwyd yn benodol ar gyfer profi. Mae data mewn cronfa ddata o'r fath yn cael ei storio dim ond nes bod y broses o'i ddefnyddio yn dod i ben. Nid oes angen creu tablau ac nid yw'n gwirio cywirdeb data.

Mae gwrthrychau ffug yn modelu'r dosbarth y maent yn ei ddisodli dim ond i'r graddau bod datblygwr y prawf yn deall sut mae'n gweithio.

Nid yw sut i gael Postgres i gychwyn a pherfformio mudo yn awtomatig pan fyddwch chi'n rhedeg prawf wedi'i nodi yn erthygl Microsoft. Mae fy ateb yn gwneud hyn ac, yn ogystal, nid yw'n ychwanegu unrhyw god yn benodol ar gyfer profion i'r microwasanaeth ei hun.

Gadewch i ni symud ymlaen at yr ateb

Yn ystod y broses ddatblygu, daeth yn amlwg nad oedd profion uned yn ddigon i ddod o hyd i'r holl broblemau mewn modd amserol, felly penderfynwyd mynd i'r afael â'r mater hwn o ongl wahanol.

Sefydlu amgylchedd prawf

Y dasg gyntaf yw defnyddio amgylchedd prawf. Y camau sydd eu hangen i redeg microwasanaeth:

  • Ffurfweddu'r gwasanaeth dan brawf ar gyfer yr amgylchedd lleol, nodi'r manylion ar gyfer cysylltu â'r gronfa ddata ac AWS yn y newidynnau amgylchedd;
  • Dechreuwch Postgres a pherfformiwch y mudo trwy redeg Liquibase.
    Mewn DBMSs perthynol, cyn ysgrifennu data i'r gronfa ddata, mae angen i chi greu sgema data, mewn geiriau eraill, tablau. Wrth ddiweddaru cais, rhaid dod â thablau i'r ffurflen a ddefnyddir gan y fersiwn newydd, ac, yn ddelfrydol, heb golli data. Yr enw ar hyn yw mudo. Mae creu tablau mewn cronfa ddata wag i ddechrau yn achos arbennig o fudo. Gellir ymgorffori ymfudiad yn y cais ei hun. Mae gan .NET a NodeJS fframweithiau mudo. Yn ein hachos ni, am resymau diogelwch, mae microwasanaethau yn cael eu hamddifadu o'r hawl i newid y sgema data, ac mae'r mudo yn cael ei berfformio gan ddefnyddio Liquibase.
  • Lansio Amazon LocalStack. Mae hwn yn weithrediad o wasanaethau AWS i'w rhedeg gartref. Mae delwedd barod ar gyfer LocalStack ar Docker Hub.
  • Rhedeg y sgript i greu'r endidau angenrheidiol yn LocalStack. Mae sgriptiau cregyn yn defnyddio CLI AWS.

Defnyddir ar gyfer profi ar y prosiect Postmon. Roedd yn bodoli o'r blaen, ond fe'i lansiwyd â llaw a phrofwyd cymhwysiad a oedd eisoes yn cael ei ddefnyddio ar y stondin. Mae'r offeryn hwn yn eich galluogi i wneud ceisiadau HTTP(S) mympwyol a gwirio a yw'r ymatebion yn cyd-fynd â disgwyliadau. Cyfunir ymholiadau yn gasgliad, a gellir rhedeg y casgliad cyfan.

Profi microwasanaethau yn awtomataidd yn Docker ar gyfer integreiddio parhaus

Sut mae'r prawf awtomatig yn gweithio?

Yn ystod y prawf, mae popeth yn gweithio yn Docker: y gwasanaeth dan brawf, Postgres, yr offeryn mudo, a Postman, neu yn hytrach ei fersiwn consol - Newman.

Mae Docker yn datrys nifer o broblemau:

  • Annibyniaeth o gyfluniad gwesteiwr;
  • Gosod dibyniaethau: Mae Docker yn lawrlwytho delweddau o Docker Hub;
  • Dychwelyd y system i'w chyflwr gwreiddiol: tynnu'r cynwysyddion yn unig.

Docker-gyfansoddi yn uno cynwysyddion i rwydwaith rhithwir, wedi'i ynysu o'r Rhyngrwyd, lle mae cynwysyddion yn dod o hyd i'w gilydd yn ôl enwau parth.

Mae'r prawf yn cael ei reoli gan sgript cragen. I redeg y prawf ar Windows rydym yn defnyddio git-bash. Felly, mae un sgript yn ddigon ar gyfer Windows a Linux. Mae Git a Docker yn cael eu gosod gan bob datblygwr ar y prosiect. Wrth osod Git ar Windows, mae git-bash wedi'i osod, felly mae gan bawb hynny hefyd.

Mae'r sgript yn cyflawni'r camau canlynol:

  • Adeiladu delweddau docwyr
    docker-compose build
  • Lansio'r gronfa ddata a LocalStack
    docker-compose up -d <контейнер>
  • Mudo cronfa ddata a pharatoi LocalStack
    docker-compose run <контейнер>
  • Lansio'r gwasanaeth dan brawf
    docker-compose up -d <сервис>
  • Rhedeg y prawf (Newman)
  • Stopio pob cynhwysydd
    docker-compose down
  • Canlyniadau postio yn Slack
    Rydyn ni'n cael sgwrs lle mae negeseuon gyda marc gwirio gwyrdd neu groes goch a dolen i'r log yn mynd.

Mae'r delweddau Docker canlynol yn rhan o'r camau hyn:

  • Mae'r gwasanaeth sy'n cael ei brofi yr un ddelwedd ag ar gyfer cynhyrchu. Mae'r ffurfweddiad ar gyfer y prawf trwy newidynnau amgylchedd.
  • Ar gyfer Postgres, Redis a LocalStack, defnyddir delweddau parod o Docker Hub. Mae yna hefyd ddelweddau parod ar gyfer Liquibase a Newman. Rydym yn adeiladu ein un ni ar eu sgerbwd, gan ychwanegu ein ffeiliau yno.
  • I baratoi LocalStack, rydych chi'n defnyddio delwedd AWS CLI parod ac yn creu delwedd sy'n cynnwys sgript yn seiliedig arno.

Gan ddefnyddio gyfrolau, nid oes rhaid i chi adeiladu delwedd Docker dim ond i ychwanegu ffeiliau at y cynhwysydd. Fodd bynnag, nid yw cyfeintiau yn addas ar gyfer ein hamgylchedd oherwydd bod tasgau Gitlab CI eu hunain yn rhedeg mewn cynwysyddion. Gallwch reoli Docker o gynhwysydd o'r fath, ond mae cyfrolau yn gosod ffolderau o'r system westeiwr yn unig, ac nid o gynhwysydd arall.

Materion y gallech ddod ar eu traws

Aros am barodrwydd

Pan fydd cynhwysydd gyda gwasanaeth yn rhedeg, nid yw hyn yn golygu ei fod yn barod i dderbyn cysylltiadau. Rhaid i chi aros i'r cysylltiad barhau.

Weithiau mae'r broblem hon yn cael ei datrys gan ddefnyddio sgript aros-am-it.sh, sy'n aros am gyfle i sefydlu cysylltiad TCP. Fodd bynnag, efallai y bydd LocalStack yn taflu gwall 502 Bad Gateway. Yn ogystal, mae'n cynnwys llawer o wasanaethau, ac os yw un ohonynt yn barod, nid yw hyn yn dweud dim am y lleill.

penderfyniad: Sgriptiau darparu LocalStack sy'n aros am ymateb 200 gan SQS a SNS.

Gwrthdaro Tasg Cyfochrog

Gall profion lluosog redeg ar yr un pryd ar yr un gwesteiwr Docker, felly mae'n rhaid i enwau cynwysyddion a rhwydwaith fod yn unigryw. Ar ben hynny, gall profion o wahanol ganghennau o'r un gwasanaeth hefyd redeg ar yr un pryd, felly nid yw'n ddigon ysgrifennu eu henwau ym mhob ffeil gyfansoddi.

penderfyniad: Mae'r sgript yn gosod y newidyn COMPOSE_PROJECT_NAME i werth unigryw.

Nodweddion Windows

Mae yna nifer o bethau yr wyf am eu nodi wrth ddefnyddio Docker ar Windows, gan fod y profiadau hyn yn bwysig i ddeall pam mae gwallau'n digwydd.

  1. Rhaid i sgriptiau cregyn mewn cynhwysydd gael terfyniadau llinell Linux.
    Mae'r symbol CR cregyn yn wall cystrawen. Mae'n anodd dweud o'r neges gwall bod hyn yn wir. Wrth olygu sgriptiau o'r fath ar Windows, mae angen golygydd testun cywir arnoch. Yn ogystal, rhaid i'r system rheoli fersiwn gael ei ffurfweddu'n iawn.

Dyma sut mae git wedi'i ffurfweddu:

git config core.autocrlf input

  1. Mae Git-bash yn efelychu ffolderi Linux safonol ac, wrth alw ffeil exe (gan gynnwys docker.exe), yn disodli llwybrau Linux absoliwt â llwybrau Windows. Fodd bynnag, nid yw hyn yn gwneud synnwyr i lwybrau nad ydynt ar y peiriant lleol (neu lwybrau mewn cynhwysydd). Ni all yr ymddygiad hwn fod yn anabl.

penderfyniad: ychwanegu slaes ychwanegol ar ddechrau’r llwybr: //bin yn lle /bin. Mae Linux yn deall llwybrau o'r fath; ar ei gyfer, mae sawl toriad yr un peth ag un. Ond nid yw git-bash yn adnabod llwybrau o'r fath ac nid yw'n ceisio eu trosi.

Allbwn log

Wrth redeg profion, hoffwn weld logiau o Newman a'r gwasanaeth yn cael eu profi. Gan fod digwyddiadau'r logiau hyn yn rhyng-gysylltiedig, mae eu cyfuno mewn un consol yn llawer mwy cyfleus na dwy ffeil ar wahân. Newman yn lansio trwy docker-compose run, ac felly mae ei allbwn yn dod i ben yn y consol. Y cyfan sydd ar ôl yw gwneud yn siŵr bod allbwn y gwasanaeth yn mynd yno hefyd.

Yr ateb gwreiddiol oedd gwneud docker-compose i fyny dim baner -d, ond gan ddefnyddio'r galluoedd cragen, anfonwch y broses hon i'r cefndir:

docker-compose up <service> &

Gweithiodd hyn nes bod angen anfon logiau o Docker i wasanaeth trydydd parti. docker-compose i fyny stopio allbynnu logiau i'r consol. Fodd bynnag, gweithiodd y tîm docker atodi.

penderfyniad:

docker attach --no-stdin ${COMPOSE_PROJECT_NAME}_<сервис>_1 &

Gwrthdaro dynodwyr yn ystod iteriadau prawf

Mae profion yn cael eu rhedeg mewn sawl iteriad. Nid yw'r gronfa ddata wedi'i chlirio. Mae gan gofnodion yn y gronfa ddata IDau unigryw. Os byddwn yn ysgrifennu IDau penodol mewn ceisiadau, byddwn yn cael gwrthdaro yn yr ail iteriad.

Er mwyn ei osgoi, rhaid i'r IDau fod yn unigryw, neu mae'n rhaid dileu pob gwrthrych a grëwyd gan y prawf. Ni ellir dileu rhai gwrthrychau oherwydd gofynion.

penderfyniad: cynhyrchu GUIDs gan ddefnyddio sgriptiau Postman.

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

Yna defnyddiwch y symbol yn yr ymholiad {{myUUID}}, a fydd yn cael ei ddisodli gan werth y newidyn.

Cydweithio trwy LocalStack

Os yw'r gwasanaeth sy'n cael ei brofi yn darllen neu'n ysgrifennu at giw SQS, yna i wirio hyn, rhaid i'r prawf ei hun weithio gyda'r ciw hwn hefyd.

penderfyniad: ceisiadau gan Postman i LocalStack.

Mae API gwasanaethau AWS wedi'i ddogfennu, gan ganiatáu i ymholiadau gael eu gwneud heb SDK.

Os yw gwasanaeth yn ysgrifennu at giw, yna rydym yn ei ddarllen ac yn gwirio cynnwys y neges.

Os yw'r gwasanaeth yn anfon negeseuon i SNS, ar y cam paratoi mae LocalStack hefyd yn creu ciw ac yn tanysgrifio i'r pwnc SNS hwn. Yna mae'r cyfan yn dibynnu ar yr hyn a ddisgrifiwyd uchod.

Os oes angen i'r gwasanaeth ddarllen neges o'r ciw, yna yn y cam prawf blaenorol rydym yn ysgrifennu'r neges hon i'r ciw.

Profi ceisiadau HTTP sy'n tarddu o'r microwasanaeth dan brawf

Mae rhai gwasanaethau'n gweithio dros HTTP gyda rhywbeth heblaw AWS, ac nid yw rhai nodweddion AWS yn cael eu gweithredu yn LocalStack.

penderfyniad: yn yr achosion hyn gall helpu FfugGweinydd, sydd â llun parod yn Hwb dociwr. Mae ceisiadau ac ymatebion disgwyliedig yn cael eu ffurfweddu gan gais HTTP. Mae'r API wedi'i ddogfennu, felly rydym yn gwneud ceisiadau gan Postman.

Profi Dilysu ac Awdurdodi OAuth

Defnyddiwn OAuth a Tocynnau Gwe JSON (JWT). Mae'r prawf yn gofyn am ddarparwr OAuth y gallwn ei redeg yn lleol.

Daw'r holl ryngweithio rhwng y gwasanaeth a darparwr OAuth i ddau gais: yn gyntaf, gofynnir am y ffurfweddiad /.well-known/openid-configuration, ac yna gofynnir am yr allwedd gyhoeddus (JWKS) yn y cyfeiriad o'r ffurfweddiad. Mae hyn i gyd yn cynnwys statig.

penderfyniad: Mae ein darparwr prawf OAuth yn weinydd cynnwys statig a dwy ffeil arno. Mae'r tocyn yn cael ei gynhyrchu unwaith ac wedi'i ymrwymo i Git.

Nodweddion profi SignalR

Nid yw postmon yn gweithio gyda gwe-socedi. Crëwyd teclyn arbennig i brofi SignalR.

Gall cleient SignalR fod yn fwy na porwr yn unig. Mae llyfrgell cleient ar ei gyfer o dan .NET Core. Mae'r cleient, a ysgrifennwyd yn .NET Core, yn sefydlu cysylltiad, yn cael ei ddilysu, ac yn aros am ddilyniant penodol o negeseuon. Os derbynnir neges annisgwyl neu os collir y cysylltiad, mae'r cleient yn gadael gyda chod o 1. Os derbynnir y neges ddisgwyliedig ddiwethaf, mae'r cleient yn gadael gyda chod o 0.

Mae Newman yn gweithio gyda'r cleient ar yr un pryd. Mae nifer o gleientiaid yn cael eu lansio i wirio bod negeseuon yn cael eu dosbarthu i bawb sydd eu hangen.

Profi microwasanaethau yn awtomataidd yn Docker ar gyfer integreiddio parhaus

I redeg cleientiaid lluosog defnyddiwch yr opsiwn --graddfa ar y llinell orchymyn docker-compose.

Cyn rhedeg, mae sgript Postman yn aros i bob cleient sefydlu cysylltiadau.
Rydym eisoes wedi dod ar draws y broblem o aros am gysylltiad. Ond roedd gweinyddwyr, a dyma'r cleient. Mae angen ymagwedd wahanol.

penderfyniad: mae'r cleient yn y cynhwysydd yn defnyddio'r mecanwaith Gwiriad Iechydi hysbysu'r sgript ar y gwesteiwr am ei statws. Mae'r cleient yn creu ffeil ar lwybr penodol, dyweder /gwiriad iechyd, cyn gynted ag y bydd y cysylltiad wedi'i sefydlu. Mae'r sgript HealthCheck yn y ffeil docwr yn edrych fel hyn:

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

Tîm archwiliad docwr Yn dangos y statws arferol, statws iechyd a chod ymadael ar gyfer y cynhwysydd.

Ar ôl i Newman gwblhau, mae'r sgript yn gwirio bod yr holl gynwysyddion gyda'r cleient wedi dod i ben, gyda chod 0.

Mae Happinnes yn bodoli

Ar ôl i ni oresgyn yr anawsterau a ddisgrifiwyd uchod, cawsom set o brofion rhedeg sefydlog. Mewn profion, mae pob gwasanaeth yn gweithio fel un uned, gan ryngweithio â'r gronfa ddata ac Amazon LocalStack.

Mae'r profion hyn yn amddiffyn tîm o 30+ o ddatblygwyr rhag gwallau mewn cymhwysiad sy'n rhyngweithio'n gymhleth â mwy na 10 meicrowasanaeth gyda defnydd aml.

Ffynhonnell: hab.com

Ychwanegu sylw