Kev ntsuas qhov ntsuas ntawm microservices hauv Docker rau kev sib koom ua ke tsis tu ncua

Hauv cov haujlwm uas cuam tshuam txog kev txhim kho microservice architecture, CI / CD txav los ntawm qeb ntawm lub sijhawm zoo mus rau qeb ntawm qhov xav tau ceev. Kev ntsuas tsis siv neeg yog qhov tseem ceeb ntawm kev sib koom ua ke txuas ntxiv, ib txoj hauv kev muaj peev xwm uas tuaj yeem ua rau pab pawg muaj kev lom zem yav tsaus ntuj nrog tsev neeg thiab phooj ywg. Txwv tsis pub, qhov kev pheej hmoo yuav tsis ua tiav.

Nws yog ua tau los npog tag nrho cov microservice code nrog kev ntsuam xyuas ntawm chav tsev nrog cov khoom thuam, tab sis qhov no tsuas yog ib feem daws qhov teeb meem thiab tawm ntau cov lus nug thiab teeb meem, tshwj xeeb tshaj yog thaum kuaj ua haujlwm nrog cov ntaub ntawv. Raws li ib txwm muaj, cov xov xwm tseem ceeb tshaj plaws yog kuaj cov ntaub ntawv sib xws hauv cov ntaub ntawv sib raug zoo, sim ua haujlwm nrog cov kev pabcuam huab, thiab ua qhov kev xav tsis raug thaum sau cov khoom thuam.

Tag nrho cov no thiab me ntsis ntxiv tuaj yeem daws tau los ntawm kev sim tag nrho microservice hauv Docker thawv. Qhov txiaj ntsig tsis txaus ntseeg rau kev ua kom ntseeg tau tias muaj txiaj ntsig ntawm kev sim yog tias tib cov duab Docker uas nkag mus rau hauv kev tsim khoom raug sim.

Automation ntawm txoj kev no nthuav tawm ntau yam teeb meem, cov kev daws teeb meem uas yuav tau piav qhia hauv qab no:

  • kev tsis sib haum xeeb ntawm kev ua haujlwm sib luag hauv tib tus tswv tsev docker;
  • tus cim tsis sib haum xeeb nyob rau hauv cov ntaub ntawv thaum lub sij hawm sim iterations;
  • tos microservices npaj txhij;
  • merging thiab outputting cav mus rau sab nraud systems;
  • kuaj cov lus thov HTTP tawm;
  • web socket test (siv SignalR);
  • kuaj OAuth authentication thiab tso cai.

Kab lus no yog raws li kuv lus ntawm SECR 2019. Yog li ntawd rau cov neeg tub nkeeg nyeem ntawv, ntawm no yog ib daim ntawv teev lus.

Kev ntsuas qhov ntsuas ntawm microservices hauv Docker rau kev sib koom ua ke tsis tu ncua

Hauv tsab xov xwm no kuv yuav qhia koj yuav ua li cas siv tsab ntawv los khiav cov kev pabcuam hauv kev sim, database thiab Amazon AWS cov kev pabcuam hauv Docker, tom qab ntawd kuaj ntawm Postman thiab, tom qab lawv ua tiav, nres thiab tshem tawm cov ntim tsim. Kev ntsuam xyuas raug ua txhua zaus thaum hloov cov cai. Ua li no, peb xyuas kom meej tias txhua lub version ua haujlwm raug nrog AWS database thiab cov kev pabcuam.

Tib tsab ntawv yog khiav ob qho tib si los ntawm cov neeg tsim khoom lawv tus kheej ntawm lawv lub Windows desktops thiab los ntawm Gitlab CI server hauv Linux.

Txhawm rau kom muaj kev ncaj ncees, qhia cov kev sim tshiab yuav tsum tsis tas yuav tsum tau teeb tsa cov cuab yeej ntxiv rau ntawm tus tsim tawm lub khoos phis tawj lossis ntawm lub server uas qhov kev sim tau khiav ntawm kev cog lus. Docker daws qhov teeb meem no.

Qhov kev sim yuav tsum khiav ntawm lub server hauv zos rau cov laj thawj hauv qab no:

  • Lub network no yeej tsis ntseeg kiag li. Tawm ntawm ib txhiab thov, ib qho yuav ua tsis tau;
    Hauv qhov no, kev ntsuas tsis siv neeg yuav tsis ua haujlwm, kev ua haujlwm yuav tsum nres, thiab koj yuav tsum nrhiav qhov laj thawj hauv cov cav;
  • Kev thov ntau dhau tsis tso cai los ntawm qee qhov kev pabcuam thib peb.

