He aha kā mākou ʻike e pili ana i nā microservices

Aloha! ʻO Vadim Madison koʻu inoa, alakaʻi wau i ka hoʻomohala ʻana o ka Avito System Platform. Ua ʻōlelo ʻia ma mua o hoʻokahi manawa ke neʻe nei mākou i ka ʻoihana mai kahi hoʻolālā monolithic i kahi microservices. ʻO ka manawa kēia e kaʻana like i kā mākou hoʻololi ʻana i kā mākou ʻoihana e loaʻa i ka hapa nui o nā microservices a pale iā mākou iho mai ka nalowale ʻana i loko o lākou. Pehea e kōkua ai ʻo PaaS iā mākou ma ʻaneʻi, pehea mākou i maʻalahi i ka hoʻolaha ʻana a hōʻemi i ka hana ʻana o kahi microservice i hoʻokahi kaomi - heluhelu ma. ʻAʻole nā ​​mea a pau aʻu i kākau ai e pili ana i lalo i hoʻokō piha ʻia ma Avito, ʻo kekahi o ia mea pehea mākou e hoʻomohala ai i kā mākou kahua.

(A i ka hopena o kēia ʻatikala, e kamaʻilio wau e pili ana i ka manawa e hele ai i kahi seminar ʻekolu lā mai ka loea microservice ʻo Chris Richardson).

He aha kā mākou ʻike e pili ana i nā microservices

Pehea mākou i hele mai ai i microservices

ʻO Avito kekahi o nā pūnaewele helu nui loa ma ka honua; ʻoi aku ma mua o 15 miliona mau hoʻolaha hou i paʻi ʻia ma ia lā. ʻAe kā mākou backend ma mua o 20 tausani mau noi i kēlā me kēia kekona. Loaʻa iā mākou i kēia manawa he mau haneli microservices.

Ke kūkulu nei mākou i kahi hoʻolālā microservice no kekahi mau makahiki i kēia manawa. Pehea pololei - ko mākou mau hoa hana i ka kikoʻī haʻi ʻia ma kā mākou ʻāpana ma RIT++ 2017. Ma CodeFest 2017 (e ʻike. wikiō), Ua wehewehe kikoʻī ʻo Sergey Orlov lāua ʻo Mikhail Prokopchuk i ke kumu e pono ai mākou i ka hoʻololi ʻana i nā microservices a me ka hana a Kubernetes i pāʻani ai ma aneʻi. ʻAe, ke hana nei mākou i nā mea āpau e hōʻemi i nā kumukūʻai scaling i loaʻa i loko o ia ʻano hoʻolālā.

I ka wā mua, ʻaʻole mākou i hana i kahi kaiaola e kōkua piha iā mākou e hoʻomohala a hoʻomaka i nā microservices. Ua hōʻiliʻili wale lākou i nā hoʻonā kumu ākea, hoʻokuʻu iā lākou ma ka home a kono i ka mea hoʻomohala e hana me lākou. ʻO ka hopena, ua hele ʻo ia i nā wahi he ʻumi (dashboards, nā lawelawe kūloko), a ma hope iho ua ikaika ʻo ia i kona makemake e ʻoki i ke code i ke ala kahiko, ma kahi monolith. ʻO ke kala ʻōmaʻomaʻo i nā kiʻi ma lalo e hōʻike i ka hana a ka mea hoʻomohala i kekahi ala a i ʻole me kona mau lima ponoʻī, a ʻo ka kala melemele e hōʻike ana i ka automation.

He aha kā mākou ʻike e pili ana i nā microservices

I kēia manawa i ka pono PaaS CLI, ua hana ʻia kahi lawelawe hou me hoʻokahi kauoha, a ua hoʻohui ʻia kahi waihona hou me ʻelua mau mea hou aku a kau ʻia i Stage.

He aha kā mākou ʻike e pili ana i nā microservices

Pehea e lanakila ai i ke au o ka "microservice fragmentation"

Me kahi hoʻolālā monolithic, no ka kūlike o nā loli i ka huahana, ua koi ʻia nā mea hoʻomohala e noʻonoʻo i ka mea e hana nei me ko lākou mau hoalauna. I ka hana ʻana i ka hoʻolālā hou, ʻaʻole hilinaʻi nā ʻano lawelawe i kekahi i kekahi.

