Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Cuaj hlis 19 nyob rau hauv Moscow coj qhov chaw thawj lub rooj sib tham thematic HUG (Highload ++ User Group), uas tau mob siab rau microservices. Muaj ib qho kev nthuav qhia "Operating Microservices: Size Matters, Txawm Yog Koj Muaj Kubernetes," uas peb tau qhia Flan qhov kev paub dhau los hauv kev ua haujlwm nrog microservice architecture. Ua ntej tshaj plaws, nws yuav muaj txiaj ntsig zoo rau txhua tus neeg tsim khoom uas xav txog kev siv txoj hauv kev no hauv lawv qhov project tam sim no lossis yav tom ntej.

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Qhia video ntawm tsab ntawv ceeb toom (50 feeb, ntau cov ntaub ntawv ntau dua li tsab xov xwm), nrog rau cov ntsiab lus tseem ceeb ntawm nws hauv daim ntawv.

NB: Cov yeeb yaj kiab thiab kev nthuav qhia kuj muaj nyob rau ntawm qhov kawg ntawm tsab xov xwm no.

Taw qhia

Feem ntau zaj dab neeg zoo muaj qhov pib, lub ntsiab lus tseem ceeb thiab kev daws teeb meem. Daim ntawv tshaj tawm no zoo li qhov ua ntej, thiab kev tu siab ntawm qhov ntawd. Nws tseem ceeb heev uas yuav tsum nco ntsoov tias nws muab cov neeg sab nraud saib ntawm microservices. siv dag zog.

Kuv mam li pib nrog daim duab no, tus sau uas (hauv 2015) tau ua Martin Fowler:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Nws qhia tau hais tias yuav ua li cas, nyob rau hauv cov ntaub ntawv ntawm ib tug monolithic daim ntawv thov mus txog ib tug tej yam nqi, productivity pib poob. Microservices txawv nyob rau hauv qhov pib tsim khoom nrog lawv qis dua, tab sis raws li complexity nce, lub degradation nyob rau hauv efficiency yog tsis pom zoo rau lawv.

Kuv mam li ntxiv rau daim duab no rau rooj plaub ntawm kev siv Kubernetes:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Vim li cas ib daim ntawv thov nrog microservices zoo dua? Vim hais tias xws li ib tug architecture tso rau pem hauv ntej cov kev cai loj rau lub architecture, uas nyob rau hauv lem yog zoo kawg nkaus them los ntawm lub peev xwm ntawm Kubernetes. Ntawm qhov tod tes, qee qhov kev ua haujlwm no yuav muaj txiaj ntsig zoo rau lub monolith, tshwj xeeb tshaj yog vim cov monolith niaj hnub no tsis yog ib qho monolith (cov ntsiab lus yuav nyob tom qab hauv tsab ntawv ceeb toom).

Raws li koj tuaj yeem pom, daim duab kawg (thaum ob qho tib si monolithic thiab microservice daim ntawv thov nyob rau hauv kev tsim kho nrog Kubernetes) tsis txawv ntawm qhov qub. Tom ntej no peb yuav tham txog cov ntawv thov siv Kubernetes.

Muaj txiaj ntsig thiab tsis zoo microservices

Thiab ntawm no yog lub tswv yim tseem ceeb:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Dab tsi yog ib txwm microservice architecture? Nws yuav tsum coj koj cov txiaj ntsig tiag tiag, ua rau koj ua haujlwm tau zoo. Yog tias peb rov qab mus rau daim duab, ntawm no yog:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Yog koj hu nws pab tau, ces nyob rau sab nraud ntawm daim duab yuav muaj phom sij microservices ( cuam tshuam nrog kev ua haujlwm):

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Rov qab mus rau "lub tswv yim tseem ceeb": Kuv puas yuav tso siab rau kuv qhov kev paub dhau los? Txij thaum pib ntawm lub xyoo no kuv tau saib 85 qhov project. Tsis yog txhua tus ntawm lawv yog microservices (kwv yees li ib feem peb mus rau ib nrab ntawm lawv muaj xws li architecture), tab sis qhov no tseem yog ib tug loj. Peb (Flant tuam txhab) raws li outsourcers tswj kom pom ntau yam ntawm daim ntawv thov tsim ob qho tib si hauv cov tuam txhab me (nrog 5 tus tsim tawm) thiab loj (~ 500 tus tsim tawm). Ib qho txiaj ntsig ntxiv yog tias peb pom cov ntawv thov no nyob thiab hloov kho ntau xyoo.