Tsis tas li ntawd, nws yog qhov tsis tsim nyog los siv qhov sawv ntsug vim:

  • Ib qho chaw sawv ntsug tuaj yeem tawg tsis yog los ntawm cov lej tsis zoo uas khiav ntawm nws, tab sis kuj los ntawm cov ntaub ntawv uas qhov tseeb code tsis tuaj yeem ua tiav;
  • Txawm tias nyuaj npaum li cas peb sim thim rov qab txhua qhov kev hloov pauv los ntawm qhov kev sim thaum lub sijhawm ntsuas nws tus kheej, ib yam dab tsi tuaj yeem mus tsis ncaj ncees lawm (tsis li ntawd, vim li cas kuaj?).

Hais txog qhov project thiab lub koom haum txheej txheem

Peb lub tuam txhab tsim microservice web application khiav hauv Docker hauv Amazon AWS huab. Chav ntsuas twb tau siv nyob rau hauv qhov project, tab sis feem ntau yuam kev tshwm sim uas cov chav tsev kuaj tsis pom. Nws yog qhov tsim nyog los sim tag nrho microservice nrog rau database thiab Amazon cov kev pabcuam.

Qhov project siv cov txheej txheem txuas ntxiv txuas ntxiv, uas suav nrog kev sim microservice nrog txhua qhov kev cog lus. Tom qab muab ib txoj haujlwm, tus tsim tawm hloov pauv rau microservice, sim nws manually thiab sau tag nrho cov kev xeem uas muaj. Yog tias tsim nyog, tus tsim tawm hloov cov kev xeem. Yog tias tsis pom muaj teeb meem, tau cog lus rau ceg ntawm qhov teeb meem no. Tom qab txhua qhov kev cog lus, cov kev ntsuam xyuas tau khiav ntawm lub server. Kev sib koom ua ke rau hauv ib ceg sib koom thiab pib qhov kev sim tsis siv neeg ntawm nws tshwm sim tom qab kev tshuaj xyuas tiav. Yog tias qhov kev ntsuam xyuas ntawm cov ceg sib koom dhau, cov kev pabcuam tau hloov kho tshiab hauv qhov chaw sim ntawm Amazon Elastic Container Service (lub rooj ntev zaum). Qhov sawv ntsug yog qhov tsim nyog rau txhua tus tsim tawm thiab cov neeg sim, thiab nws tsis pom zoo kom tawg nws. Testers nyob rau hauv lub cheeb tsam no xyuas ib tug kho los yog ib tug tshiab feature los ntawm kev ua cov kev ntsuam xyuas phau ntawv.

Qhov project architecture

Kev ntsuas qhov ntsuas ntawm microservices hauv Docker rau kev sib koom ua ke tsis tu ncua

Daim ntawv thov muaj ntau tshaj kaum qhov kev pabcuam. Ib txhia ntawm lawv tau sau rau hauv .NET Core thiab qee qhov hauv NodeJs. Txhua qhov kev pabcuam khiav hauv Docker thawv hauv Amazon Elastic Container Service. Txhua tus muaj nws tus kheej Postgres database, thiab qee qhov kuj muaj Redis. Tsis muaj cov ntaub ntawv sib xws. Yog tias ntau qhov kev pabcuam xav tau tib cov ntaub ntawv, cov ntaub ntawv no, thaum nws hloov pauv, raug xa mus rau txhua qhov kev pabcuam no ntawm SNS (Simple Notification Service) thiab SQS (Amazon Simple Queue Service), thiab cov kev pabcuam khaws cia hauv lawv tus kheej cov ntaub ntawv cais.

SQS thiab SNS

SQS tso cai rau koj tso cov lus rau hauv kab thiab nyeem cov lus los ntawm kab uas siv HTTPS raws tu qauv.

Yog tias ntau qhov kev pabcuam nyeem ib kab, ces txhua cov lus tuaj txog tsuas yog rau ib qho ntawm lawv. Qhov no muaj txiaj ntsig zoo thaum ua haujlwm ntau zaus ntawm tib qhov kev pabcuam los faib cov khoom nruab nrab ntawm lawv.