Eia kekahi, no ka maikaʻi o kahi hoʻolālā microservice, pono e hoʻokumu ʻia nā kaʻina he nui, ʻo ia hoʻi:

• logging;
• noi ka huli ʻana (Jaeger);
• ka hui hewa (Sentry);
• nā kūlana, nā memo, nā hanana mai Kubernetes (Event Stream Processing);
• ka palena heihei / kaapuni (hiki iā ʻoe ke hoʻohana iā Hystrix);
• ka mana o ka pilina lawelawe (hoʻohana mākou iā Netramesh);
• ka nānā 'ana (Grafana);
• hui (TeamCity);
• kamaʻilio a me ka hoʻolaha (Slack, leka uila);
• ka huli hana; (Jira)
• hoʻomākaukau i nā palapala.

No ka hōʻoia ʻana ʻaʻole e nalowale ka ʻōnaehana i kona kūpaʻa a hoʻomau i ka maikaʻi e like me ke kaupaona ʻana, ua noʻonoʻo hou mākou i ka hoʻonohonoho ʻana o nā microservices ma Avito.

Pehea mākou e hoʻokele ai i nā microservices

ʻO kēia mau mea kōkua e hoʻokō i kahi "kulekele pāʻina" i hui pū ʻia ma waena o nā microservices Avito:

  • ka hoʻokaʻawale ʻana i nā ʻōnaehana i nā papa;
  • ʻO ka papahana ma ke ʻano he lawelawe (PaaS) manaʻo;
  • ka nānā ʻana i nā mea a pau me nā microservices.

Loaʻa i ʻekolu ʻāpana nā papa hoʻokaʻawale ʻenehana. E hele kāua mai luna a lalo.

A. Top - lawelawe mesh. I ka wā mua ua hoʻāʻo mākou iā Istio, akā ua ʻike ʻia ua hoʻohana ʻo ia i nā kumuwaiwai he nui loa, ʻoi aku ka pipiʻi no kā mākou mau puke. No laila, ua hoʻomohala ʻo Alexander Lukyanchenko i kāna ʻenehana ponoʻī i ka hui hoʻolālā - Netramesh (loaʻa ma Open Source), a mākou e hoʻohana nei i kēia manawa i ka hana ʻana a hoʻopau i nā manawa liʻiliʻi ma mua o Istio (akā ʻaʻole ia e hana i nā mea āpau a Istio e kaena ai).
B. Medium - Kubernetes. Hoʻonohonoho a hana mākou i nā microservices ma luna o ia.
C. Ma lalo - metala ʻole. ʻAʻole mākou e hoʻohana i nā ao a i ʻole nā ​​​​mea e like me OpenStack, akā hilinaʻi piha i ka metala ʻole.

Hoʻohui ʻia nā papa āpau e PaaS. A ʻo kēia paepae, ʻekolu ʻāpana.

I. Na mea hana, mālama ʻia ma o kahi pono CLI. ʻO ia ke kōkua i ka mea hoʻomohala e hana i kahi microservice ma ke ala kūpono a me ka liʻiliʻi o ka hoʻoikaika.

II. ʻOhi hoʻohui me ka mana o nā mea hana a pau ma o ka dashboard maʻamau.

III. Waihona. Hoʻopili me nā mea hoʻonohonoho e hoʻonohonoho ʻakomi i nā hoʻoiho no nā hana koʻikoʻi. Mahalo i kēia ʻōnaehana, ʻaʻole i hala kahi hana no ka mea poina kekahi i ka hoʻonohonoho ʻana i kahi hana ma Jira. Hoʻohana mākou i kahi mea hana kūloko i kapa ʻia ʻo Atlas no kēia.

He aha kā mākou ʻike e pili ana i nā microservices

Hoʻokō ʻia ka hoʻokō ʻana i nā microservices ma Avito e like me kahi hoʻolālā hoʻokahi, e hoʻomaʻamaʻa i ka mana ma luna o lākou i kēlā me kēia pae o ka hoʻomohala ʻana a me ka hoʻokuʻu.

Pehea e hana ai kahi pipeline hoʻomohala microservice maʻamau?

Ma ka laulā, ʻano like ke ʻano o ke kaulahao hana microservice:

CLI-push → Hoʻohui Hoʻomau → Bake → Deploy → Nā hoʻāʻo artificial → Nā hoʻāʻo Canary → Squeeze Testing → Production → Maintenance.