Vim li cas microservices?

Rau cov lus nug txog cov txiaj ntsig ntawm microservices muaj lus teb heev los ntawm Martin Fowler uas twb tau hais lawm:

  1. meej ciam teb ntawm modularity;
  2. kev xa tawm ywj siab;
  3. kev ywj pheej xaiv technologies.

Kuv tau tham ntau heev rau software architects thiab developers thiab nug yog vim li cas lawv xav tau microservices. Thiab kuv tau ua kuv daim ntawv teev npe ntawm lawv qhov kev cia siab. Nov yog qhov tshwm sim:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Yog tias peb piav qhia qee cov ntsiab lus "hauv kev xav," ces:

  • meej ciam teb ntawm modules: ntawm no peb muaj ib tug txaus ntshai monolith, thiab tam sim no txhua yam yuav tsum tau zoo zoo nyob rau hauv Git repositories, nyob rau hauv uas txhua yam yog "ntawm lub rhawv", qhov sov thiab mos yog tsis tov;
  • Kev xa tawm ywj pheej: peb yuav tuaj yeem yob tawm cov kev pabcuam ntawm nws tus kheej kom txoj kev loj hlob sai dua (tshaj tawm cov yam ntxwv tshiab nyob rau tib lub sijhawm);
  • kev ywj pheej ntawm kev loj hlob: peb tuaj yeem muab qhov microservice no rau ib pab neeg / tus tsim tawm, thiab ib qho rau lwm tus, ua tsaug uas peb tuaj yeem txhim kho sai dua;
  • Π±ΠΎKev ntseeg tau ntau dua: yog tias ib nrab degradation tshwm sim (ib qho microservice tawm ntawm 20 poob), ces tsuas yog ib lub pob yuav tsum tsis ua haujlwm, thiab lub kaw lus tag nrho yuav ua haujlwm ntxiv.

Hom (teeb meem) microservice architecture

Los piav qhia vim li cas qhov tseeb tsis yog qhov peb xav tau, kuv yuav nthuav tawm pawg ib daim duab ntawm microservice architecture raws li kev paub los ntawm ntau qhov haujlwm sib txawv.

Ib qho piv txwv yuav yog lub khw muag khoom hauv online uas yuav sib tw nrog Amazon lossis tsawg kawg OZON. Nws microservice architecture zoo li no:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Rau kev sib xyaw ua ke ntawm cov laj thawj, cov microservices no tau sau rau ntawm ntau lub platform:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Txij li txhua lub microservice yuav tsum muaj kev ywj pheej, ntau ntawm lawv xav tau lawv tus kheej database thiab cache. Qhov kawg architecture yog raws li nram no:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Dab tsi yog nws qhov tshwm sim?

Fowler muaj qhov no thiab muaj ib tsab xov xwm - hais txog "kev them nyiaj" rau kev siv microservices:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Thiab peb yuav pom tias peb cov kev cia siab tau ua tiav.

Clear ciam teb ntawm modules ...

Tsis tau Muaj pes tsawg microservices peb yuav tsum tau kho?dov tawm qhov kev hloov? Peb puas tuaj yeem txiav txim siab seb txhua yam ua haujlwm li cas yam tsis muaj kev faib tawm (tom qab tag nrho, ib qho kev thov raug ua tiav los ntawm ib nrab ntawm microservices)?

Muaj tus qauv "pob av loj", thiab ntawm no nws tau dhau los ua ib qho kev faib tawm ntawm cov av. Yuav kom paub meej qhov no, ntawm no yog ib qho piv txwv ntawm qhov kev thov mus li cas:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Deployment Independence...

Technically, nws tau ua tiav: peb tuaj yeem dov tawm txhua microservice cais. Tab sis nyob rau hauv kev xyaum koj yuav tsum tau coj mus rau hauv tus account tias nws ib txwm dov tawm ntau microservices, thiab peb yuav tsum coj mus rau hauv tus account qhov kev txiav txim ntawm lawv rollout. Nyob rau hauv ib txoj kev zoo, peb feem ntau yuav tsum tau sim nyob rau hauv ib tug cais Circuit Court seb peb puas dov tawm qhov kev tso tawm nyob rau hauv qhov kev txiav txim kom raug.