Yog tias koj xav kom txhua cov lus xa mus rau ntau qhov kev pabcuam, txhua tus neeg txais yuav tsum muaj nws tus kheej kab, thiab SNS yuav tsum tau muab cov lus sib npaug rau hauv ntau kab.

Hauv SNS koj tsim ib lub ncauj lus thiab sau npe rau nws, piv txwv li, SQS kab. Koj tuaj yeem xa cov lus rau lub ncauj lus. Hauv qhov no, cov lus raug xa mus rau txhua kab uas tau sau npe rau lub ncauj lus no. SNS tsis muaj txoj hauv kev los nyeem cov lus. Yog hais tias thaum lub sij hawm debugging los yog sim koj yuav tsum nrhiav kom paub seb dab tsi yog xa mus rau SNS, koj muaj peev xwm tsim ib tug SQS kab, sau npe rau lub ntsiab lus xav thiab nyeem cov kab.

Kev ntsuas qhov ntsuas ntawm microservices hauv Docker rau kev sib koom ua ke tsis tu ncua

API Gateway

Feem ntau cov kev pabcuam tsis tuaj yeem siv ncaj qha los ntawm Is Taws Nem. Kev nkag mus yog los ntawm API Gateway, uas kuaj xyuas cov cai nkag. Qhov no kuj yog peb qhov kev pabcuam, thiab muaj kev sim rau nws ib yam nkaus.

Cov ntawv ceeb toom tiag tiag

Daim ntawv thov siv Teeb liabRlos qhia cov ntawv ceeb toom real-time rau tus neeg siv. Qhov no yog siv nyob rau hauv cov kev pab cuam ceeb toom. Nws tuaj yeem siv ncaj qha los ntawm Is Taws Nem thiab nws tus kheej ua haujlwm nrog OAuth, vim tias nws tau ua tsis zoo los tsim kev txhawb nqa rau Web sockets rau hauv Gateway, piv rau kev sib koom ua ke OAuth thiab kev ceeb toom kev pabcuam.

Txoj Kev Ntsuas Zoo

Chav ntsuas hloov cov khoom xws li cov ntaub ntawv nrog cov khoom thuam. Yog tias microservice, piv txwv li, sim tsim cov ntaub ntawv hauv lub rooj nrog tus yuam sij txawv teb chaws, thiab cov ntaub ntawv hais txog tus yuam sij ntawd tsis muaj, ces qhov kev thov tsis tuaj yeem ua tiav. Chav ntsuas ntsuas tsis tuaj yeem ntes qhov no.

Π’ tsab xov xwm los ntawm Microsoft Nws tau thov kom siv cov ntaub ntawv hauv lub cim xeeb thiab siv cov khoom cuav.

Nyob rau hauv-nco database yog ib qho ntawm DBMSs txhawb nqa los ntawm Pawg Neeg Ua Haujlwm. Nws tau tsim tshwj xeeb rau kev sim. Cov ntaub ntawv hauv cov ntaub ntawv no tsuas yog khaws cia kom txog thaum cov txheej txheem siv nws xaus. Nws tsis tas yuav tsim cov ntxhuav thiab tsis xyuas cov ntaub ntawv kev ncaj ncees.

Mock cov khoom ua qauv rau cov chav kawm uas lawv tab tom hloov tsuas yog rau qhov uas tus neeg tsim khoom sim nkag siab tias nws ua haujlwm li cas.

Yuav ua li cas thiaj tau Postgres kom pib thiab ua haujlwm tsiv teb tsaws chaw thaum koj khiav qhov kev xeem tsis tau teev tseg hauv Microsoft tsab xov xwm. Kuv qhov kev daws teeb meem ua qhov no thiab, ntxiv rau, tsis ntxiv cov lej tshwj xeeb rau kev sim rau microservice nws tus kheej.

Cia peb mus rau qhov kev daws teeb meem

Thaum lub sij hawm txoj kev loj hlob, nws tau pom tseeb tias cov kev ntsuam xyuas ntawm chav tsev tsis txaus los nrhiav txhua yam teeb meem raws sij hawm, yog li nws tau txiav txim siab los ua qhov teeb meem no los ntawm lwm lub kaum sab xis.

Teeb tsa ib puag ncig kev sim

