Awtomatikong pagsulay sa mga microservice sa Docker alang sa padayon nga panagsama

Sa mga proyekto nga may kalabutan sa pagpalambo sa microservice nga arkitektura, ang CI/CD mibalhin gikan sa kategoriya sa usa ka makapahimuot nga oportunidad ngadto sa kategoriya sa usa ka dinalian nga panginahanglan. Ang awtomatik nga pagsulay usa ka hinungdanon nga bahin sa padayon nga panagsama, usa ka takos nga pamaagi diin makahatag ang koponan sa daghang mga maayong gabii kauban ang pamilya ug mga higala. Kung dili, ang proyekto peligro nga dili mahuman.

Posible nga tabunan ang tibuuk nga code sa microservice nga adunay mga pagsulay sa yunit nga adunay mga butang nga gibugalbugalan, apan kini bahin lamang nga nakasulbad sa problema ug nagbilin daghang mga pangutana ug kalisud, labi na kung ang pagsulay sa trabaho sa datos. Sama sa kanunay, ang labing dinalian mao ang pagsulay sa pagkamakanunayon sa datos sa usa ka relational database, pagsulay sa trabaho sa mga serbisyo sa panganod, ug paghimo sa dili husto nga mga pangagpas sa pagsulat sa mga butang nga gibugalbugalan.

Kining tanan ug gamay pa mahimong masulbad pinaagi sa pagsulay sa tibuok microservice sa usa ka sudlanan sa Docker. Ang usa ka walay duhaduha nga bentaha alang sa pagsiguro sa kabalido sa mga pagsulay mao nga ang parehas nga mga imahe sa Docker nga moadto sa produksiyon gisulayan.

Ang pag-automate niini nga pamaagi nagpresentar sa daghang mga problema, ang solusyon nga gihulagway sa ubos:

  • mga panagsumpaki sa parehas nga mga buluhaton sa parehas nga host sa docker;
  • mga panagsumpaki sa identifier sa database sa panahon sa pagsulay nga mga pag-usab;
  • naghulat alang sa microservice nga andam;
  • paghiusa ug pag-output sa mga troso sa mga eksternal nga sistema;
  • pagsulay sa nanggawas nga HTTP nga mga hangyo;
  • web socket testing (gamit ang SignalR);
  • pagsulay sa OAuth authentication ug pagtugot.

Kini nga artikulo gibase sa akong sinultihan sa SECR 2019. So sa mga tapulan mubasa, ania ang usa ka pagrekord sa pakigpulong.

Awtomatikong pagsulay sa mga microservice sa Docker alang sa padayon nga panagsama

Sa kini nga artikulo isulti ko kanimo kung giunsa ang paggamit sa usa ka script aron mapadagan ang serbisyo sa ilawom sa pagsulay, usa ka database ug mga serbisyo sa Amazon AWS sa Docker, dayon pagsulay sa Postman ug, pagkahuman makompleto, hunong ug tangtangon ang mga nabuhat nga sulud. Ang mga pagsulay gihimo sa matag higayon nga mausab ang code. Niining paagiha, among gisiguro nga ang matag bersyon nagtrabaho sa husto sa AWS database ug mga serbisyo.

Ang parehas nga script gipadagan sa mga developer mismo sa ilang mga desktop sa Windows ug sa Gitlab CI server sa ilawom sa Linux.

Aron mahatagan og kaangayan, ang pagpaila sa bag-ong mga pagsulay dili kinahanglan nga mag-install ug dugang nga mga himan bisan sa kompyuter sa developer o sa server diin ang mga pagsulay gipadagan sa usa ka commit. Gisulbad ni Docker kini nga problema.

Ang pagsulay kinahanglang modagan sa lokal nga server tungod sa mosunod nga mga rason:

  • Ang network dili gayud hingpit nga kasaligan. Gikan sa usa ka libo nga mga hangyo, ang usa mahimong mapakyas;
    Sa kini nga kaso, ang awtomatik nga pagsulay dili molihok, ang trabaho mohunong, ug kinahanglan nimo pangitaon ang hinungdan sa mga troso;
  • Ang kanunay nga mga hangyo dili gitugotan sa pipila nga mga serbisyo sa ikatulo nga partido.