E hele pololei kākou ma kēia ʻano.

CLI-paʻi

• Ke hana ʻana i kahi microservice.
Ua paʻakikī mākou no ka manawa lōʻihi e aʻo i kēlā me kēia mea hoʻomohala pehea e hana ai i nā microservices. Ua komo kēia i ke kākau ʻana i nā kuhikuhi kikoʻī ma Confluence. Akā ua hoʻololi a hoʻohui ʻia nā papahana. ʻO ka hopena, ua ʻike ʻia kahi bottleneck i ka hoʻomaka ʻana o ka huakaʻi: ʻoi aku ka nui o ka manawa e hoʻomaka ai i nā microservices, a ua ulu pinepine nā pilikia i ka wā o kā lākou hana ʻana.

I ka hopena, kūkulu mākou i kahi pono CLI maʻalahi e hoʻokaʻawale i nā pae kumu i ka wā e hana ai i kahi microservice. ʻOiaʻiʻo, hoʻololi ia i ka git push mua. Eia kāna hana ponoʻī.

- Hoʻokumu i kahi lawelawe e like me kahi template - i kēlā me kēia pae, ma ke ʻano "wizard". Loaʻa iā mākou nā hiʻohiʻona no nā ʻōlelo papahana nui ma Avito backend: PHP, Golang a me Python.

- Hoʻokahi kauoha i ka manawa e hoʻolālā i kahi kaiapuni no ka hoʻomohala kūloko ma kahi mīkini kikoʻī - Hoʻokuʻu ʻia ʻo Minikube, hoʻokumu ʻia nā palapala Helm a hoʻokuʻu ʻia i nā kubernetes kūloko.

— Hoʻohui i ka ʻikepili i makemake ʻia. ʻAʻole pono ka mea hoʻomohala e ʻike i ka IP, login a me ka ʻōlelo huna no ka loaʻa ʻana o ka ʻikepili e pono ai - inā ma ka ʻāina, ma Stage, a i ʻole ka hana. Eia kekahi, ua hoʻonohonoho koke ʻia ka waihona ma kahi hoʻonohonoho hoʻomanawanui hewa a me ke kaulike.

- Hana ia i ka hui ola pono'ī. E ʻōlelo kākou ua hoʻoponopono kekahi mea hoʻomohala i kekahi mea ma kahi microservice ma o kāna IDE. ʻIke ka pono i nā loli i ka ʻōnaehana faila a, ma muli o lākou, kūkulu hou i ka noi (no Golang) a hoʻomaka hou. No PHP, hoʻouna wale mākou i ka papa kuhikuhi i loko o ka cube a loaʻa ka live-reload "akomi".

- Hoʻokumu i nā hoʻokolohua auto. Ma ke ʻano o nā blanks, akā kūpono no ka hoʻohana.

• Hoʻolaha ʻia ʻo Microservice.

ʻO ka hoʻohana ʻana i kahi microservice he mea paʻakikī ia no mākou. Ua koi ʻia kēia mau mea:

I. Dockerfile.

II. Config.
III. Helm pakuhi, he mea paʻakikī a loaʻa pū kekahi:

- nā pakuhi iā lākou iho;
- nā mamana;
- nā waiwai kiko'ī e noʻonoʻo ana i nā kaiapuni like ʻole.

Ua lawe mākou i ka ʻeha mai ka hana hou ʻana i nā hōʻike Kubernetes no laila ua hana ʻia lākou i kēia manawa. Akā ʻo ka mea nui, ua maʻalahi lākou i ka hoʻolaha ʻana i ka palena. Mai kēia manawa loaʻa iā mākou kahi Dockerfile, a kākau ka mea hoʻomohala i ka config holoʻokoʻa i hoʻokahi faila app.toml pōkole.

He aha kā mākou ʻike e pili ana i nā microservices

ʻAe, a ma app.toml ponoʻī ʻaʻohe mea e hana ai no hoʻokahi minuke. Hōʻike mākou i kahi a me ka nui o nā kope o ka lawelawe e hoʻāla ai (ma ka dev server, ma ke kahua, i ka hana ʻana), a hōʻike i kona hilinaʻi. E nānā i ka nui o ka laina = "liʻiliʻi" ma ka poloka [engine]. ʻO kēia ka palena e hāʻawi ʻia i ka lawelawe ma o Kubernetes.