Thawj txoj hauj lwm yog xa mus rau qhov chaw sim. Cov kauj ruam yuav tsum tau ua kom khiav microservice:

  • Configure cov kev pab cuam nyob rau hauv kev sim rau lub zos ib puag ncig, qhia cov ntsiab lus rau kev txuas mus rau lub database thiab AWS nyob rau hauv ib puag ncig variables;
  • Pib Postgres thiab ua qhov kev tsiv teb tsaws chaw los ntawm kev khiav Liquibase.
    Hauv kev sib raug zoo DBMSs, ua ntej sau cov ntaub ntawv rau hauv cov ntaub ntawv, koj yuav tsum tsim cov ntaub ntawv schema, hauv lwm lo lus, cov lus. Thaum hloov kho ib daim ntawv thov, cov ntxhuav yuav tsum tau coj mus rau hauv daim ntawv uas siv los ntawm tus tshiab version, thiab, nyiam dua, tsis muaj cov ntaub ntawv poob. Qhov no hu ua migration. Tsim cov ntxhuav nyob rau hauv qhov pib khoob database yog ib qho tshwj xeeb ntawm kev tsiv teb tsaws. Kev tsiv teb tsaws tuaj yeem ua rau hauv daim ntawv thov nws tus kheej. Ob leeg .NET thiab NodeJS muaj kev tsiv teb tsaws chaw. Hauv peb qhov xwm txheej, vim li cas kev nyab xeeb, microservices raug txwv tsis pub muaj txoj cai hloov cov ntaub ntawv schema, thiab kev tsiv teb tsaws yog ua los ntawm Liquibase.
  • Tua tawm Amazon LocalStack. Qhov no yog kev siv AWS cov kev pabcuam los khiav hauv tsev. Muaj cov duab npaj ua rau LocalStack ntawm Docker Hub.
  • Khiav tsab ntawv los tsim cov chaw tsim nyog hauv LocalStack. Shell scripts siv AWS CLI.

Siv rau kev sim ntawm qhov project Tus xaib. Nws muaj ua ntej, tab sis nws tau pib ua manually thiab sim ib daim ntawv thov uas twb tau xa tawm ntawm qhov muag. Cov cuab yeej no tso cai rau koj los ua qhov kev thov HTTP(S) arbitrary thiab xyuas seb cov lus teb puas phim qhov kev cia siab. Cov lus nug tau muab tso rau hauv ib qho kev sau, thiab tag nrho cov sau tuaj yeem khiav.

Kev ntsuas qhov ntsuas ntawm microservices hauv Docker rau kev sib koom ua ke tsis tu ncua

Qhov kev xeem tsis siv neeg ua haujlwm li cas?

Thaum lub sijhawm xeem, txhua yam ua haujlwm hauv Docker: qhov kev pabcuam hauv kev sim, Postgres, lub cuab yeej tsiv teb tsaws, thiab Postman, lossis nws qhov console version - Newman.

Docker daws tau ntau yam teeb meem:

  • Kev ywj pheej los ntawm tus tswv tsev teeb tsa;
  • Txhim kho kev vam khom: Docker rub tawm cov duab los ntawm Docker Hub;
  • Rov qab lub kaw lus mus rau nws lub xeev qub: tsuas yog tshem cov ntim.

Docker-compose sib sau cov thawv rau hauv lub network virtual, cais tawm hauv Is Taws Nem, nyob rau hauv uas cov thawv sib ntsib los ntawm cov npe sau npe.

Qhov kev xeem yog tswj los ntawm lub plhaub ntawv. Txhawm rau khiav qhov kev xeem ntawm Windows peb siv git-bash. Yog li, ib tsab ntawv txaus rau ob lub Windows thiab Linux. Git thiab Docker raug teeb tsa los ntawm txhua tus tsim tawm ntawm qhov project. Thaum txhim kho Git ntawm Windows, git-bash raug teeb tsa, yog li txhua tus muaj qhov ntawd thiab.

Tsab ntawv ua cov kauj ruam hauv qab no:

  • Tsev docker duab
    docker-compose build
  • Tua tawm lub database thiab LocalStack
    docker-compose up -d <ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€>
  • Database migration thiab kev npaj ntawm LocalStack
    docker-compose run <ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€>
  • Launching qhov kev pab cuam nyob rau hauv kev sim
    docker-compose up -d <сСрвис>
  • Khiav qhov kev xeem (Newman)
  • Nres tag nrho cov thawv
    docker-compose down
  • Tshaj tawm cov txiaj ntsig hauv Slack
    Peb muaj kev sib tham qhov twg cov lus nrog lub cim ntsuab lossis tus ntoo khaub lig liab thiab qhov txuas rau lub cav mus.