Dugang pa, dili maayo nga gamiton ang stand tungod kay:

  • Ang usa ka baruganan mahimong mabuak dili lamang sa dili maayo nga code nga nagdagan niini, apan usab sa datos nga dili maproseso sa husto nga code;
  • Bisag unsa pa ka lisud nga atong sulayan nga ibalik ang tanan nga mga pagbag-o nga gihimo sa pagsulay sa panahon sa pagsulay mismo, adunay mahimo nga sayup (kung dili, nganong pagsulay?).

Mahitungod sa proyekto ug proseso nga organisasyon

Naghimo ang among kompanya og microservice web application nga nagdagan sa Docker sa Amazon AWS cloud. Ang mga pagsulay sa yunit gigamit na sa proyekto, apan kanunay nga adunay mga sayup nga wala makit-an sa mga pagsulay sa yunit. Kinahanglan nga sulayan ang usa ka tibuuk nga microservice kauban ang database ug serbisyo sa Amazon.

Ang proyekto naggamit sa usa ka sumbanan nga padayon nga proseso sa panagsama, nga naglakip sa pagsulay sa microservice sa matag pasalig. Pagkahuman sa pag-assign sa usa ka buluhaton, ang developer naghimo og mga pagbag-o sa microservice, gisulayan kini nga mano-mano ug gipadagan ang tanan nga magamit nga awtomatiko nga mga pagsulay. Kung gikinahanglan, usbon sa developer ang mga pagsulay. Kung walay makit-an nga mga problema, usa ka pasalig ang gihimo sa sanga niini nga isyu. Pagkahuman sa matag pasalig, ang mga pagsulay awtomatiko nga gipadagan sa server. Ang paghiusa sa usa ka sagad nga sanga ug paglansad sa mga awtomatikong pagsulay niini mahitabo pagkahuman sa malampuson nga pagrepaso. Kung ang mga pagsulay sa gipaambit nga sanga moagi, ang serbisyo awtomatiko nga na-update sa palibot sa pagsulay sa Amazon Elastic Container Service (bench). Ang baruganan gikinahanglan alang sa tanan nga mga developers ug mga tester, ug kini dili advisable sa paglapas niini. Ang mga tester niini nga palibot nagsusi sa usa ka pag-ayo o usa ka bag-ong bahin pinaagi sa paghimo sa mga manual nga pagsulay.

Arkitektura sa proyekto

Awtomatikong pagsulay sa mga microservice sa Docker alang sa padayon nga panagsama

Ang aplikasyon naglangkob sa labaw pa sa napulo ka mga serbisyo. Ang uban niini gisulat sa .NET Core ug ang uban sa NodeJs. Ang matag serbisyo nagdagan sa usa ka sudlanan sa Docker sa Amazon Elastic Container Service. Ang matag usa adunay kaugalingon nga database sa Postgres, ug ang uban usab adunay Redis. Walay komon nga mga database. Kung daghang mga serbisyo ang nanginahanglan parehas nga datos, nan kini nga datos, kung kini magbag-o, gipasa sa matag usa niini nga mga serbisyo pinaagi sa SNS (Simple Notification Service) ug SQS (Amazon Simple Queue Service), ug ang mga serbisyo nagtipig niini sa ilang kaugalingon nga bulag nga mga database.

SQS ug SNS

Gitugotan ka sa SQS nga ibutang ang mga mensahe sa usa ka pila ug basahon ang mga mensahe gikan sa pila gamit ang protocol sa HTTPS.

Kung daghang mga serbisyo ang nagbasa sa usa ka pila, nan ang matag mensahe moabut ra sa usa kanila. Mapuslanon kini kung nagpadagan sa daghang mga higayon sa parehas nga serbisyo aron maapod-apod ang load sa taliwala nila.

