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:
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:
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:
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:
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):
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:
meej ciam teb ntawm modularity;
kev xa tawm ywj siab;
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:
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:
Rau kev sib xyaw ua ke ntawm cov laj thawj, cov microservices no tau sau rau ntawm ntau lub platform:
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:
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:
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:
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.
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:
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.
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?
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:
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):