Cov duab Docker hauv qab no tau koom nrog hauv cov kauj ruam no:

  • Cov kev pabcuam raug kuaj yog tib yam duab rau kev tsim khoom. Lub configuration rau kev xeem yog los ntawm ib puag ncig variables.
  • Rau Postgres, Redis thiab LocalStack, cov duab npaj tau los ntawm Docker Hub yog siv. Kuj tseem muaj cov duab npaj ua rau Liquibase thiab Newman. Peb tsim peb li ntawm lawv lub cev pob txha, ntxiv peb cov ntaub ntawv muaj.
  • Txhawm rau npaj LocalStack, koj siv cov duab npaj ua AWS CLI thiab tsim cov duab uas muaj tsab ntawv raws li nws.

Kev Siv tagnrho, koj tsis tas yuav tsim Docker duab tsuas yog ntxiv cov ntaub ntawv rau hauv lub thawv. Txawm li cas los xij, ntim tsis haum rau peb ib puag ncig vim tias Gitlab CI cov haujlwm lawv tus kheej khiav hauv ntim. Koj tuaj yeem tswj tau Docker los ntawm lub thawv zoo li no, tab sis ntim tsuas yog mount folders los ntawm tus tswv tsev, thiab tsis yog los ntawm lwm lub thawv.

Tej zaum koj yuav ntsib teeb meem

Tos rau kev npaj

Thaum lub thawv nrog cov kev pabcuam khiav haujlwm, qhov no tsis tau txhais hais tias nws npaj tau txais kev sib txuas. Koj yuav tsum tau tos kom txuas ntxiv mus.

Cov teeb meem no qee zaum daws tau siv cov ntawv sau tos-for-it.sh, uas tos rau lub sijhawm los tsim kev sib txuas TCP. Txawm li cas los xij, LocalStack tuaj yeem cuam tshuam 502 Bad Gateway yuam kev. Tsis tas li ntawd, nws muaj ntau yam kev pabcuam, thiab yog tias ib qho ntawm lawv tau npaj txhij, qhov no tsis hais dab tsi txog lwm tus.

kev txiav txim siab: LocalStack muab cov ntawv sau uas tos 200 cov lus teb los ntawm SQS thiab SNS.

Parallel Task Conflicts

Ntau qhov kev ntsuam xyuas tuaj yeem khiav ib txhij ntawm tib tus tswv Docker, yog li lub thawv thiab lub npe network yuav tsum muaj qhov tshwj xeeb. Ntxiv mus, kev ntsuam xyuas los ntawm cov ceg sib txawv ntawm cov kev pabcuam tib yam tuaj yeem ua haujlwm ib txhij, yog li nws tsis txaus los sau lawv cov npe hauv txhua daim ntawv sau.

kev txiav txim siab: Tsab ntawv teev cov COMPOSE_PROJECT_NAME hloov pauv rau tus nqi tshwj xeeb.

Windows Features

Muaj ntau yam uas kuv xav taw qhia thaum siv Docker ntawm Windows, vim tias cov kev paub dhau los no tseem ceeb rau kev nkag siab vim li cas qhov yuam kev tshwm sim.

  1. Plhaub scripts nyob rau hauv ib lub thawv yuav tsum muaj Linux kab xaus.
    Lub plhaub CR cim yog qhov yuam kev syntax. Nws yog ib qho nyuaj rau qhia los ntawm cov lus yuam kev tias qhov no yog qhov teeb meem. Thaum kho cov ntawv sau zoo li no ntawm Windows, koj xav tau cov ntawv sau kom raug. Tsis tas li ntawd, qhov kev tswj hwm version yuav tsum tau teeb tsa kom raug.

Nov yog li cas git tau teeb tsa:

git config core.autocrlf input

  1. Git-bash emulates tus qauv Linux folders thiab, thaum hu rau cov ntaub ntawv exe (xws li docker.exe), hloov cov kev Linux kiag li nrog Windows paths. Txawm li cas los xij, qhov no tsis muaj txiaj ntsig rau txoj hauv kev tsis nyob ntawm lub tshuab hauv zos (lossis txoj hauv kev hauv lub thawv). Tus cwj pwm no tsis tuaj yeem ua tsis taus.