Kev ywj pheej xaiv tshuab ...

Nws yog. Cia li nco ntsoov tias kev ywj pheej feem ntau ciam teb rau kev tsis ncaj ncees. Nws tseem ceeb heev ntawm no tsis txhob xaiv cov thev naus laus zis tsuas yog "ua si" nrog lawv.

Kev ywj pheej ntawm kev loj hlob ...

Yuav ua li cas ua ib lub voj voog rau tag nrho daim ntawv thov (nrog ntau yam khoom)? Tab sis koj tseem yuav tau khaws nws mus txog hnub tim. Tag nrho cov no coj mus rau qhov tseeb tias tus naj npawb ntawm cov xeem circuits, uas peb tuaj yeem nyob hauv txoj cai muaj, hloov tawm kom tsawg.

Thiab xa tag nrho cov no hauv zos?.. Nws hloov tawm tias feem ntau tus tsim tawm ua nws tus kheej ua haujlwm ntawm nws tus kheej, tab sis "ntawm random", vim nws raug yuam kom tos kom txog thaum lub Circuit Court pub dawb rau kev sim.

Sib cais scaling...

Yog, tab sis nws yog txwv nyob rau hauv cheeb tsam ntawm DBMS siv. Hauv qhov piv txwv architecture muab, Cassandra yuav tsis muaj teeb meem, tab sis MySQL thiab PostgreSQL yuav.

Π‘ΠΎkev ntseeg ntau dua...

Tsis tsuas yog qhov tsis ua haujlwm ntawm ib qho microservice hauv kev muaj tiag feem ntau ua rau kev ua haujlwm raug ntawm tag nrho cov kab ke, tab sis kuj tseem muaj qhov teeb meem tshiab: ua rau txhua qhov kev pabcuam microservice ua txhaum-tho rau yog qhov nyuaj heev. Vim tias microservices siv cov thev naus laus zis sib txawv (memcache, Redis, thiab lwm yam), rau txhua tus koj yuav tsum xav txog txhua yam thiab siv nws, uas, ntawm chav kawm, yog ua tau, tab sis xav tau cov peev txheej loj.

Load ntsuas...

Qhov no yog qhov zoo tiag tiag.

Qhov "lightness" ntawm microservices ...

Peb tsis tsuas muaj loj heev network nyiaj siv ua haujlwm (kev thov rau DNS yog qhov sib npaug, thiab lwm yam), tab sis kuj vim muaj ntau cov lus nug peb tau pib luam cov ntaub ntawv (khoom caches), uas coj mus rau ib tug loj npaum li cas ntawm cia.

Thiab ntawm no yog qhov tshwm sim ntawm kev ua tau raws li peb qhov kev cia siab:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Tab sis tsis yog tag nrho!

Vim:

  • Feem ntau peb yuav xav tau ib lub tsheb npav.
  • Yuav ua li cas thiaj ua tau ib qho thaub qab zoo ib yam ntawm lub sijhawm nyob hauv lub sijhawm? Ib leeg xwb tseeb kev xaiv yog kaw kev khiav tsheb rau qhov no. Tab sis yuav ua li cas ua qhov no hauv kev tsim khoom?
  • Yog tias peb tab tom tham txog kev txhawb nqa ntau lub cheeb tsam, tom qab ntawd kev txhim kho kev ruaj ntseg hauv lawv txhua tus yog ib txoj haujlwm hnyav heev.
  • Qhov teeb meem ntawm kev hloov pauv hauv nruab nrab yog tshwm sim. Piv txwv li, yog tias peb xav tau hloov kho PHP version, peb yuav tsum tau cog lus rau txhua qhov chaw cia khoom (thiab muaj ntau ntau ntawm lawv).
  • Kev loj hlob hauv kev ua haujlwm tsis yooj yim yog, offhand, exponential.

Yuav ua li cas nrog tag nrho cov no?

