Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Ka la 19 Loetse Moscow etsahetse kopano ea pele ea sehlooho HUG (Highload++ User Group), e neng e nehetsoe ho microservices. Ho ne ho e-na le nehelano ea "Operating Microservices: Size Matters, Esita le Haeba U na le Kubernetes," moo re ileng ra arolelana phihlelo e pharaletseng ea Flant mererong ea ts'ebetso e nang le meralo ea microservice. Pele ho tsohle, e tla ba molemo ho bohle ba ntlafatsang ba nahanang ho sebelisa mokhoa ona morerong oa bona oa hajoale kapa oa nako e tlang.

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Tsebisoa video ea tlaleho (Metsotso e 50, e na le tsebo e ngata ho feta sengoloa), hammoho le karolo ea mantlha e tsoang ho eona ka mokhoa oa mongolo.

NB: Video le nehelano li boetse li fumaneha qetellong ea poso ena.

Selelekela

Hangata pale e monate e na le qalo, morero oa sehlooho le tharollo. Tlaleho ena e tšoana le selelekela, 'me e bohloko haholo. Hape ke habohlokoa ho hlokomela hore e fana ka maikutlo a motho ea ka ntle ho microservices. ho tlatlapa.

Ke tla qala ka graph ena, mongoli oa eona (ka 2015) e ile ea fetoha Martin Fowler:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

E bontša kamoo, tabeng ea kopo ea monolithic e fihlang boleng bo itseng, tlhahiso e qala ho fokotseha. Li-Microservices li fapane ka hore tlhahiso ea pele le tsona e tlase, empa ha ho rarahana ho ntse ho eketseha, ho senyeha ha katleho ha ho bonahale ho bona.

Ke tla kenyelletsa graph ena molemong oa ho sebelisa Kubernetes:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Hobaneng ha kopo e nang le li-microservices e le betere? Hobane moaho o joalo o beha litlhoko tse tebileng bakeng sa meaho, eo le eona e koahetsoeng ka botlalo ke bokhoni ba Kubernetes. Ka lehlakoreng le leng, tse ling tsa ts'ebetso ena li tla ba molemo bakeng sa monolith, haholo-holo hobane monolith e tloaelehileng kajeno ha e le hantle e le monolith (lintlha li tla ba hamorao tlalehong).

Joalokaha u ka bona, graph ea ho qetela (ha lisebelisoa tse peli tsa monolithic le microservice li le mohahong oa motheo le Kubernetes) ha li fapane haholo le tsa pele. E latelang re tla bua ka lits'ebetso tse sebelisoang ho sebelisa Kubernetes.

Li-microservices tse molemo le tse kotsi

'Me mohopolo oa mantlha ke ona:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Ke eng tloaelehileng microservice meralo? E lokela ho u tlisetsa melemo ea sebele, ho eketsa katleho ea mosebetsi oa hau. Haeba re khutlela ho kerafo, ke ena:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Haeba u mo letsetsa molemo, joale ka lehlakoreng le leng la kerafo ho tla ba le kotsi microservices (e sitisa mosebetsi):

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Ho khutlela ho "khopolo ea sehlooho": na ke lokela ho tšepa phihlelo ea ka ho hang? Ho tloha qalong ea selemo sena ke shebile Merero e 85. Hase kaofela ha tsona e neng e le li-microservices (hoo e ka bang karolo ea boraro ho isa ho halofo ea tsona li ne li e-na le mohaho o joalo), empa ena e ntse e le palo e kholo. Rona (Flant company) re le barekisi ba ka ntle re khona ho bona mefuta e fapaneng ea lits'ebetso tse ntlafalitsoeng ka bobeli lik'hamphaning tse nyane (tse nang le baetsi ba 5) le tse kholo (~ bahlahisi ba 500). Molemo o mong ke hore re bona likopo tsena li phela le ho fetoha ho theosa le lilemo.

Ke hobane'ng ha microservices?

Ho potso e mabapi le melemo ea li-microservices ho na le karabo e tobileng haholo ho tsoa ho Martin Fowler ea seng a boletsoe:

  1. meeli e hlakileng ea modularity;
  2. thomello e ikemetseng;
  3. bolokolohi ba ho khetha theknoloji.