A laila, e pili ana i ka config, hana ʻia nā palapala Helm pono āpau a hana ʻia nā pilina i nā waihona.

• hōʻoia kumu. ʻO ia mau mākaʻikaʻi pū kekahi.
Pono e hahai:
- aia kahi Dockerfile;
- aia ma laila app.toml;
- aia nā palapala i loaʻa?
— Ua pololei anei ka hilinai ana?
- inā paha i kau ʻia nā lula makaʻala.
I ka helu hope: ʻo ka mea nona ka lawelawe ponoʻī e hoʻoholo i nā metric huahana e nānā.

• Hoʻomākaukau i nā palapala.
He wahi pilikia mau. Me he mea lā he mea maopopo loa ia, akā i ka manawa hoʻokahi he moʻolelo "hoʻopoina pinepineʻia", a no laila he loulou pili i ke kaulahao.
Pono e loaʻa nā palapala no kēlā me kēia microservice. Loaʻa iā ia nā poloka aʻe.

I. Ka wehewehe pōkole o ka lawelawe. He mau ʻōlelo liʻiliʻi e pili ana i kāna hana a me ke kumu e pono ai.

II. loulou kiʻi kiʻi kiʻi. He mea koʻikoʻi ia me ka nānā wikiwiki ʻana iā ia e maʻalahi ke hoʻomaopopo, no ka laʻana, inā ʻoe e hoʻohana nei iā Redis no ka caching a i ʻole ma ke ʻano he waihona ʻikepili nui ma ke ʻano hoʻomau. Ma Avito i kēia manawa he loulou kēia i Confluence.

III. Buke holo. He alakaʻi pōkole no ka hoʻomaka ʻana i ka lawelawe a me nā paʻakikī o ka lawelawe ʻana.

IV. FAQ, kahi maikaʻi e manaʻo mua i nā pilikia e hālāwai ai kāu mau hoa hana i ka wā e hana ai me ka lawelawe.

V. ʻO ka wehewehe ʻana i nā helu hope no ka API. Inā ʻaʻole ʻoe i kuhikuhi i nā wahi e hele ai, ʻo nā hoa hana e pili ana i kāu microservices e pili ana iā ʻoe. I kēia manawa, hoʻohana mākou iā Swagger a me kā mākou hopena i kapa ʻia he pōkole no kēia.

VI. Lepili. A i ʻole nā ​​māka e hōʻike ana i ka huahana, ka hana, a i ʻole ka mahele o ka hui nona ka lawelawe. Kōkua lākou iā ʻoe e hoʻomaopopo koke, no ka laʻana, ke ʻoki nei ʻoe i nā hana a kāu mau hoa hana i ʻōwili ai no ka hui ʻoihana like i hoʻokahi pule aku nei.

VII. Ka mea nona ka lawelawe. I ka hapanui o nā hihia, ʻo ia - a i ʻole lākou - hiki ke hoʻoholo maʻalahi me ka hoʻohana ʻana iā PaaS, akā i ka ʻaoʻao palekana, koi mākou i ka mea hoʻomohala e kuhikuhi iā lākou me ka lima.

ʻO ka hope, he hana maikaʻi ia e nānā i nā palapala, e like me ka loiloi code.

Ka hoʻomau holomua

  • Hoʻomākaukau i nā waihona.
  • Ke hana nei i kahi paipu ma TeamCity.
  • Hoʻonohonoho pono.
  • Huli i nā mea lawelawe. Aia kahi hoʻolālā hybrid ma aneʻi - hōʻailona manual a me ka automation liʻiliʻi mai PaaS. ʻAʻole hiki ke hoʻolālā ʻakomi piha ke hoʻololi ʻia nā lawelawe no ke kākoʻo i kahi hui hoʻomohala ʻē aʻe a i ʻole, inā haʻalele ka mea hoʻomohala lawelawe.
  • Hoʻopaʻa inoa i kahi lawelawe ma Atlas (e nana maluna). Me nā mea nona a me nā mea hilinaʻi.
  • Ke nānā nei i ka neʻe ʻana. Nānā mākou inā pilikia paha kekahi o lākou. No ka laʻana, i loko o kekahi o lākou kahi papaʻaina hoʻololi a i ʻole kekahi mea ʻē aʻe e hiki ke wāwahi i ka hoʻohālikelike ʻana o ka schema data ma waena o nā ʻano like ʻole o ka lawelawe. A laila, ʻaʻole i hoʻokō ʻia ka neʻe ʻana, akā kau ʻia i loko o kahi kau inoa - pono ka PaaS e hōʻailona i ka mea lawelawe i ka wā palekana e hoʻohana.

