ʻO ka hoʻāʻo ʻana i nā microservices ma Docker no ka hoʻohui mau ʻana

Ma nā papahana e pili ana i ka hoʻomohala ʻana i ka hoʻolālā microservice, neʻe ʻo CI/CD mai ka māhele o kahi manawa leʻaleʻa i ka ʻāpana o kahi mea e pono ai. ʻO ka hoʻāʻo ʻokoʻa kahi ʻāpana o ka hoʻohui mau ʻana, kahi ala kūpono e hiki ai ke hāʻawi i ka hui i nā ahiahi leʻaleʻa me ka ʻohana a me nā hoaaloha. A i ʻole, ʻaʻole hiki ke hoʻopau ʻia ka papahana.

Hiki ke uhi i ke code microservice holoʻokoʻa me nā hoʻāʻo ʻana me nā mea hoʻohenehene, akā hoʻopau wale kēia i ka pilikia a waiho i nā nīnau a me nā pilikia he nui, ʻoi aku ka nui o ka hoʻāʻo ʻana i ka hana me ka ʻikepili. E like me nā manawa a pau, ʻo nā mea koʻikoʻi loa e hoʻāʻo nei i ka kūlike o ka ʻikepili i loko o kahi waihona pili, hoʻāʻo i ka hana me nā lawelawe kapuaʻi, a me ka hana ʻana i nā kuhi hewa ʻole ke kākau ʻana i nā mea hoʻohenehene.

Hiki ke hoʻoholo i kēia mau mea a me nā mea hou aʻe ma ka hoʻāʻo ʻana i ka microservice holoʻokoʻa i kahi pahu Docker. ʻO kahi pōmaikaʻi kānalua ʻole no ka hōʻoia ʻana i ka pono o nā hoʻokolohua ʻo ia nā kiʻi Docker like i hele i ka hana e hoʻāʻo ʻia.

ʻO ka automate o kēia ala e hōʻike i nā pilikia he nui, ʻo ka hopena e wehewehe ʻia ma lalo nei:

  • nā paio o nā hana like ma ka pūʻali docker hoʻokahi;
  • nā paio ʻike ma ka waihona i ka wā o ka hoʻāʻo ʻana;
  • ke kali nei no ka mākaukau ʻana o nā microservices;
  • ka hoʻohui ʻana a me ka hoʻopuka ʻana i nā lāʻau i nā ʻōnaehana waho;
  • hoʻāʻo i nā noi HTTP puka;
  • ka hoʻāʻo ʻana i ke kumu pūnaewele (me ka hoʻohana ʻana iā SignalR);
  • e ho'āʻo ana i ka hōʻoia ʻana a me ka ʻae ʻana o OAuth.

Hoʻokumu ʻia kēia ʻatikala ma ka'u olelo ma SECR 2019. No laila no ka poʻe palaualelo e heluhelu, eia ka leo o ka haiolelo.

ʻO ka hoʻāʻo ʻana i nā microservices ma Docker no ka hoʻohui mau ʻana

Ma kēia ʻatikala e haʻi aku wau iā ʻoe pehea e hoʻohana ai i kahi palapala e holo ai i ka lawelawe ma lalo o ka hoʻāʻo ʻana, kahi waihona a me nā lawelawe Amazon AWS ma Docker, a laila hoʻāʻo iā Postman a, ma hope o ka pau ʻana, kāpae a kāpae i nā ipu i hana ʻia. Hoʻokō ʻia nā hoʻāʻo i kēlā me kēia manawa e loli ke code. Ma kēia ala, hōʻoia mākou e hana pololei kēlā me kēia mana me ka waihona AWS a me nā lawelawe.

Hoʻohana ʻia ka palapala like ʻelua e nā mea hoʻomohala iā lākou iho ma kā lākou papapihi Windows a me ka server Gitlab CI ma lalo o Linux.