Ke buile haholo le baetsi ba meralo ea software le bahlahisi mme ka botsa hore na hobaneng ba hloka li-microservices. 'Me ke entse lethathamo la ka la litebello tsa bona. Se etsahetseng ke sena:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Haeba re hlalosa tse ling tsa lintlha "ka maikutlo," joale:

  • Meeli e hlakileng ea li-module: mona re na le monolith e tšabehang, 'me hona joale ntho e' ngoe le e 'ngoe e tla hlophisoa ka makhethe libakeng tsa polokelo ea Git, moo ntho e' ngoe le e 'ngoe e leng "liluloaneng", tse futhumetseng le tse bonolo ha li kopane;
  • boikemelo ba ho romelloa: re tla khona ho fana ka lits'ebeletso ka boikemelo e le hore nts'etsopele e tsamaee ka potlako (phatlalatsa likarolo tse ncha ka ho tšoana);
  • boipuso ba ntshetsopele: re ka fana ka microservice ena ho sehlopha se le seng / nts'etsopele, 'me e mong ho e mong, ka lebaka leo re ka ntlafatsang kapele;
  • боho tšepahala ho hoholo: haeba ho senyeha ha karoloana ho etsahala (microservice e le 'ngoe ho tloha ho 20 e oela), joale konopo e le' ngoe feela e tla khaotsa ho sebetsa, 'me tsamaiso ka kakaretso e tla tsoela pele ho sebetsa.

Mehaho e tloaelehileng (e kotsi) ea microservice

Ho hlalosa hore na ke hobane'ng ha 'nete e se seo re se lebeletseng, ke tla hlahisa kopanelo setšoantšo sa meralo ea microservice e thehiloeng boiphihlelo bo tsoang mererong e mengata e fapaneng.

Mohlala e ka ba lebenkele le fumanehang marang-rang le tla qothisana lehlokoa le Amazon kapa bonyane OZON. Moralo oa eona oa microservice o shebahala tjena:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Ka mabaka a kopaneng, li-microservices tsena li ngotsoe li-platform tse fapaneng:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Kaha microservice ka 'ngoe e tlameha ho ba le boipuso, bongata ba bona bo hloka database ea bona le cache. Mohaho oa ho qetela ke o latelang:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Liphello tsa eona ke life?

Fowler le eena o na le sena ho na le sehlooho - mabapi le "tefo" bakeng sa ho sebelisa microservices:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

'Me re tla bona haeba litebello tsa rona li ile tsa phethahala.

Hlakola meeli ea li-module...

empa re hloka ho lokisa li-microservices tse kae?ho fetola phetoho? Na re ka tseba hore na ntho e 'ngoe le e' ngoe e sebetsa joang ntle le tracer e abuoang (ka mor'a moo, kopo leha e le efe e sebetsoa ke halofo ea li-microservices)?

Ho na le mohlala "thotoana e kgolo ya ditshila", 'me mona ho ile ha fumaneha hore e ne e le thotoana ea mobu. Ho netefatsa sena, mona ke papiso e hakanyetsoang ea hore na likopo li tsamaea joang:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Boipuso ba thomello...

Ka botekgeniki, e fihletsoe: re ka ntša microservice ka 'ngoe ka thoko. Empa ts'ebetsong o hloka ho ela hloko hore e lula e tsoela pele microservices tse ngata, ’me re lokela ho ela hloko tatellano ea ho phatlalatsoa ha tsona. Ka mokhoa o motle, ka kakaretso re hloka ho lekola potolohong e arohaneng hore na re tsamaisa tokollo ka tatellano e nepahetseng.

Tokoloho ea ho khetha theknoloji...

Ke. Hopola feela hore hangata tokoloho e itšetlehile ka tlōlo ea molao. Ho bohlokoa haholo mona hore u se ke ua khetha theknoloji feela ho "bapala" le bona.

Boikemelo ba ntshetsopele...

Mokhoa oa ho etsa loop ea liteko bakeng sa ts'ebeliso eohle (e nang le likarolo tse ngata)? Empa u ntse u lokela ho e boloka e le morao-rao. Sena sohle se lebisa tabeng ea hore palo ea sebele ea lipotoloho tsa teko, eo ka kakaretso re ka e kenyelletsang, e fetoha e fokolang.

Ho thoe'ng ka ho tsamaisa see sohle sebakeng sa heno? .. Hoa etsahala hore hangata moqapi o etsa mosebetsi oa hae ka boithaopo, empa "ka tšohanyetso", hobane o qobelloa ho ema ho fihlela potoloho e lokolohile bakeng sa tlhahlobo.

Sekala se arohaneng...

Ho joalo, empa e na le moeli sebakeng sa DBMS e sebelisitsoeng. Mohlala o fanoeng oa meralo, Cassandra e ke ke ea ba le mathata, empa MySQL le PostgreSQL li tla ba le mathata.

Боho tšepahala ho feta...

Hase feela hore ho hlōleha ha microservice e le 'ngoe ha e le hantle hangata ho senya ts'ebetso e nepahetseng ea tsamaiso eohle, empa ho boetse ho na le bothata bo bocha: ho etsa hore microservice e 'ngoe le e' ngoe e mamelle liphoso ho thata haholo. Hobane li-microservices li sebelisa theknoloji e fapaneng (memcache, Redis, joalo-joalo), bakeng sa e mong le e mong o hloka ho nahana ka ntho e 'ngoe le e' ngoe le ho e sebelisa, eo, ha e le hantle, e ka khonehang, empa e hloka lisebelisoa tse kholo.

Melaho e lekanyang...

Sena se setle haholo.

"Bonolo" ba li-microservices ...

Ha re na tse kholo feela marang-rang holimo (likopo tsa DNS lia ata, joalo-joalo), empa hape ka lebaka la lipotso tse ngata tseo re li qalileng pheta lintlha (li-cache tsa polokelo), e leng se entseng hore ho be le polokelo e ngata.

'Me sena ke sephetho sa ho fihlela litebello tsa rona:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Empa ha se eona feela!

Hobane:

  • Mohlomong re tla hloka bese ea molaetsa.
  • Mokhoa oa ho etsa backup e tsitsitseng ka nako e nepahetseng ka nako? E 'ngoe feela ea sebele kgetho ke ho tima sephethephethe bakeng sa sena. Empa u ka etsa see joang tlhahisong?
  • Haeba re bua ka ho tšehetsa libaka tse 'maloa, joale ho hlophisa botsitso ho e' ngoe le e 'ngoe ea tsona ke mosebetsi o boima haholo.
  • Bothata ba ho etsa liphetoho tse bohareng bo hlaha. Mohlala, haeba re hloka ho nchafatsa mofuta oa PHP, re tla hloka ho itlama sebakeng se seng le se seng sa polokelo ('me ho na le tse ngata).
  • Keketseho ea ho rarahana ha ts'ebetso, ha e le hantle, ke ea exponential.

Ho etsa eng ka see sohle?

Qala ka kopo ea monolithic. Phihlelo ea Fowler e re hoo e batlang e le lits'ebetso tsohle tse atlehileng tsa microservice li qalile e le monolith e ileng ea fetoha kholo haholo mme ea robeha. Ka nako e ts'oanang, hoo e ka bang litsamaiso tsohle tse hahiloeng e le li-microservices ho tloha qalong li ile tsa ba le mathata a tebileng.

Mohopolo o mong oa bohlokoa ke hore morero o nang le meralo ea microservice o atlehe, o tlameha ho tseba hantle le sebaka sa thuto, le mokhoa oa ho etsa li-microservices. 'Me tsela e molemohali ea ho ithuta sebaka sa thuto ke ho etsa monolith.

Empa ho thoe’ng haeba re se re le boemong boo?

Mohato oa pele oa ho rarolla bothata leha e le bofe ke ho lumellana le eona le ho utloisisa hore ke bothata, hore ha re sa batla ho utloa bohloko.

Haeba, tabeng ea monolith e ntseng e hōla (ha re feletsoe ke monyetla oa ho reka lisebelisoa tse eketsehileng bakeng sa eona), re e khaola, joale tabeng ena pale e fapaneng e hlaha: ha li-microservices tse feteletseng ha li sa thusa, empa li sitisa - kgaola ho feteletseng le ho hodisa!

Ka mohlala, bakeng sa setšoantšo se kopanetsoeng se tšohliloeng ka holimo ...

Lahla li-microservices tse belaetsang ka ho fetesisa:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Kopanya li-microservices tsohle tse ikarabellang bakeng sa tlhahiso ea pele:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

... ka har'a microservice e le 'ngoe, e ngotsoeng ka mokhoa o le mong (oa sejoale-joale le o tloaelehileng, joalo ka ha u nahana) puo / moralo:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

E tla ba le ORM e le 'ngoe (DBMS e le' ngoe) 'me ea pele ea likopo tse' maloa:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

... empa ka kakaretso o ka fetisetsa tse ling tse ngata moo, o fumana sephetho se latelang:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Ho feta moo, ho Kubernetes re tsamaisa tsena tsohle ka linako tse fapaneng, ho bolelang hore re ntse re ka lekanya mojaro le ho ba lekanya ka thoko.

Ho akaretsa

Sheba setšoantšo se seholoanyane. Hangata, mathata ana 'ohle ka li-microservices a hlaha hobane motho e mong o ile a nka mosebetsi oa hae, empa o ne a batla ho "bapala ka microservices".

Lentsoeng "microservices" karolo ea "micro" ha e na thuso.. Li "micro" feela hobane li nyane ho feta monolith e kholo. Empa u se ke ua li nka e le ntho e nyenyane.

Mme bakeng sa mohopolo oa ho qetela, ha re khutleleng chate ea mantlha:

Microservices: Boholo bo bohlokoa, leha o na le Kubernetes

Lengolo le ngotsoeng ho eona (holimo ka ho le letona) e bua ka taba ea hore litsebo tsa sehlopha se etsang hore morero oa hau e be tsa mantlha kamehla - ba tla bapala karolo ea bohlokoa khethong ea hau pakeng tsa li-microservices le monolith. Haeba sehlopha se se na litsebo tse lekaneng, empa se qala ho etsa li-microservices, pale e tla ba e bolaeang.

Lifitio le li-slide

Video e tsoang puong (~ metsotso e 50; ka bomalimabe, ha e fane ka maikutlo a mangata a baeti, ao haholo-holo a ileng a beha maikutlo a tlaleho, empa ke kamoo e leng kateng):

Tlhahiso ea tlaleho:

PES

Litlaleho tse ling ho blog ea rona:

U ka boela ua thahasella lingoliloeng tse latelang:

Source: www.habr.com

Eketsa ka tlhaloso