kalua

ʻO ka pae aʻe, ʻo ia nā lawelawe hoʻopihapiha ma mua o ka hoʻolaha ʻana.

  • Ke kūkulu ʻana i ka noi. Wahi a ka poʻe kahiko - ma kahi kiʻi Docker.
  • Hoʻokumu i nā palapala Helm no ka lawelawe ponoʻī a me nā kumuwaiwai pili. Hoʻopili ʻia no nā waihona a me ka cache. Hana ʻia lākou e like me ka app.toml config i hana ʻia ma ke kahua CLI-push.
  • Ke hana ʻana i nā tiketi no nā mea hoʻokele e wehe i nā awa (ke koi ʻia).
  • Ke holo nei i nā hoʻokolohua ʻāpana a me ka helu ʻana i ka uhi code. Inā ʻoi aku ka uhi ʻana o ke code ma lalo o ka paepae i ʻōlelo ʻia, a laila ʻaʻole e hele hou aku ka lawelawe - i ka hoʻolālā. Inā aia ma ka palena o ka ʻae ʻia, a laila e hāʻawi ʻia ka lawelawe i kahi coefficient "pessimizing": a laila, inā ʻaʻohe hoʻomaikaʻi o ka hōʻailona ma mua o ka manawa, e loaʻa i ka mea hoʻomohala ka leka hoʻomaopopo ʻaʻohe holomua i nā ʻōlelo o nā hoʻokolohua ( a pono e hana ʻia kekahi mea e pili ana).
  • Ka helu no ka hoʻomanaʻo a me nā palena CPU. Kākau nui mākou i nā microservices ma Golang a holo iā lākou ma Kubernetes. No laila hoʻokahi mea maʻalahi e pili ana i ka ʻokoʻa o ka ʻōlelo Golang: ma ka maʻamau, i ka wā e hoʻomaka ai, hoʻohana ʻia nā cores āpau ma ka mīkini, inā ʻaʻole ʻoe e hoʻonohonoho pono i ka ʻano GOMAXPROCS, a ke hoʻomaka ʻia kekahi mau lawelawe ma ka mīkini like, hoʻomaka lākou. e hoʻokūkū i nā kumuwaiwai, ke keʻakeʻa i kekahi i kekahi. Hōʻike nā pakuhi ma lalo i ke ʻano o ka hoʻololi ʻana o ka manawa hoʻokō inā holo ʻoe i ka noi me ka hakakā ʻole a i ka heihei no ke ʻano kumu waiwai. (ʻO nā kumu o nā pakuhi maanei).

He aha kā mākou ʻike e pili ana i nā microservices

ʻO ka manawa hoʻokō, ʻoi aku ka maikaʻi o ka liʻiliʻi. Ka lōʻihi: 643ms, liʻiliʻi loa: 42ms. Hiki ke kaomi i ke kiʻi.

He aha kā mākou ʻike e pili ana i nā microservices

ʻO ka manawa no ka ʻoki ʻana, ʻoi aku ka maikaʻi o ka liʻiliʻi. Kiekie: 14091 ns, ka palena iki: 151 ns. Hiki ke kaomi i ke kiʻi.

Ma ka pae hoʻomākaukau hui, hiki iā ʻoe ke hoʻonohonoho i kēia ʻano hoʻololi a i ʻole hiki iā ʻoe ke hoʻohana i ka waihona automaxprocs mai nā kāne mai Uber.

Hoʻopili