ʻAʻole pono ka hoʻokomo ʻana i nā hoʻāʻo hou i ka hoʻokomo ʻana i nā mea hana hou aʻe ma ka kamepiula o ka mea hoʻomohala a i ʻole ma ke kikowaena kahi e holo ai nā hoʻokolohua ma kahi commit. Hoʻoponopono ʻo Docker i kēia pilikia.

Pono e holo ka ho'āʻo ma kahi kikowaena kūloko no kēia mau kumu:

  • ʻAʻole hilinaʻi loa ka ʻupena. Mai loko mai o hoʻokahi tausani noi, hiki i kekahi ke hāʻule;
    I kēia hihia, ʻaʻole e holo ka hoʻāʻo maʻalahi, e pau ka hana, a pono ʻoe e ʻimi i ke kumu ma nā lāʻau;
  • ʻAʻole ʻae ʻia nā noi pinepine e kekahi mau lawelawe ʻaoʻao ʻekolu.

Eia kekahi, ʻaʻole makemake e hoʻohana i ke kū no ka mea:

  • ʻAʻole hiki ke haʻihaʻi ʻia kahi kūpaʻa ʻaʻole wale ma ka code hewa e holo ana ma luna o ia mea, akā me ka ʻikepili ʻaʻole hiki i ke code kūpono ke hana;
  • No ka nui o ko mākou hoʻāʻo ʻana e hoʻihoʻi i nā hoʻololi a pau i hana ʻia e ka hoʻāʻo i ka wā o ka hoʻāʻo ponoʻī, hiki i kekahi mea ke hele hewa (inā ʻaʻole, no ke aha e hoʻāʻo ai?).

E pili ana i ka papahana a me ka hui kaʻina hana

Ua hoʻomohala kā mākou hui i kahi noi pūnaewele microservice e holo ana ma Docker ma ke ao Amazon AWS. Ua hoʻohana mua ʻia nā hoʻāʻo ʻāpana ma ka pāhana, akā pinepine nā hewa i ʻike ʻole ʻia e nā hoʻāʻo ʻāpana. Pono e ho'āʻo i kahi microservice holoʻokoʻa me ka waihona a me nā lawelawe Amazon.

Hoʻohana ka papahana i kahi kaʻina hana hoʻohui mau, kahi e hoʻāʻo ai i ka microservice me kēlā me kēia hana. Ma hope o ka hāʻawi ʻana i kahi hana, hoʻololi ka mea hoʻomohala i ka microservice, hoʻāʻo iā ia me ka lima a holo i nā hoʻāʻo ʻokoʻa āpau i loaʻa. Inā pono, hoʻololi ka mea hoʻomohala i nā hoʻokolohua. Inā ʻaʻole ʻike ʻia nā pilikia, hana ʻia kahi hana i ka lālā o kēia pilikia. Ma hope o kēlā me kēia hana, holo ʻokoʻa nā hoʻokolohua ma ke kikowaena. Hoʻohui ʻia i loko o kahi lālā maʻamau a hoʻomaka i nā hoʻāʻo ʻakomi ma hope o ka loiloi kūleʻa. Inā hala nā hoʻokolohua ma ka lālā kaʻana like, hoʻonui ʻia ka lawelawe ma ke kaiapuni hoʻāʻo ma Amazon Elastic Container Service (bench). Pono ke kū no nā mea hoʻomohala a me nā mea hōʻike, ʻaʻole pono e uhaʻi. Nānā nā mea hōʻike ma kēia kaiapuni i kahi hoʻoponopono a i ʻole kahi hiʻohiʻona hou ma o ka hoʻāʻo lima.

Papahana papahana

ʻO ka hoʻāʻo ʻana i nā microservices ma Docker no ka hoʻohui mau ʻana