kev txiav txim siab: ntxiv ib qho ntxiv rau qhov pib ntawm txoj kev: //bin es tsis txhob / bin. Linux nkag siab txog txoj hauv kev zoo li no; rau nws, ob peb lub slashes yog tib yam li ib qho. Tab sis git-bash tsis paub txog txoj kev zoo li no thiab tsis sim hloov lawv.

Log tso zis

Thaum khiav cov kev xeem, kuv xav pom cov cav los ntawm ob qho tib si Newman thiab cov kev pabcuam raug sim. Txij li thaum cov xwm txheej ntawm cov cav no sib cuam tshuam, kev sib txuas rau hauv ib lub console yog yooj yim dua li ob cov ntaub ntawv cais. Newman launches via docker-compose khiav, thiab yog li nws cov zis xaus rau hauv console. Txhua yam uas tseem tshuav yog kom paub tseeb tias cov zis ntawm cov kev pabcuam kuj mus rau ntawd.

Thawj qhov kev daws teeb meem yog ua docker-compose li tsis muaj chij -d, tab sis siv lub plhaub muaj peev xwm, xa cov txheej txheem no mus rau keeb kwm yav dhau:

docker-compose up <service> &

Qhov no ua haujlwm kom txog thaum nws tsim nyog xa cov cav los ntawm Docker mus rau qhov kev pabcuam thib peb. docker-compose li nres outputting cav rau lub console. Txawm li cas los xij, pab neeg ua haujlwm docker xa.

kev txiav txim siab:

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

Cov cim qhia tsis sib haum xeeb thaum sim rov ua dua

Kev ntsuam xyuas tau ua nyob rau hauv ob peb iterations. Lub database tsis yog cleared. Cov ntaub ntawv hauv cov ntaub ntawv muaj cov cim ID. Yog tias peb sau cov ID tshwj xeeb hauv kev thov, peb yuav tau txais kev tsis sib haum xeeb ntawm qhov thib ob iteration.

Txhawm rau zam nws, cov IDs yuav tsum yog qhov tshwj xeeb, lossis txhua yam khoom tsim los ntawm kev xeem yuav tsum raug muab tshem tawm. Qee yam khoom tsis tuaj yeem raug tshem tawm vim yog qhov yuav tsum tau ua.

kev txiav txim siab: tsim GUIDs siv Postman scripts.

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

Tom qab ntawd siv lub cim hauv cov lus nug {{myUUID}}, uas yuav hloov nrog tus nqi ntawm qhov sib txawv.

Kev sib koom tes ntawm LocalStack

Yog tias qhov kev pabcuam raug sim nyeem lossis sau rau SQS kab, tom qab ntawd txhawm rau txheeb xyuas qhov no, qhov kev sim nws tus kheej kuj tseem ua haujlwm nrog cov kab no.

kev txiav txim siab: thov los ntawm Postman rau LocalStack.

AWS cov kev pabcuam API tau sau tseg, tso cai rau cov lus nug ua yam tsis muaj SDK.

Yog tias qhov kev pabcuam sau rau ib kab, ces peb nyeem nws thiab xyuas cov ntsiab lus ntawm cov lus.

Yog tias qhov kev pabcuam xa lus mus rau SNS, ntawm qhov kev npaj theem LocalStack kuj tsim ib kab thiab sau npe rau SNS cov ncauj lus no. Tom qab ntawd nws tag nrho los ntawm qhov tau piav qhia saum toj no.

Yog tias qhov kev pabcuam xav tau nyeem cov lus los ntawm cov kab, tom qab ntawd hauv cov kauj ruam dhau los peb sau cov lus no rau hauv kab.

Kev sim HTTP thov los ntawm microservice hauv kev sim

Qee qhov kev pabcuam ua haujlwm dhau HTTP nrog qee yam uas tsis yog AWS, thiab qee qhov AWS tsis tau siv hauv LocalStack.

kev txiav txim siab: nyob rau hauv cov ntaub ntawv no nws yuav pab tau MockServer, uas muaj ib tug npaj-ua duab nyob rau hauv Docker hub. Kev thov xav tau thiab cov lus teb rau lawv tau teeb tsa los ntawm HTTP thov. API tau sau tseg, yog li peb thov los ntawm Postman.