• Ke nānā 'ana i nā hui. Ma mua o kou hoʻomaka ʻana i ka hāʻawi ʻana i nā hui lawelawe i kāu kaiapuni i manaʻo ʻia, pono ʻoe e nānā i kēia:
- Nā helu hope API.
- Ka hoʻokō ʻana i nā pane o nā wahi hopena API me ka schema.
— Hōʻano lāʻau.
- Ke hoʻonohonoho nei i nā poʻomanaʻo no nā noi i ka lawelawe (i kēia manawa ua hana ʻia e netramesh)
- Hoʻonohonoho i ka mea nona ka hōʻailona i ka wā e hoʻouna ai i nā memo i ke kaʻa hanana hanana. Pono kēia e nānā i ka pilina o nā lawelawe ma waena o ke kaʻa. Hiki iā ʻoe ke hoʻouna i nā ʻikepili idempotent ʻelua i ke kaʻa, ʻaʻole ia e hoʻonui i ka pilina o nā lawelawe (ʻo ia ka maikaʻi), a me ka ʻikepili ʻoihana e hoʻoikaika i ka pilina o nā lawelawe (he maikaʻi loa!). A i ka manawa e lilo ai kēia pilina i mea pilikia, ʻo ka hoʻomaopopo ʻana i ka mea kākau a heluhelu i ke kaʻa e kōkua pono e hoʻokaʻawale i nā lawelawe.

ʻAʻole nui loa nā ʻaha kūkā ma Avito, akā ke hoʻonui nei kā lākou loko. ʻOi aku ka nui o ia mau ʻaelike i loaʻa i kahi ʻano e hiki ai i ka hui ke hoʻomaopopo a hoʻomaopopo, ʻoi aku ka maʻalahi o ka mālama ʻana i ke kūlike ma waena o nā microservices.

Nā hoʻokolohua synthetic

• Ho'āʻo loop pani. No kēia, ke hoʻohana nei mākou i ka open source Hoverfly.io. ʻO ka mea mua, hoʻopaʻa ʻo ia i ka ukana maoli ma ka lawelawe, a laila - i loko o kahi loop paʻa - e hoʻohālike ia.

• Ho'āʻo Stress. Ho'āʻo mākou e lawe i nā lawelawe āpau i ka hana maikaʻi loa. A ʻo nā ʻano āpau o kēlā me kēia lawelawe e pono ke kau ʻia i ka hoʻāʻo hoʻouka - ma kēia ala hiki iā mākou ke hoʻomaopopo i ka hana o kēia manawa o ka lawelawe a me ka ʻokoʻa me nā mana o mua o ka lawelawe like. Inā, ma hope o ka hoʻonui ʻana i ka lawelawe, hāʻule kāna hana i hoʻokahi a me ka hapa manawa, he hōʻailona maopopo kēia no nā mea nona: pono ʻoe e ʻeli i loko o ke code a hoʻoponopono i ke kūlana.
Hoʻohana mākou i ka ʻikepili i hōʻiliʻili ʻia, no ka laʻana, e hoʻokō pono i ka scaling auto a, i ka hopena, e hoʻomaopopo maʻamau i ke ʻano o ka scalable o ka lawelawe.

I ka wā o ka hoʻāʻo ʻana i ka ukana, ʻike mākou i ka hoʻohana ʻana i nā kumuwaiwai i nā palena i hoʻonohonoho ʻia. A ke nānā nui nei mākou i nā mea kiʻekiʻe.

a) Nānā mākou i ka nui o ka ukana.
- Liʻiliʻi loa - ʻaʻole paha e hana kekahi mea inā hāʻule koke ka ukana i nā manawa he nui.
- Nui loa - pono ka hoʻonui ʻana.

b) Nānā mākou i ka ʻoki e like me ka RPS.
Maanei mākou e nānā ai i ka ʻokoʻa ma waena o ka mana o kēia manawa a me ka mea ma mua a me ka nui o ka nui. No ka laʻana, inā hoʻopuka kahi lawelawe i 100 rps, a laila ua kākau maikaʻi ʻole ʻia, a i ʻole kēia kona kikoʻī, akā i kekahi hihia, he kumu kēia e nānā pono ai i ka lawelawe.
Inā he nui nā RPS, a laila aia kekahi ʻano bug a ua pau kekahi o nā hopena i ka hoʻokō ʻana i ka uku, a ua hoʻomaka wale ʻia kekahi. return true;

Nā ho'āʻo canary