Aia ka palapala noi ma mua o ʻumi mau lawelawe. Ua kākau ʻia kekahi o lākou ma .NET Core a ʻo kekahi ma NodeJs. Holo kēlā me kēia lawelawe i kahi pahu Docker ma ka Amazon Elastic Container Service. Loaʻa i kēlā me kēia me kāna waihona Postgres, a loaʻa iā Redis kekahi. ʻAʻohe ʻikepili maʻamau. Inā makemake kekahi mau lawelawe i ka ʻikepili like, a laila e hoʻouna ʻia kēia ʻikepili, i ka wā e loli ai, i kēlā me kēia o kēia mau lawelawe ma o SNS (Simple Notification Service) a me SQS (Amazon Simple Queue Service), a mālama nā lawelawe i loko o kā lākou ʻikepili ʻokoʻa.

SQS a me SNS

Hāʻawi ʻo SQS iā ʻoe e hoʻokomo i nā memo i kahi pila a heluhelu i nā memo mai ka pila me ka hoʻohana ʻana i ka protocol HTTPS.

Inā heluhelu kekahi mau lawelawe i hoʻokahi pila, a laila hiki mai kēlā me kēia memo i hoʻokahi wale nō o lākou. Pono kēia i ka wā e holo ai i kekahi mau manawa o ka lawelawe like e puʻunaue i ka ukana ma waena o lākou.

Inā makemake ʻoe e hāʻawi ʻia kēlā me kēia memo i nā lawelawe he nui, pono i kēlā me kēia mea e loaʻa i kāna pila ponoʻī, a pono ʻo SNS e hana kope i nā leka i loko o nā pila he nui.

Ma SNS e hana ʻoe i kumuhana a kau inoa iā ia, no ka laʻana, kahi queue SQS. Hiki iā ʻoe ke hoʻouna i nā memo i ke kumuhana. I kēia hihia, hoʻouna ʻia ka leka i kēlā me kēia pila i kākau inoa ʻia i kēia kumuhana. ʻAʻohe ala SNS no ka heluhelu ʻana i nā memo. Inā i ka wā o ka debugging a i ʻole ka hoʻāʻo ʻana pono ʻoe e ʻike i ka mea i hoʻouna ʻia i SNS, hiki iā ʻoe ke hana i kahi queue SQS, kau inoa iā ia i ke kumuhana makemake a heluhelu i ka pila.

ʻO ka hoʻāʻo ʻana i nā microservices ma Docker no ka hoʻohui mau ʻana

ʻApuka API

ʻAʻole hiki ke loaʻa pololei ka hapa nui o nā lawelawe mai ka Pūnaewele. Aia ke komo ma o ka API Gateway, nāna e nānā i nā kuleana komo. ʻO kēia hoʻi kā mākou lawelawe, a he mau hoʻāʻo pū kekahi.

Hoʻolaha manawa maoli

Hoʻohana ka polokalamu HōʻailonaRe hōʻike i nā hoʻolaha manawa maoli i ka mea hoʻohana. Hoʻokō ʻia kēia ma ka lawelawe hoʻolaha. Hiki ke kiʻi pololei ʻia mai ka Pūnaewele a hana pū me OAuth, no ka mea, ʻaʻole hiki ke kūkulu i ke kākoʻo no nā kumu Pūnaewele i Gateway, i hoʻohālikelike ʻia me ka hoʻohui ʻana iā OAuth a me ka lawelawe hoʻolaha.

ʻO ke ala hoʻāʻo i ʻike ʻia

Hoʻololi nā hoʻokolohua ʻāpana i nā mea e like me ka waihona me nā mea hoʻohenehene. Inā ho'āʻo kekahi microservice, no ka laʻana, e hana i kahi moʻolelo i loko o kahi papa me kahi kī haole, a ʻaʻole i loaʻa ka moʻolelo i kuhikuhi ʻia e kēlā kī, a laila ʻaʻole hiki ke hoʻokō ʻia ke noi. ʻAʻole hiki ke ʻike i kēia i nā hoʻokolohua ʻāpana.

В ʻatikala mai Microsoft mai Manaʻo ʻia e hoʻohana i kahi waihona waihona hoʻomanaʻo a hoʻokō i nā mea hoʻohenehene.

