Nyob zoo! Kuv lub npe yog Vadim Madison, Kuv coj txoj kev loj hlob ntawm Avito System Platform. Nws tau hais ntau dua ib zaug yuav ua li cas peb hauv tuam txhab tau tsiv los ntawm monolithic architecture mus rau microservices ib qho. Nws yog lub sijhawm los qhia seb peb tau hloov pauv peb cov txheej txheem li cas kom tau txais txiaj ntsig zoo tshaj plaws ntawm microservices thiab tiv thaiv peb tus kheej kom tsis txhob poob rau hauv lawv. Yuav ua li cas PaaS pab peb ntawm no, yuav ua li cas peb simplified xa mus thiab txo cov creation ntawm ib tug microservice rau ib tug nias - nyeem rau. Tsis yog txhua yam kuv sau txog hauv qab no tau ua tiav hauv Avito, qee qhov nws yog qhov peb tsim peb lub platform.
(Thiab thaum kawg ntawm tsab xov xwm no, kuv mam li tham txog lub sijhawm los mus koom lub rooj sib tham peb-hnub los ntawm microservice architecture kws tshaj lij Chris Richardson).
Yuav ua li cas peb tuaj rau microservices
Avito yog ib lub vev xaib loj tshaj plaws hauv ntiaj teb; ntau tshaj 15 lab kev tshaj tawm tshiab tau tshaj tawm rau nws ib hnub. Peb lub backend txais ntau tshaj 20 txhiab thov ib ob. Tam sim no peb muaj ntau pua microservices.
Peb tau tsim lub microservice architecture rau ntau xyoo tam sim no. Yuav ua li cas raws nraim - peb cov npoj yaig hauv kev nthuav dav hais ntawm peb ntu ntawm RIT ++ 2017. Ntawm CodeFest 2017 (saib. video), Sergey Orlov thiab Mikhail Prokopchuk piav qhia meej vim li cas peb xav tau kev hloov pauv mus rau microservices thiab lub luag haujlwm dab tsi Kubernetes ua si ntawm no. Zoo, tam sim no peb tab tom ua txhua yam kom txo qis tus nqi scaling uas muaj nyob rau hauv xws li architecture.
Thaum pib, peb tsis tau tsim ib qho ecosystem uas yuav pab tau peb tsim thiab tsim microservices. Lawv tsuas sau cov kev daws teeb meem uas muaj txiaj ntsig zoo, qhib lawv hauv tsev thiab caw tus tsim tawm los daws lawv. Raws li qhov tshwm sim, nws tau mus rau kaum ob qhov chaw (dashboards, cov kev pabcuam sab hauv), tom qab ntawd nws tau muaj zog dua hauv nws txoj kev xav txiav cov lej qub, hauv monolith. Cov xim ntsuab hauv daim duab hauv qab no qhia tias tus tsim tawm ua li cas ib txoj hauv kev los yog lwm qhov nrog nws tus kheej tes, thiab xim daj qhia tias automation.
Tam sim no hauv PaaS CLI qhov hluav taws xob, qhov kev pabcuam tshiab tau tsim nrog ib qho kev hais kom ua, thiab cov ntaub ntawv tshiab tau ntxiv nrog ob ntxiv thiab xa mus rau theem.
Yuav ua li cas kov yeej lub sijhawm ntawm "microservice fragmentation"
Nrog lub monolithic architecture, rau lub hom phiaj ntawm qhov sib xws ntawm cov kev hloov pauv hauv cov khoom, cov neeg tsim khoom raug yuam kom txiav txim siab seb puas muaj dab tsi tshwm sim nrog lawv cov neeg nyob ze. Thaum ua haujlwm ntawm qhov tshiab architecture, cov ntsiab lus kev pabcuam tsis nyob ntawm ib leeg.
Tsis tas li ntawd, txhawm rau txhim kho microservice architecture kom ua tau zoo, ntau cov txheej txheem yuav tsum tau tsim, uas yog:
II. Consolidated collector nrog kev tswj ntawm tag nrho cov cuab yeej los ntawm ib tug ntau dashboard.
III. Cia. Txuas nrog cov sijhawm teem sijhawm uas cia li teeb tsa ua rau cov haujlwm tseem ceeb. Ua tsaug rau cov txheej txheem zoo li no, tsis yog ib txoj haujlwm uas ploj lawm vim ib tus neeg tsis nco qab teeb tsa txoj haujlwm hauv Jira. Peb siv cov cuab yeej sab hauv hu ua Atlas rau qhov no.
Kev siv cov microservices hauv Avito kuj tau ua raws li ib lub tswv yim, uas yooj yim tswj lawv ntawm txhua theem ntawm kev txhim kho thiab tso tawm.
Cov txheej txheem microservice txoj kev loj hlob kav dej ua haujlwm li cas?
Feem ntau, microservice creation saw zoo li no:
CLI-push β Continuous Integration β Ci β Deploy β Artificial tests β Canary test β Squeeze Test β Production β Maintenance.
IV. FAQ, qhov twg nws yuav zoo rau kev cia siab txog cov teeb meem uas koj cov npoj yaig yuav ntsib thaum ua haujlwm nrog kev pabcuam.
V. Nqe lus piav qhia txog qhov kawg rau API. Yog tias mam li nco dheev koj tsis tau qhia meej qhov chaw, cov npoj yaig uas nws cov microservices cuam tshuam nrog koj li yuav luag them rau nws. Tam sim no peb siv Swagger thiab peb cov tshuaj hu ua luv luv rau qhov no.
VI. Daim ntawv lo. Los yog cov cim uas qhia tias yam khoom twg, kev ua haujlwm, lossis kev faib khoom ntawm lub tuam txhab cov kev pabcuam yog. Lawv pab koj nkag siab sai, piv txwv li, txawm tias koj tab tom txiav kev ua haujlwm uas koj cov npoj yaig tau nthuav tawm rau tib lub lag luam ib lub lis piam dhau los.
VII. Tus tswv lossis tus tswv ntawm qhov kev pabcuam. Feem ntau, nws - lossis lawv - tuaj yeem txiav txim siab siv PaaS, tab sis kom nyob rau sab nyab xeeb, peb xav kom tus tsim tawm qhia lawv tus kheej.
Tshawb xyuas kev tsiv teb tsaws. Peb xyuas seb lawv puas muaj peev xwm txaus ntshai. Piv txwv li, nyob rau hauv ib tug ntawm lawv ib tug hloov lub rooj los yog ib yam dab tsi lwm yam pops uas yuav ua txhaum lub compatibility ntawm cov ntaub ntawv schema ntawm txawv versions ntawm cov kev pab cuam. Tom qab ntawd qhov kev tsiv teb tsaws tsis tau ua, tab sis muab tso rau hauv kev tso npe - PaaS yuav tsum tau teeb tsa tus tswv kev pabcuam thaum nws muaj kev nyab xeeb siv nws.
Ci
Cov theem tom ntej yog ntim cov kev pabcuam ua ntej xa mus.
Tsim daim ntawv thov. Raws li cov classics - hauv Docker duab.
Generation of Helm kab kos rau kev pabcuam nws tus kheej thiab lwm yam kev pabcuam. Xws li rau databases thiab cache. Lawv raug tsim cia li ua raws li app.toml config uas tau tsim los ntawm CLI-push theem.
a) Peb saib tag nrho cov load.
- me me dhau - feem ntau yuav muaj qee yam tsis ua haujlwm tag nrho yog tias lub load dheev poob ob peb zaug.
- Loj dhau - optimization yuav tsum tau.
b) Peb saib qhov kev txiav tawm raws li RPS.
Ntawm no peb saib qhov txawv ntawm qhov tam sim no version thiab yav dhau los ib qho thiab tag nrho kom muaj nuj nqis. Piv txwv li, yog tias ib qho kev pabcuam tsim tawm 100 rps, ces nws yog sau tsis zoo, lossis qhov no yog nws qhov tshwj xeeb, tab sis nyob rau hauv txhua rooj plaub, qhov no yog ib qho laj thawj los saib cov kev pabcuam zoo heev.
Yog tias, ntawm qhov tsis sib xws, muaj ntau RPS, ces tej zaum muaj qee yam kab laum thiab qee qhov kawg ntawm cov ntsiab lus tau tso tseg tsis ua haujlwm them nyiaj, thiab qee qhov lwm tus tsuas yog tshwm sim. return true;
Canary xeem
Tom qab peb dhau qhov kev ntsuam xyuas hluavtaws, peb sim microservice ntawm cov neeg siv tsawg. Peb pib ua tib zoo, nrog me me ntawm cov kev pabcuam cov neeg tuaj saib - tsawg dua 0,1%. Nyob rau theem no, nws yog ib qho tseem ceeb heev uas qhov tseeb technical thiab cov khoom ntsuas tau suav nrog hauv kev saib xyuas kom lawv qhia qhov teeb meem hauv kev pabcuam sai li sai tau. Lub sijhawm tsawg kawg nkaus rau kev xeem canary yog 5 feeb, qhov tseem ceeb yog 2 teev. Rau cov kev pabcuam nyuaj, peb teem sijhawm manually.
Cia peb tsom xam:
- cov lus qhia tshwj xeeb, tshwj xeeb, cov neeg ua haujlwm php-fpm;
- yuam kev hauv Sentry;
- teb cov xwm txheej;
- lub sij hawm teb, meej thiab nruab nrab;
- latency;
- kev zam, ua tiav thiab tsis siv;
- cov khoom ntsuas.
Squeeze Test
Squeeze Testing tseem hu ua "squeezing" testing. Lub npe ntawm cov txheej txheem tau nkag mus rau hauv Netflix. Nws cov ntsiab lus yog tias thawj zaug peb sau ib qho piv txwv nrog cov tsheb tiag tiag mus rau qhov tsis ua tiav thiab yog li teeb tsa nws qhov kev txwv. Tom qab ntawd peb ntxiv lwm qhov piv txwv thiab thauj cov khub no - dua rau qhov siab tshaj plaws; peb pom lawv qab nthab thiab delta nrog thawj "squeeze". Thiab yog li peb txuas ib qho piv txwv ntawm ib lub sijhawm thiab suav cov qauv ntawm kev hloov pauv.
Kuaj cov ntaub ntawv los ntawm "squeezing" kuj ntws mus rau hauv ib qho kev ntsuas cov ntaub ntawv, qhov twg peb tuaj yeem txhawb nqa cov khoom siv dag zog nrog lawv, lossis txawm hloov "synthetics" nrog lawv.
Ntau lawm
β’ Scaling. Thaum peb yob tawm ib qho kev pabcuam rau kev tsim khoom, peb saib xyuas seb nws ntsuas li cas. Hauv peb qhov kev paub dhau los, kev saib xyuas tsuas yog cov ntsuas CPU tsis muaj txiaj ntsig. Nws pib scaling nrog RPS benchmarking nyob rau hauv nws cov ntshiab daim ntawv ua hauj lwm, tab sis tsuas yog rau tej yam kev pab cuam, xws li streaming online. Yog li peb saib ua ntej ntawm daim ntawv thov tshwj xeeb cov khoom ntsuas.
Yog li ntawd, thaum scaling peb tsom xam:
- CPU thiab RAM ntsuas,
- tus naj npawb ntawm kev thov hauv kab,
- lub sijhawm teb,
- Kev kwv yees raws li cov ntaub ntawv keeb kwm sau tseg.
Thaum ntsuas qhov kev pabcuam, nws tseem ceeb heev uas yuav tsum tau saib xyuas nws qhov kev cia siab kom peb tsis txhob ntsuas qhov kev pabcuam thawj zaug hauv cov saw hlau, thiab cov uas nws nkag mus tau poob qis. Txhawm rau tsim kom muaj kev txaus siab rau tag nrho cov kev pabcuam, peb saib cov ntaub ntawv keeb kwm ntawm qhov "ze" kev pabcuam (raws li kev sib xyaw ntawm CPU thiab RAM ntsuas, ua ke nrog cov kev ntsuas tshwj xeeb) thiab sib piv nrog cov ntaub ntawv keeb kwm. ntawm qhov kev pabcuam pib, thiab lwm yam thoob plaws hauv "kev vam khom"", los ntawm sab saum toj mus rau hauv qab.
Kev pab
Tom qab lub microservice tau muab tso rau hauv kev ua haujlwm, peb tuaj yeem txuas cov txiaj ntsig rau nws.
Ntawm no yog cov xwm txheej uas tshwm sim.
- Pom muaj peev xwm tsiv teb tsaws chaw.
- Kev ruaj ntseg hloov tshiab tau raug tso tawm.
- Cov kev pabcuam nws tus kheej tsis tau hloov kho rau lub sijhawm ntev.
- Lub nra ntawm qhov kev pabcuam tau pom zoo txo ββqis lossis qee qhov ntawm nws cov khoom ntsuas tau nyob sab nraum qhov qub.
- Cov kev pabcuam tsis ua raws li lub platform tshiab.
Qee qhov kev cuam tshuam yog lub luag haujlwm rau kev ruaj ntseg ntawm kev ua haujlwm, qee qhov - raws li kev ua haujlwm ntawm kev saib xyuas lub cev - piv txwv li, qee qhov kev pabcuam tsis tau siv sijhawm ntev thiab nws cov duab hauv qab tau tso tseg tsis dhau kev kuaj xyuas kev ruaj ntseg.
Dashboard
Nyob rau hauv luv luv, lub dashboard yog cov tswj vaj huam sib luag ntawm peb tag nrho PaaS.