Ma hope o ka hala ʻana i nā hoʻokolohua synthetic, hoʻāʻo mākou i ka microservice ma kahi liʻiliʻi o nā mea hoʻohana. Hoʻomaka maikaʻi mākou, me kahi hapa liʻiliʻi o ka poʻe i manaʻo ʻia o ka lawelawe - emi ma lalo o 0,1%. I kēia pae, he mea nui loa ka hoʻokomo ʻia ʻana o nā ʻenehana kūpono a me nā huahana huahana i ka nānā ʻana i hiki iā lākou ke hōʻike i ka pilikia i ka lawelawe i ka wikiwiki. ʻO ka manawa liʻiliʻi no ka hoʻāʻo canary he 5 mau minuke, ʻo ka mea nui he 2 mau hola. No nā lawelawe paʻakikī, hoʻonohonoho lima mākou i ka manawa.
E kālailai kākou:
— nā ana kikoʻī ʻōlelo, ʻo ia hoʻi, nā limahana php-fpm;
- nā hewa ma Sentry;
- nā kūlana pane;
- ka manawa pane, pololei a me ka awelika;
- ka lōʻihi;
- nā ʻokoʻa, kaʻina a me ka mālama ʻole ʻia;
- nā ana huahana.

ʻO ka hoʻāʻo ʻana

Kapa ʻia ʻo Squeeze Testing ʻo "squeezing" testing. Ua hoʻokomo ʻia ka inoa o ka ʻenehana i Netflix. ʻO ka mea nui, ʻo ia ka mea mua mākou e hoʻopiha ai i hoʻokahi laʻana me ke kaʻa maoli a hiki i kahi o ka hāʻule ʻole a no laila ke kau nei i kona palena. A laila hoʻohui mākou i kahi manawa hou a hoʻouka i kēia pālua - hou i ka nui; ʻike mākou i ko lākou kaupaku a me ka delta me ka "squeeze" mua. A no laila hoʻohui mākou i hoʻokahi manawa i ka manawa a helu i ke ʻano o nā loli.
E kahe ana ka ʻikepili hoʻāʻo ma o ka "piʻi ʻana" i loko o kahi waihona metric maʻamau, kahi e hoʻonui ai mākou i nā hopena hoʻouka ʻana me lākou, a i ʻole e hoʻololi i nā "synthetics" me lākou.

Hana ʻia

• Hoʻonui. Ke ʻōwili nei mākou i kahi lawelawe i ka hana ʻana, nānā mākou i ke ʻano o ka unahi ʻana. I kā mākou ʻike, ʻaʻole pono ka nānā ʻana i nā hōʻailona CPU wale nō. ʻO ka scaling kaʻa me ka RPS benchmarking i kāna ʻano maʻemaʻe e hana, akā no kekahi mau lawelawe wale nō, e like me ke kahe pūnaewele. No laila ke nānā mua nei mākou i nā metric huahana pili pono.

ʻO ka hopena, ke nānā nei mākou i ka scaling:
- Nā hōʻailona CPU a me RAM,
- ka helu o nā noi i ka pila,
- manawa pane,
- wānana ma muli o ka ʻikepili mōʻaukala i hōʻiliʻili ʻia.

I ka hoʻonui ʻana i kahi lawelawe, he mea nui nō hoʻi e nānā i kona mau hilinaʻi i ʻole mākou e hoʻonui i ka lawelawe mua ma ke kaulahao, a ʻo ka poʻe i loaʻa iā ia e hāʻule ma lalo o ka ukana. No ka hoʻokumu ʻana i kahi ukana ʻae ʻia no ka ʻauʻau holoʻokoʻa o nā lawelawe, nānā mākou i ka ʻikepili mōʻaukala o ka lawelawe hilinaʻi "kokoke" (e pili ana i ka hui pū ʻana o nā hōʻailona CPU a me RAM, i hui pū ʻia me nā metric app-specific) a hoʻohālikelike iā lākou me ka ʻikepili mōʻaukala. o ka lawelawe hoʻomaka ʻana, a pēlā aku ma loko o ke "kauoha hilinaʻi" ", mai luna a lalo.

Ka lawelawe

Ma hope o ka hoʻokomo ʻia ʻana o ka microservice, hiki iā mākou ke hoʻopili i nā mea hoʻoiho iā ia.

Eia nā kūlana maʻamau i loaʻa ai nā mea hoʻoulu.
— Ua ʻike ʻia ka neʻe ʻana i ka pōʻino.
— Ua hoʻokuʻu ʻia nā mea hou palekana.
— ʻAʻole i hōʻano hou ʻia ka lawelawe ponoʻī no ka manawa lōʻihi.
— Ua emi iki ka ukana ma ka lawelawe a i ʻole kekahi o kāna mau huahana ma waho o ka laulā maʻamau.
— ʻAʻole hoʻokō ka lawelawe i nā koi o ka paepae hou.