ʻO ka waihona waihona hoʻomanaʻo kekahi o nā DBMS i kākoʻo ʻia e ka Entity Framework. Ua hana pono ia no ka hoao ana. Mālama ʻia ka ʻikepili i loko o ia waihona a hiki i ka pau ʻana o ke kaʻina hana. ʻAʻole pono ia i ka hana ʻana i nā papa ʻaina a ʻaʻole nānā i ka pono o ka ʻikepili.

Hoʻohālike nā mea hoʻomāʻewaʻewa i ka papa a lākou e pani nei i ka nui o ka hoʻomaopopo ʻana o ka mea hoʻomohala hoʻāʻo i kāna hana.

Pehea e hiki ai iā Postgres ke hoʻomaka a hoʻokō i nā neʻe i ka wā e holo ai ʻoe i kahi hoʻokolohua ʻaʻole i kuhikuhi ʻia ma ka ʻatikala Microsoft. ʻO kaʻu hopena e hana i kēia a, ʻaʻole hoʻi e hoʻohui i kekahi code no nā hoʻokolohua i ka microservice ponoʻī.

E neʻe kākou i ka hoʻonā

I ka wā o ka hoʻomohala ʻana, ua ʻike ʻia ʻaʻole lawa nā hoʻokolohua ʻāpana e ʻimi i nā pilikia āpau i ka manawa kūpono, no laila ua hoʻoholo ʻia e hoʻokokoke i kēia pilikia mai kahi ʻokoʻa.

Hoʻonohonoho i kahi hoʻāʻo

ʻO ka hana mua ke kau ʻana i kahi ʻano hoʻāʻo. Nā ʻanuʻu e pono ai e holo i kahi microservice:

  • E hoʻonohonoho i ka lawelawe ma lalo o ka hoʻāʻo ʻana no ke kaiapuni kūloko, e wehewehe i nā kikoʻī no ka hoʻopili ʻana i ka waihona a me AWS i nā ʻano hoʻololi kaiapuni;
  • E hoʻomaka i nā Postgres a hana i ka neʻe ʻana ma ka holo ʻana iā Liquibase.
    Ma nā DBMS pili, ma mua o ke kākau ʻana i ka ʻikepili i loko o ka waihona, pono ʻoe e hana i kahi schema data, ʻo ia hoʻi, nā papa. Ke hoʻohou nei i kahi noi, pono e lawe ʻia nā papa i ke ʻano i hoʻohana ʻia e ka mana hou, a, ʻoi aku ka maikaʻi, me ka ʻole o ka nalowale ʻana o ka ʻikepili. Kapa ʻia kēia ʻo ka migration. ʻO ka hoʻokumu ʻana i nā papa i loko o kahi waihona i kaʻawale ʻole he hihia kūikawā o ka neʻe ʻana. Hiki ke kūkulu ʻia ka neʻe ʻana i loko o ka noi ponoʻī. Loaʻa nā .NET a me NodeJS i nā ʻōnaehana neʻe. I kā mākou hihia, no nā kumu palekana, ua hoʻonele ʻia nā microservices i ke kuleana e hoʻololi i ka schema data, a ua hana ʻia ka neʻe ʻana me Liquibase.
  • E hoʻomaka i ka Amazon LocalStack. He hoʻokō kēia i nā lawelawe AWS e holo ma ka home. Aia kahi kiʻi i mākaukau no LocalStack ma Docker Hub.
  • E holo i ka palapala e hana i nā mea pono i LocalStack. Hoʻohana nā ʻatikala Shell i ka AWS CLI.

Hoʻohana ʻia no ka hoʻāʻo ʻana i ka papahana Kahuhahu. Aia ma mua, akā ua hoʻomaka ʻia me ka lima a hoʻāʻo i kahi noi i kau ʻia ma ke kū. Hāʻawi kēia mea hana iā ʻoe e hana i nā noi HTTP(S) kūʻokoʻa a nānā inā pili nā pane i nā manaʻolana. Hoʻohui ʻia nā nīnau i kahi hōʻiliʻili, a hiki ke holo ka ʻohi a pau.