Kung gusto nimo nga ang matag mensahe ipadala sa daghang mga serbisyo, ang matag nakadawat kinahanglan adunay kaugalingon nga pila, ug ang SNS gikinahanglan aron madoble ang mga mensahe sa daghang mga pila.

Sa SNS maghimo ka usa ka hilisgutan ug mag-subscribe niini, pananglitan, usa ka pila sa SQS. Mahimo nimong ipadala ang mga mensahe sa hilisgutan. Sa kini nga kaso, ang mensahe gipadala sa matag pila nga naka-subscribe sa kini nga hilisgutan. Ang SNS walay paagi sa pagbasa sa mga mensahe. Kung sa panahon sa pag-debug o pagsulay kinahanglan nimo nga mahibal-an kung unsa ang gipadala sa SNS, mahimo ka maghimo usa ka pila sa SQS, i-subscribe kini sa gusto nga hilisgutan ug basaha ang pila.

Awtomatikong pagsulay sa mga microservice sa Docker alang sa padayon nga panagsama

Gateway sa API

Kadaghanan sa mga serbisyo dili direktang ma-access gikan sa Internet. Ang pag-access pinaagi sa API Gateway, nga nagsusi sa mga katungod sa pag-access. Kini usab ang among serbisyo, ug adunay mga pagsulay usab alang niini.

Real-time nga mga pahibalo

Ang aplikasyon naggamit SignalRaron ipakita ang real-time nga mga pahibalo sa tiggamit. Gipatuman kini sa serbisyo sa pagpahibalo. Ma-access kini direkta gikan sa Internet ug mismo nagtrabaho kauban ang OAuth, tungod kay nahimo’g dili praktikal ang paghimo og suporta alang sa mga socket sa Web sa Gateway, kung itandi sa paghiusa sa OAuth ug serbisyo sa pagpahibalo.

Nailhan nga Pamaagi sa Pagsulay

Gipulihan sa mga pagsulay sa yunit ang mga butang sama sa database nga adunay mga butang nga gibugalbugalan. Kung ang usa ka microservice, pananglitan, mosulay sa paghimo og usa ka rekord sa usa ka lamesa nga adunay usa ka langyaw nga yawe, ug ang rekord nga gitumong sa maong yawe wala maglungtad, nan ang hangyo dili makompleto. Ang mga pagsulay sa yunit dili makamatikod niini.

Π’ artikulo gikan sa Microsoft Gisugyot nga gamiton ang usa ka in-memory database ug ipatuman ang mga mock object.

Ang in-memory database maoy usa sa mga DBMS nga gisuportahan sa Entity Framework. Gibuhat kini ilabi na alang sa pagsulay. Ang datos sa ingon nga database gitipigan lamang hangtud nga ang proseso sa paggamit niini matapos. Wala kini magkinahanglan og paghimo og mga lamesa ug wala magsusi sa integridad sa datos.

Ang mga butang nga gibugalbugalan nagmodelo sa klase nga ilang gipulihan lamang sa gidak-on nga nasabtan sa developer sa pagsulay kung giunsa kini paglihok.

Giunsa pagkuha ang mga Postgres nga awtomatiko nga magsugod ug maghimo mga paglalin kung nagpadagan ka usa ka pagsulay wala gitino sa artikulo sa Microsoft. Gihimo kini sa akong solusyon ug, dugang pa, wala magdugang bisan unsang code nga espesipiko alang sa mga pagsulay sa microservice mismo.

Mopadayon ta sa solusyon

Atol sa proseso sa pag-uswag, nahimo nga tin-aw nga ang mga pagsulay sa yunit dili igo aron makit-an ang tanan nga mga problema sa usa ka tukma nga panahon, mao nga nakahukom nga duolon kini nga isyu gikan sa lainlaing anggulo.

Pagpahimutang sa usa ka palibot sa pagsulay