ʻO kekahi o nā mea hoʻonāukiuki ke kuleana no ka paʻa o ka hana, ʻo kekahi - ma ke ʻano he hana o ka mālama ʻana i ka ʻōnaehana - no ka laʻana, ʻaʻole i hoʻokau ʻia kekahi lawelawe no ka manawa lōʻihi a ua pau kāna kiʻi kumu i ka hele ʻana i nā loiloi palekana.

Papa kuhikuhi

I ka pōkole, ʻo ka dashboard ka papa mana o kā mākou PaaS holoʻokoʻa.

  • ʻO kahi kikoʻī o ka ʻike e pili ana i ka lawelawe, me ka ʻikepili ma kāna uhi hoʻāʻo, ka helu o kāna mau kiʻi, ka helu o nā kope hana, nā ʻano, etc.
  • He mea hana no ka kānana ʻana i ka ʻikepili ma o nā lawelawe a me nā lepili (nā hōʻailona no nā ʻāpana ʻoihana, hana huahana, etc.)
  • He mea hana no ka hoʻohui ʻana me nā mea hana ʻenehana no ka ʻimi ʻana, logging, a me ka nānā ʻana.
  • ʻO kahi helu hoʻokahi o nā palapala lawelawe.
  • ʻO kahi manaʻo hoʻokahi o nā hanana āpau ma nā lawelawe.

He aha kā mākou ʻike e pili ana i nā microservices
He aha kā mākou ʻike e pili ana i nā microservices
He aha kā mākou ʻike e pili ana i nā microservices
He aha kā mākou ʻike e pili ana i nā microservices

Hōʻuluʻulu

Ma mua o ka hoʻolauna ʻana iā PaaS, hiki i kahi mea hoʻomohala hou ke hoʻohana i kekahi mau pule e hoʻomaopopo i nā mea hana a pau e pono ai e hoʻomaka i kahi microservice i ka hana ʻana: Kubernetes, Helm, kā mākou mau hiʻohiʻona TeamCity kūloko, hoʻonohonoho i nā pilina i nā ʻikepili a me nā hūnā ma ke ʻano hoʻomanawanui hewa, etc. lawe i ʻelua mau hola e heluhelu ai i ka hoʻomaka wikiwiki a hana i ka lawelawe ponoʻī.

Ua hāʻawi wau i kahi hōʻike e pili ana i kēia kumuhana no HighLoad ++ 2018, hiki iā ʻoe ke nānā wikiō и hōʻike hōʻikeʻike.

ʻO ke mele bonus no ka poʻe heluhelu a hiki i ka hopena

Ke hoʻonohonoho nei mākou ma Avito i kahi hoʻomaʻamaʻa kūloko ʻekolu lā no nā mea hoʻomohala mai Chris Richardson, he loea i ka hoʻolālā microservice. Makemake mākou e hāʻawi i ka manawa e komo ai i kekahi o ka poʻe heluhelu o kēia pou. he mea Ua kau ʻia ka papahana aʻo.

E mālama ʻia ke aʻo ʻana mai ʻAukake 5 a 7 ma Moscow. He mau lā hana kēia e hoʻopau piha ʻia. Aia ka ʻaina awakea a me ke aʻo ʻana ma kā mākou keʻena, a ʻo ka mea i koho ʻia e uku no ka huakaʻi a me ka noho ʻana iā ia iho.

Hiki iā ʻoe ke noi no ke komo ʻana ma kēia palapala google. Mai iā ʻoe - ka pane i ka nīnau no ke aha e pono ai ʻoe e hele i ka hoʻomaʻamaʻa a me ka ʻike e pili ana i ka hoʻopili ʻana iā ʻoe. E pane ma ka ʻōlelo Pelekania, no ka mea e koho ʻo Chris i ka mea komo e hele i ke aʻo ʻana iā ia iho.
E hoʻolaha mākou i ka inoa o ka mea komo i ka hoʻomaʻamaʻa ʻana i kahi mea hou i kēia pou a ma nā pūnaewele ʻoihana Avito no nā mea hoʻomohala (AvitoTech ma Facebook, Vkontakte, Twitter) ma mua o Iulai 19.

Source: www.habr.com

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