ʻO ka hoʻāʻo ʻana i nā microservices ma Docker no ka hoʻohui mau ʻana

Pehea ka hana o ka ho'āʻo 'akomi?

I ka wā o ka hoʻāʻo, hana nā mea āpau ma Docker: ka lawelawe ma lalo o ka hoʻāʻo, Postgres, ka mea hana neʻe, a me Postman, a i ʻole kāna console version - Newman.

Hoʻoponopono ʻo Docker i nā pilikia he nui:

  • Kūʻokoʻa mai ka hoʻonohonoho hoʻonohonoho;
  • Ke kau nei i nā mea hilinaʻi: Hoʻoiho ʻo Docker i nā kiʻi mai Docker Hub;
  • Hoʻihoʻi i ka ʻōnaehana i kona kūlana mua: wehe wale i nā pahu.

Docker-compose hoʻohui i nā ipu i loko o kahi pūnaewele virtual, i hoʻokaʻawale ʻia mai ka Pūnaewele, kahi e loaʻa ai nā pahu i kekahi i kekahi ma nā inoa kikowaena.

Hoʻomalu ʻia ka hoʻāʻo ʻana e kahi palapala shell. No ka holo ʻana i ka hoʻāʻo ma Windows hoʻohana mākou i ka git-bash. No laila, lawa ka palapala hoʻokahi no Windows a me Linux. Hoʻokomo ʻia ʻo Git a me Docker e nā mea hoʻomohala āpau ma ka papahana. I ka hoʻokomo ʻana iā Git ma Windows, ua hoʻokomo ʻia ʻo git-bash, no laila ua loaʻa i kēlā me kēia.

Hana ka ʻatikala i kēia mau ʻanuʻu:

  • Ke kūkulu nei i nā kiʻi docker
    docker-compose build
  • Ke hoʻomaka nei i ka waihona a me LocalStack
    docker-compose up -d <контейнер>
  • Ka neʻe ʻana o ka waihona a me ka hoʻomākaukau ʻana o LocalStack
    docker-compose run <контейнер>
  • Ke hoʻomaka nei i ka lawelawe ma lalo o ka hoʻāʻo
    docker-compose up -d <сервис>
  • Ke holo nei i ka ho'āʻo (Newman)
  • Ke hooki nei i na ipu a pau
    docker-compose down
  • Ke kau nei i nā hualoaʻa ma Slack
    Loaʻa iā mākou kahi kamaʻilio kahi e hele ai nā memo me kahi māka ʻōmaʻomaʻo a i ʻole ke keʻa ʻulaʻula a me kahi loulou i ka log.

Ke komo nei nā kiʻi Docker i kēia mau hana:

  • ʻO ka lawelawe i ho'āʻoʻia he kiʻi like ia no ka hanaʻana. ʻO ka hoʻonohonoho no ka hoʻāʻo ʻana ma o nā ʻano hoʻololi kaiapuni.
  • No Postgres, Redis a me LocalStack, hoʻohana ʻia nā kiʻi i mākaukau mai Docker Hub. Aia kekahi mau kiʻi i mākaukau no Liquibase a me Newman. Kūkulu mākou i kā mākou iwi ma ko lākou iwi, hoʻohui i kā mākou mau faila ma laila.
  • No ka hoʻomākaukau ʻana i LocalStack, hoʻohana ʻoe i kahi kiʻi AWS CLI i mākaukau a hana i kahi kiʻi i loaʻa kahi palapala e pili ana iā ia.