Ang una nga buluhaton mao ang pag-deploy sa usa ka palibot sa pagsulay. Mga lakang nga gikinahanglan sa pagpadagan sa usa ka microservice:

  • I-configure ang serbisyo nga gisulayan alang sa lokal nga palibot, ipiho ang mga detalye alang sa pagkonektar sa database ug AWS sa mga variable sa palibot;
  • Sugdi ang Postgres ug ipahigayon ang paglalin pinaagi sa pagpadagan sa Liquibase.
    Sa mga relational nga DBMS, sa dili pa isulat ang datos sa database, kinahanglan nimo nga maghimo usa ka schema sa datos, sa ato pa, mga lamesa. Kung nag-update sa usa ka aplikasyon, ang mga lamesa kinahanglan nga dad-on sa porma nga gigamit sa bag-ong bersyon, ug, labing maayo, nga dili mawala ang datos. Gitawag kini nga paglalin. Ang paghimo og mga lamesa sa una nga walay sulod nga database usa ka espesyal nga kaso sa paglalin. Ang paglalin mahimong matukod sa aplikasyon mismo. Parehong .NET ug NodeJS adunay migration frameworks. Sa among kaso, alang sa mga hinungdan sa seguridad, ang mga microservice gihikawan sa katungod sa pag-usab sa schema sa datos, ug ang paglalin gihimo gamit ang Liquibase.
  • Ilunsad ang Amazon LocalStack. Kini usa ka pagpatuman sa mga serbisyo sa AWS nga modagan sa balay. Adunay usa ka andam nga gihimo nga imahe alang sa LocalStack sa Docker Hub.
  • Pagdalagan ang script aron mahimo ang gikinahanglan nga mga entidad sa LocalStack. Ang mga script sa Shell naggamit sa AWS CLI.

Gigamit alang sa pagsulay sa proyekto Postman. Naglungtad na kini kaniadto, apan gilunsad kini nga mano-mano ug gisulayan ang usa ka aplikasyon nga na-deploy na sa baroganan. Kini nga himan nagtugot kanimo sa paghimo og arbitraryong HTTP(S) nga mga hangyo ug pagsusi kon ang mga tubag mohaum ba sa mga gipaabot. Ang mga pangutana gihiusa ngadto sa usa ka koleksyon, ug ang tibuok nga koleksyon mahimong madalagan.

Awtomatikong pagsulay sa mga microservice sa Docker alang sa padayon nga panagsama

Giunsa pagtrabaho ang awtomatik nga pagsulay?

Atol sa pagsulay, ang tanan nagtrabaho sa Docker: ang serbisyo nga gisulayan, Postgres, ang himan sa paglalin, ug Postman, o hinoon ang bersyon sa console niini - Newman.

Gisulbad ni Docker ang daghang mga problema:

  • Kagawasan gikan sa pag-configure sa host;
  • Pag-instalar sa mga dependency: Ang Docker nag-download sa mga imahe gikan sa Docker Hub;
  • Ibalik ang sistema sa orihinal nga kahimtang niini: pagtangtang lang sa mga sudlanan.

Docker-compose naghiusa sa mga sudlanan ngadto sa usa ka virtual nga network, nahimulag sa Internet, diin ang mga sudlanan mangita sa usag usa pinaagi sa mga ngalan sa domain.

Ang pagsulay gikontrol sa usa ka script sa shell. Sa pagdagan sa pagsulay sa Windows gigamit namon ang git-bash. Busa, ang usa ka script igo na alang sa Windows ug Linux. Git ug Docker gi-install sa tanan nga mga developer sa proyekto. Kung gi-install ang Git sa Windows, gi-install ang git-bash, mao nga ang tanan adunay usab.