Kuaj OAuth Authentication thiab Tso Cai

Peb siv OAuth thiab JSON Web Tokens (JWT). Qhov kev xeem xav tau tus kws kho mob OAuth uas peb tuaj yeem khiav hauv zos.

Txhua qhov kev sib cuam tshuam ntawm kev pabcuam thiab OAuth tus neeg muab kev pabcuam los ntawm ob qhov kev thov: ua ntej, kev teeb tsa tau thov /.well-known/openid-configuration, thiab tom qab ntawd tus yuam sij pej xeem (JWKS) raug thov ntawm qhov chaw nyob los ntawm kev teeb tsa. Tag nrho cov no yog cov ntsiab lus zoo li qub.

kev txiav txim siab: Peb qhov chaw kuaj OAuth yog cov ntsiab lus zoo li qub thiab ob cov ntaub ntawv ntawm nws. Lub token yog tsim ib zaug thiab cog lus rau Git.

Nta ntawm SignalR kuaj

Postman tsis ua haujlwm nrog websockets. Ib qho cuab yeej tshwj xeeb tau tsim los sim SignalR.

Tus neeg siv SignalR tuaj yeem ua tau ntau dua li qhov browser xwb. Muaj ib lub tsev qiv ntawv rau cov neeg siv khoom hauv qab .NET Core. Tus neeg siv khoom, sau rau hauv .NET Core, tsim kom muaj kev sib txuas, tau txais kev lees paub, thiab tos rau ib ntu ntawm cov lus. Yog tias tau txais cov lus tsis xav tau lossis qhov kev sib txuas ploj lawm, tus neeg siv khoom tawm nrog tus lej 1. Yog tias tau txais cov lus xav tau kawg, tus neeg siv khoom tawm nrog tus lej 0.

Newman ua haujlwm ib txhij nrog tus neeg siv khoom. Ntau tus neeg siv khoom tau pib los xyuas tias cov lus raug xa mus rau txhua tus neeg xav tau.

Kev ntsuas qhov ntsuas ntawm microservices hauv Docker rau kev sib koom ua ke tsis tu ncua

Txhawm rau khiav ntau tus neeg siv khoom siv qhov kev xaiv --scale ntawm docker-compose kab hais kom ua.

Ua ntej khiav, Postman tsab ntawv tos rau txhua tus neeg siv los tsim kev sib txuas.
Peb twb tau ntsib teeb meem ntawm kev tos kev sib txuas. Tab sis muaj cov servers, thiab ntawm no yog cov neeg siv khoom. Xav tau ib txoj kev sib txawv.

kev txiav txim siab: tus neeg siv khoom hauv lub thawv siv lub tshuab Kev kuaj mobkom qhia rau tsab ntawv ntawm tus tswv tsev txog nws cov xwm txheej. Tus neeg siv khoom tsim cov ntaub ntawv ntawm ib txoj hauv kev tshwj xeeb, hais / kuaj xyuas kev noj qab haus huv, sai li sai tau qhov kev sib txuas tau tsim. Cov ntawv HealthCheck hauv cov ntaub ntawv docker zoo li no:

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

pab neeg docker soj ntsuam Qhia qhov xwm txheej ib txwm muaj, kev noj qab haus huv thiab kev tawm code rau lub thawv.

Tom qab Newman ua tiav, tsab ntawv txheeb xyuas tias tag nrho cov ntim nrog tus neeg siv khoom tau txiav tawm, nrog code 0.

Happinnes muaj nyob

Tom qab peb kov yeej cov teeb meem uas tau piav qhia saum toj no, peb muaj cov kev sim ua haujlwm ruaj khov. Hauv kev sim, txhua qhov kev pabcuam ua haujlwm ua ib chav tsev, cuam tshuam nrog cov ntaub ntawv thiab Amazon LocalStack.

Cov kev ntsuam xyuas no tiv thaiv ib pab neeg ntawm 30+ tus tsim tawm los ntawm kev ua yuam kev hauv daim ntawv thov nrog kev sib cuam tshuam ntawm 10+ microservices nrog kev xa tawm tsis tu ncua.

Tau qhov twg los: www.hab.com

Ntxiv ib saib