Ke hoʻohana nei kaha, ʻaʻole pono ʻoe e kūkulu i kahi kiʻi Docker e hoʻohui i nā faila i ka ipu. Eia naʻe, ʻaʻole kūpono nā volumes no ko mākou kaiapuni no ka mea e holo ana nā hana Gitlab CI i loko o nā pahu. Hiki iā ʻoe ke hoʻomalu iā Docker mai kahi pahu like, akā hoʻopili wale nā ​​puke i nā waihona mai ka ʻōnaehana host, ʻaʻole mai kahi pahu ʻē aʻe.

Nā pilikia āu e hālāwai ai

Ke kali nei no ka makaukau

Ke holo nei kahi pahu me kahi lawelawe, ʻaʻole kēia manaʻo ua mākaukau ia e ʻae i nā pilina. Pono ʻoe e kali a hoʻomau ka pilina.

Hoʻoholo ʻia kēia pilikia i kekahi manawa me ka hoʻohana ʻana i kahi palapala kali-no-ia.sh, e kali ana i kahi manawa e hoʻokumu ai i kahi pilina TCP. Eia naʻe, hiki i ka LocalStack ke hoʻolei i kahi hewa 502 Bad Gateway. Eia kekahi, aia nā lawelawe he nui, a inā mākaukau kekahi o lākou, ʻaʻole ia e ʻōlelo i kekahi mea e pili ana i nā mea ʻē aʻe.

olelo hooholo: Nā palapala hoʻolako LocalStack e kali ana i ka pane 200 mai SQS a me SNS.

Nā Kūʻē Hana Kūlike

Hiki i nā hoʻāʻo he nui ke holo like ma ka host Docker hoʻokahi, no laila pono ʻokoʻa nā pahu a me nā inoa pūnaewele. Eia kekahi, hiki ke holo like nā hoʻokolohua mai nā lālā like ʻole o ka lawelawe like, no laila ʻaʻole lawa ka kākau ʻana i ko lākou inoa i kēlā me kēia faila haku.

olelo hooholo: Hoʻonohonoho ka ʻatikala i ka hoʻololi COMPOSE_PROJECT_NAME i kahi waiwai kūʻokoʻa.

Nā hiʻohiʻona Windows

Nui nā mea aʻu e makemake ai e kuhikuhi i ka wā e hoʻohana ai iā Docker ma Windows, no ka mea he mea nui kēia mau ʻike i ka hoʻomaopopo ʻana i ke kumu o nā hewa.

  1. Pono e loaʻa nā ʻōkuhi Shell i loko o kahi pahu i nā hopena laina Linux.
    ʻO ka hōʻailona CR shell kahi hewa syntax. He paʻakikī ke haʻi mai ka memo hewa ʻo ia ka hihia. I ka hoʻoponopono ʻana i ia mau palapala ma Windows, pono ʻoe i kahi hoʻoponopono kikokikona kūpono. Eia kekahi, pono e hoʻonohonoho pono ʻia ka ʻōnaehana mana mana.

Penei ka hoʻonohonoho ʻana o git:

git config core.autocrlf input

  1. Hoʻopili ʻo Git-bash i nā waihona Linux maʻamau a, i ke kāhea ʻana i kahi faila exe (me docker.exe), hoʻololi i nā ala Linux maoli me nā ala Windows. Eia naʻe, ʻaʻole kūpono kēia no nā ala ʻaʻole ma ka mīkini kūloko (a i ʻole nā ​​ala i loko o kahi pahu). ʻAʻole hiki ke hoʻopau ʻia kēia hana.

olelo hooholo: hoʻohui i kahi slash hou i ka hoʻomaka o ke ala: //bin ma kahi o /bin. Hoʻomaopopo ʻo Linux i kēlā mau ala; no ka mea, ua like kekahi mau ʻāpana me ka hoʻokahi. Akā ʻaʻole ʻike ʻo git-bash i kēlā mau ala a ʻaʻole hoʻāʻo e hoʻohuli iā lākou.

Hoʻopuka moʻolelo