Ang script naghimo sa mosunod nga mga lakang:

  • Pagtukod og mga imahe sa docker
    docker-compose build
  • Paglunsad sa database ug LocalStack
    docker-compose up -d <ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€>
  • Paglalin sa database ug pag-andam sa LocalStack
    docker-compose run <ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€>
  • Paglunsad sa serbisyo ubos sa pagsulay
    docker-compose up -d <сСрвис>
  • Pagdagan sa pagsulay (Newman)
  • Paghunong sa tanan nga mga sudlanan
    docker-compose down
  • Pag-post sa mga resulta sa Slack
    Adunay kami usa ka chat diin ang mga mensahe nga adunay berde nga marka sa tsek o pula nga krus ug usa ka link sa log moadto.

Ang mosunud nga mga imahe sa Docker nalangkit sa kini nga mga lakang:

  • Ang serbisyo nga gisulayan parehas nga imahe alang sa produksiyon. Ang configuration alang sa pagsulay kay pinaagi sa environment variables.
  • Alang sa Postgres, Redis ug LocalStack, gigamit ang mga andam nga imahe gikan sa Docker Hub. Adunay usab andam nga mga imahe alang sa Liquibase ug Newman. Gitukod namo ang amon sa ilang kalabera, gidugang ang among mga file didto.
  • Aron maandam ang LocalStack, mogamit ka usa ka andam nga gihimo nga imahe sa AWS CLI ug maghimo usa ka imahe nga adunay sulud nga script nga gibase niini.

Paggamit mga volume, dili nimo kinahanglan nga maghimo usa ka imahe sa Docker aron makadugang mga file sa sulud. Bisan pa, ang mga volume dili angay alang sa atong palibot tungod kay ang mga buluhaton sa Gitlab CI mismo nagdagan sa mga sudlanan. Mahimo nimong kontrolon ang Docker gikan sa ingon nga sudlanan, apan ang mga volume nag-mount lamang sa mga folder gikan sa host system, ug dili gikan sa lain nga sudlanan.

Mga problema nga mahimo nimong masugatan

Naghulat alang sa kaandam

Kung ang usa ka sudlanan nga adunay usa ka serbisyo nagdagan, wala kini magpasabut nga andam na kini nga modawat mga koneksyon. Kinahanglang maghulat ka nga magpadayon ang koneksyon.

Kini nga problema usahay masulbad gamit ang script paghulat-alang-kini.sh, nga naghulat alang sa usa ka oportunidad sa pagtukod sa usa ka TCP koneksyon. Bisan pa, ang LocalStack mahimong maglabay sa usa ka sayup nga 502 Bad Gateway. Dugang pa, kini naglangkob sa daghang mga serbisyo, ug kung ang usa kanila andam na, wala kini gisulti bahin sa uban.

desisyon: LocalStack provisioning scripts nga naghulat sa 200 nga tubag gikan sa SQS ug SNS.

Mga Panagbangi sa Kaparehas nga Buluhaton

Ang daghang mga pagsulay mahimong dungan nga modagan sa parehas nga host sa Docker, busa kinahanglan nga talagsaon ang mga ngalan sa sulud ug network. Dugang pa, ang mga pagsulay gikan sa lainlaing mga sanga sa parehas nga serbisyo mahimo usab nga dungan nga modagan, mao nga dili igo ang pagsulat sa ilang mga ngalan sa matag compose file.

desisyon: Ang script nagbutang sa COMPOSE_PROJECT_NAME variable sa usa ka talagsaon nga bili.

Mga Feature sa Windows

Adunay daghang mga butang nga gusto nakong ipunting kung gigamit ang Docker sa Windows, tungod kay kini nga mga kasinatian hinungdanon aron masabtan kung ngano nga adunay mga sayup.

  1. Ang mga script sa Shell sa usa ka sudlanan kinahanglan adunay mga katapusan sa linya sa Linux.
    Ang simbolo sa shell CR kay usa ka syntax error. Lisud isulti gikan sa mensahe sa sayup nga kini ang kaso. Kung nag-edit sa ingon nga mga script sa Windows, kinahanglan nimo ang usa ka tukma nga editor sa teksto. Dugang pa, ang sistema sa pagkontrol sa bersyon kinahanglan nga ma-configure sa husto.

Mao kini ang paagi nga gi-configure ang git:

git config core.autocrlf input

  1. Ang Git-bash nagsunod sa mga standard nga folder sa Linux ug, kung nagtawag sa usa ka exe file (lakip ang docker.exe), gipulihan ang hingpit nga mga agianan sa Linux sa mga agianan sa Windows. Bisan pa, dili kini makatarunganon alang sa mga agianan nga wala sa lokal nga makina (o mga agianan sa usa ka sudlanan). Kini nga kinaiya dili ma-disable.

desisyon: pagdugang og dugang nga slash sa sinugdanan sa dalan: //bin imbes nga /bin. Ang Linux nakasabut sa ingon nga mga agianan; alang niini, daghang mga slash parehas sa usa. Apan ang git-bash wala makaila sa ingon nga mga agianan ug wala mosulay sa pag-convert niini.

Log output

Kung nagdagan sa mga pagsulay, gusto nako nga makita ang mga troso gikan sa Newman ug ang serbisyo nga gisulayan. Tungod kay ang mga panghitabo sa kini nga mga troso magkadugtong, ang paghiusa niini sa usa ka console labi ka kombenyente kaysa sa duha nga managsama nga mga file. Ang Newman naglansad pinaagi sa docker-compose run, ug mao nga ang output niini matapos sa console. Ang nahabilin mao ang pagsiguro nga ang output sa serbisyo moadto usab didto.

Ang orihinal nga solusyon mao ang pagbuhat docker-compose up walay bandera -d, apan gamit ang mga kapabilidad sa kabhang, ipadala kini nga proseso sa background:

docker-compose up <service> &

Nagtrabaho kini hangtud nga gikinahanglan ang pagpadala sa mga troso gikan sa Docker ngadto sa serbisyo sa ikatulo nga partido. docker-compose up mihunong sa pag-output sa mga log sa console. Bisan pa, ang team nagtrabaho docker attach.

desisyon:

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

Ang panagsumpaki sa identifier sa panahon sa pagsulay nga mga pag-usab

Ang mga pagsulay gipadagan sa daghang mga pag-uli. Ang database wala ma-clear. Ang mga rekord sa database adunay talagsaon nga mga ID. Kung among isulat ang mga piho nga ID sa mga hangyo, makakuha kami usa ka panagsumpaki sa ikaduha nga pag-uli.

Aron malikayan kini, ang mga ID kinahanglan nga talagsaon, o ang tanan nga mga butang nga gihimo sa pagsulay kinahanglan nga tangtangon. Ang ubang mga butang dili mapapas tungod sa mga kinahanglanon.

desisyon: paghimo og mga GUID gamit ang mga script sa Postman.

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

Dayon gamita ang simbolo sa pangutana {{myUUID}}, nga pulihan sa kantidad sa variable.

Kolaborasyon pinaagi sa LocalStack

Kung ang serbisyo nga gisulayan nagbasa o nagsulat sa usa ka SQS nga pila, nan aron mapamatud-an kini, ang pagsulay mismo kinahanglan usab nga molihok uban niini nga pila.

desisyon: mga hangyo gikan sa Postman ngadto sa LocalStack.

Ang AWS services API gidokumento, nga nagtugot sa mga pangutana nga himoon nga walay SDK.

Kung ang usa ka serbisyo nagsulat sa usa ka pila, dayon among basahon kini ug susihon ang sulud sa mensahe.

Kung ang serbisyo magpadala mga mensahe sa SNS, sa yugto sa pagpangandam ang LocalStack nagmugna usab usa ka pila ug nag-subscribe sa kini nga hilisgutan sa SNS. Unya ang tanan moabut sa kung unsa ang gihulagway sa ibabaw.

Kung ang serbisyo kinahanglan nga magbasa sa usa ka mensahe gikan sa pila, unya sa miaging pagsulay nga lakang among isulat kini nga mensahe sa pila.

Pagsulay sa mga hangyo sa HTTP nga gikan sa microservice ubos sa pagsulay