Pib nrog daim ntawv thov monolithic. Fowler qhov kev paub hais tias tias yuav luag txhua daim ntawv thov microservice ua tiav tau pib ua ib lub monolith uas tau dhau los ua loj heev thiab tom qab ntawd tawg. Nyob rau tib lub sijhawm, yuav luag txhua lub tshuab tsim ua microservices txij thaum pib sai lossis tom qab tau ntsib teeb meem loj.

Lwm qhov kev xav tseem ceeb yog tias rau qhov project nrog microservice architecture kom ua tiav, koj yuav tsum paub zoo heev thiab cheeb tsam kev kawm, thiab yuav ua li cas ua microservices. Thiab txoj hauv kev zoo tshaj plaws los kawm ib cheeb tsam yog ua ib lub monolith.

Tab sis yuav ua li cas yog tias peb twb nyob hauv qhov xwm txheej no?

Thawj kauj ruam los daws qhov teeb meem yog pom zoo nrog nws thiab nkag siab tias nws yog ib qho teeb meem, uas peb tsis xav raug kev txom nyem ntxiv lawm.

Yog hais tias, nyob rau hauv cov ntaub ntawv ntawm ib tug overgrown monolith (thaum peb tau khiav tawm ntawm lub sij hawm mus yuav cov kev pab ntxiv rau nws), peb txiav nws, ces nyob rau hauv cov ntaub ntawv no tus opposite zaj dab neeg tig tawm: thaum ntau microservices tsis pab, tab sis cuam tshuam - txiav tawm tshaj thiab nthuav!

Piv txwv li, rau cov duab sib tham saum toj no ...

Tshem tawm ntawm cov lus nug ntau tshaj plaws microservices:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Muab tag nrho cov microservices lub luag hauj lwm rau frontend tiam:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

... rau hauv ib qho microservice, sau rau hauv ib qho (niaj hnub thiab ib txwm, raws li koj tus kheej xav) lus / qauv:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Nws yuav muaj ib qho ORM (ib qho DBMS) thiab thawj ob peb daim ntawv thov:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

... tab sis feem ntau koj tuaj yeem hloov pauv ntau qhov ntawd, tau txais cov txiaj ntsig hauv qab no:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Ntxiv mus, nyob rau hauv Kubernetes peb khiav tag nrho cov no nyob rau hauv cais, uas txhais tau hais tias peb tseem tuaj yeem ntsuas cov load thiab ntsuas lawv cais.

Sau npe

Saib daim duab loj dua. Feem ntau, tag nrho cov teeb meem no nrog microservices tshwm sim vim ib tug neeg ua lawv txoj haujlwm, tab sis xav "ua si nrog microservices".

Nyob rau hauv lo lus "microservices" qhov "micro" yog redundant.. Lawv yog "micro" nkaus xwb vim tias lawv me dua li cov monolith loj. Tab sis tsis txhob xav txog lawv li tej yam me me.

Thiab rau qhov kev xav kawg, cia peb rov qab mus rau daim ntawv qub:

Microservices: Qhov loj me tseem ceeb, txawm tias koj muaj Kubernetes

Ib daim ntawv sau rau ntawm nws (sab saum toj sab xis) boils mus rau qhov tseeb tias cov kev txawj ntawm pab neeg uas ua rau koj qhov project yog ib txwm tseem ceeb - lawv yuav ua lub luag haujlwm tseem ceeb hauv koj xaiv ntawm microservices thiab monolith. Yog tias pab neeg tsis muaj kev txawj txaus, tab sis nws pib ua microservices, zaj dab neeg no yuav ua rau tuag taus.

Yeeb yaj duab thiab slides

Cov yeeb yaj kiab los ntawm kev hais lus (~ 50 feeb; hmoov tsis zoo, nws tsis qhia ntau tus cwj pwm ntawm cov neeg tuaj saib, uas tau txiav txim siab ntau npaum li cas ntawm tsab ntawv ceeb toom, tab sis qhov ntawd yog li cas):

Kev nthuav qhia ntawm daim ntawv qhia:

PS

Lwm cov ntawv ceeb toom ntawm peb qhov blog:

Tej zaum koj kuj yuav txaus siab rau cov ntawv tshaj tawm hauv qab no:

Tau qhov twg los: www.hab.com

Ntxiv ib saib