Ke holo nei i nā hoʻokolohua, makemake wau e ʻike i nā lāʻau mai Newman a me ka lawelawe e hoʻāʻo ʻia. No ka mea pili nā hanana o kēia mau lāʻau, ʻoi aku ka maʻalahi o ka hoʻohui ʻana iā lākou i hoʻokahi console ma mua o nā faila ʻelua. Hoʻomaka ʻo Newman ma o holo docker-compose, a no laila ua pau ka hopena i ka console. ʻO nā mea a pau i koe e hōʻoia i ka hele ʻana o ka huahana o ka lawelawe i laila.

ʻO ka hoʻonā kumu e hana makemake-hoʻokumu ʻaʻohe hae -d, akā me ka hoʻohana ʻana i nā mana shell, e hoʻouna i kēia kaʻina hana i ke kua:

docker-compose up <service> &

Ua hana kēia a hiki i ka wā e pono ai e hoʻouna i nā lāʻau mai Docker i kahi lawelawe ʻaoʻao ʻekolu. makemake-hoʻokumu ua ho'ōki i ka hoʻopuka ʻana i nā lāʻau i ka console. Akā naʻe, ua hana ka hui pākuʻi pū ke kahi.

olelo hooholo:

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

Hoʻopaʻapaʻa ʻike i ka wā o ka hoʻāʻo ʻana

Hoʻoholo ʻia nā hoʻāʻo ma nā ʻano hou. ʻAʻole holoi ʻia ka waihona. Loaʻa nā moʻolelo i loko o ka waihona i nā ID kūikawā. Inā kākau mākou i nā ID kikoʻī i nā noi, e loaʻa iā mākou kahi paio i ka lua o ka hoʻololi.

I mea e pale aku ai, pono ʻokoʻa nā ID, a i ʻole e holoi ʻia nā mea a pau i hana ʻia e ka hoʻāʻo. ʻAʻole hiki ke holoi ʻia kekahi mau mea ma muli o nā koi.

olelo hooholo: hana i nā GUID me ka hoʻohana ʻana i nā palapala Postman.

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

A laila e hoʻohana i ka hōʻailona ma ka nīnau {{myUUID}}, e hoʻololi ʻia me ka waiwai o ka hoʻololi.

Ka hui pū ʻana ma o LocalStack

Inā heluhelu a kākau paha ka lawelawe i kahi pila SQS, a laila e hōʻoia i kēia, pono e hana pū ka hoʻāʻo me kēia pila.

olelo hooholo: noi mai Postman a LocalStack.

Hoʻopaʻa ʻia ka API lawelawe AWS, e ʻae ana i nā nīnau me ka ʻole o SDK.

Inā kākau kahi lawelawe i kahi pila, a laila heluhelu mākou a nānā i nā mea o ka leka.

Inā hoʻouna ka lawelawe i nā leka i SNS, i ka wā hoʻomākaukau, hana pū ʻo LocalStack i kahi pila a kau inoa i kēia kumuhana SNS. A laila hele mai nā mea a pau i ka mea i wehewehe ʻia ma luna.

Inā pono ka lawelawe e heluhelu i kahi leka mai ka pila, a laila ma ka pae ho'āʻo mua e kākau mākou i kēia leka i ka pila.

Ke hoʻāʻo nei i nā noi HTTP mai ka microservice ma lalo o ka hoʻāʻo

Hana kekahi mau lawelawe ma luna o HTTP me kahi mea ʻē aʻe ma mua o AWS, a ʻaʻole hoʻokō ʻia kekahi mau hiʻohiʻona AWS ma LocalStack.

olelo hooholo: ma kēia mau hihia hiki ke kōkua MockServer, nona ke kiʻi mākaukau i loko Hub hoʻokau. Hoʻonohonoho ʻia nā noi a me nā pane i manaʻo ʻia e kahi noi HTTP. Hoʻopaʻa ʻia ka API, no laila ke noi nei mākou mai Postman.

Ke ho'āʻo nei i ka hōʻoia ʻana a me ka ʻae ʻana o OAuth