Ang ubang mga serbisyo nagtrabaho sa HTTP sa usa ka butang gawas sa AWS, ug ang pipila ka mga bahin sa AWS wala gipatuman sa LocalStack.

desisyon: sa niini nga mga kaso kini makatabang MockServer, nga adunay andam na nga imahe sa Hub sa pantalan. Gipaabot nga mga hangyo ug mga tubag niini gi-configure sa usa ka hangyo sa HTTP. Nadokumento ang API, mao nga nangayo mi gikan sa Postman.

Pagsulay sa OAuth Authentication ug Authorization

Gigamit namo ang OAuth ug JSON Web Tokens (JWT). Ang pagsulay nanginahanglan usa ka OAuth provider nga mahimo namon nga madagan sa lokal.

Ang tanan nga interaksyon tali sa serbisyo ug sa OAuth provider moabut ngadto sa duha ka hangyo: una, ang configuration gihangyo /.well-known/openid-configuration, ug dayon ang public key (JWKS) gihangyo sa adres gikan sa configuration. Kining tanan kay static content.

desisyon: Ang among pagsulay nga OAuth provider kay usa ka static content server ug duha ka file niini. Ang token gihimo kausa ug gitugyan sa Git.

Mga bahin sa pagsulay sa SignalR

Ang postman wala magtrabaho sa mga websocket. Usa ka espesyal nga himan ang gihimo aron sulayan ang SignalR.

Ang kliyente sa SignalR mahimong labaw pa sa usa ka browser. Adunay usa ka librarya sa kliyente alang niini ubos sa .NET Core. Ang kliyente, nga gisulat sa .NET Core, nagtukod og koneksyon, gipamatud-an, ug naghulat sa usa ka piho nga han-ay sa mga mensahe. Kung ang usa ka wala damha nga mensahe madawat o ang koneksyon nawala, ang kliyente mogawas nga adunay code nga 1. Kung ang katapusan nga gipaabut nga mensahe madawat, ang kliyente mogawas nga adunay code nga 0.

Si Newman nagtrabaho dungan sa kliyente. Daghang mga kliyente ang gilusad aron susihon nga ang mga mensahe gihatag sa tanan nga nanginahanglan niini.

Awtomatikong pagsulay sa mga microservice sa Docker alang sa padayon nga panagsama

Aron makadagan ang daghang mga kliyente gamita ang kapilian β€” timbangan sa docker-compose command line.

Sa wala pa modagan, ang script sa Postman naghulat alang sa tanan nga mga kliyente nga magtukod mga koneksyon.
Nasugatan na namo ang problema sa paghulat sa koneksyon. Apan adunay mga server, ug ania ang kliyente. Lain nga paagi ang gikinahanglan.

desisyon: ang kliyente sa sudlanan naggamit sa mekanismo Pagsusi sa Panglawasaron ipahibalo ang script sa host bahin sa kahimtang niini. Ang kliyente nagmugna og usa ka file sa usa ka piho nga dalan, ingna ang /healthcheck, sa diha nga ang koneksyon natukod. Ang script sa HealthCheck sa docker file ingon niini:

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

team inspeksyon sa pantalan Nagpakita sa normal nga kahimtang, kahimtang sa kahimsog ug exit code alang sa sudlanan.

Pagkahuman sa Newman, gisusi sa script nga ang tanan nga mga sudlanan nga adunay kliyente natapos na, nga adunay code 0.

Happinnes anaa

Human namo mabuntog ang mga kalisdanan nga gihulagway sa ibabaw, kami adunay usa ka hugpong sa mga stable running tests. Sa mga pagsulay, ang matag serbisyo nagtrabaho isip usa ka yunit, nakig-uban sa database ug Amazon LocalStack.

Kini nga mga pagsulay nanalipod sa usa ka team sa 30+ ka developers gikan sa mga sayop sa usa ka aplikasyon nga adunay komplikadong interaksyon sa 10+ ka microservices nga adunay kanunay nga deployment.

Source: www.habr.com

Idugang sa usa ka comment