Hoʻohana mākou iā OAuth a Nā Hōʻailona Pūnaewele JSON (JWT). Pono ka ho'āʻo i kahi mea hāʻawi OAuth hiki iā mākou ke holo ma ka ʻāina.

ʻO nā pilina a pau ma waena o ka lawelawe a me ka mea hāʻawi OAuth i lalo i ʻelua noi: ʻo ka mua, noi ʻia ka hoʻonohonoho /.well-known/openid-configuration, a laila noi ʻia ke kī lehulehu (JWKS) ma ka helu wahi mai ka hoʻonohonoho. He maʻiʻo paʻa kēia a pau.

olelo hooholo: ʻO kā mākou mea hoʻolako OAuth hoʻāʻo he kikowaena maʻiʻo static a ʻelua faila ma luna. Hana ʻia ka hōʻailona i hoʻokahi manawa a paʻa iā Git.

Nā hiʻohiʻona o ka hoʻāʻo SignalR

ʻAʻole hana ka mea leka uila me nā punawelewele. Ua hana ʻia kahi mea hana kūikawā e hoʻāʻo ai iā SignalR.

Hiki i kahi mea kūʻai SignalR ke ʻoi aku ma mua o kahi polokalamu kele. Aia kahi waihona mea kūʻai aku ma lalo o .NET Core. ʻO ka mea kūʻai, i kākauʻia ma .NET Core, hoʻokumu i kahi pilina, hōʻoiaʻiʻoʻia, a kali i kahi kiko'ī o nā memo. Inā loaʻa kahi leka i manaʻo ʻole ʻia a nalowale paha ka pilina, puka ka mea kūʻai aku me kahi code o 1.

Hana like ʻo Newman me ka mea kūʻai aku. Hoʻomaka ʻia kekahi mau mea kūʻai aku e nānā i ka hāʻawi ʻia ʻana o nā leka i nā poʻe āpau e pono ai.

ʻO ka hoʻāʻo ʻana i nā microservices ma Docker no ka hoʻohui mau ʻana

No ka holo ʻana i nā mea kūʻai aku he nui e hoʻohana i ke koho --kaulike ma ka laina kauoha docker-compose.

Ma mua o ka holo ʻana, kali ka palapala Postman i nā mea kūʻai aku e hoʻokumu i nā pilina.
Ua ʻike mua mākou i ka pilikia o ke kali ʻana i kahi pilina. Akā aia nā kikowaena, a eia ka mea kūʻai aku. Pono ke ala ʻokoʻa.

olelo hooholo: hoʻohana ka mea kūʻai i loko o ka pahu i ka mīkini KahuaHulie hoʻomaopopo i ka palapala ma ka mea hoʻokipa e pili ana i kona kūlana. Hoʻokumu ka mea kūʻai aku i kahi faila ma kahi ala kikoʻī, e ʻōlelo /healthcheck, ke hoʻokumu ʻia ka pilina. ʻO ka palapala HealthCheck ma ka faila docker e like me kēia:

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

hui nana docker Hōʻike i ke kūlana maʻamau, kūlana olakino a me ke code puka no ka ipu.

Ma hope o ka hoʻopau ʻana o Newman, nānā ka ʻatikala ua hoʻopau ʻia nā pahu āpau me ka mea kūʻai aku, me ke code 0.

Loaʻa ʻo Happinnes

Ma hope o ko mākou lanakila ʻana i nā pilikia i hōʻike ʻia ma luna, ua loaʻa iā mākou kahi hoʻāʻo holo paʻa. I nā hoʻokolohua, hana kēlā me kēia lawelawe ma ke ʻano he hoʻokahi, e launa pū me ka waihona a me Amazon LocalStack.

Mālama kēia mau hoʻāʻo i kahi hui o 30+ mau mea hoʻomohala mai nā hewa i loko o kahi noi me ka pilina paʻakikī o 10+ microservices me nā hoʻolaha pinepine.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka