Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

September 19 muMoscow zvakaitika yekutanga thematic musangano HUG (Highload ++ User Group), iyo yakatsaurirwa kune microservices. Paive nemharidzo "Kushanda Microservices: Size Matters, Kunyangwe Uine Kubernetes," umo takagovana ruzivo rwakakura rweFlant mukushanda mapurojekiti ane microservice architecture. Chekutanga pane zvese, zvichave zvinobatsira kune vese vanogadzira vari kufunga nezvekushandisa nzira iyi mune yavo yazvino kana yeramangwana chirongwa.

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Kusuma vhidhiyo yemushumo (50 maminetsi, zvakanyanya kudzidzisa kupfuura chinyorwa), pamwe neiyo huru inotorwa kubva mairi muchimiro chemavara.

NB: Vhidhiyo uye mharidzo inowanikwawo pakupera kweichi positi.

Nhanganyaya

Kazhinji nyaya yakanaka ine mavambo, zano guru nechisarudzo. Chirevo ichi chakanyanya kufanana nenhanganyaya, uye inosuwisa pane izvozvo. Izvo zvakakoshawo kuziva kuti inopa maonero ekunze emicroservices. kushandiswa.

Ini ndichatanga neiyi girafu, munyori wayo (muna 2015) akava Martin Fowler:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Inoratidza sei, mune iyo monolithic application inosvika kune imwe kukosha, kugadzirwa kunotanga kuderera. Microservices dzakasiyana mukuti kugadzirwa kwekutanga navo kwakadzikira, asi sezvo kuomarara kunowedzera, kushatisa mukubudirira hakuoneki kwavari.

Ini ndichawedzera kune iyi girafu yenyaya yekushandisa Kubernetes:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Nei application ine microservices iri nani? Nekuti chivakwa chakadaro chinoisa pamberi zvakakomba zvinodikanwa zvezvivakwa, izvo zvakare zvakafukidzwa zvakakwana nekugona kweKubernetes. Kune rimwe divi, mamwe emabasa aya anozobatsira kune monolith, kunyanya nekuti yakajairika monolith nhasi haisi iyo chaiyo monolith (tsanangudzo ichave gare gare mumushumo).

Sezvauri kuona, iyo yekupedzisira girafu (apo ese ari maviri monolithic uye microservice maapplication ari muhurongwa neKubernetes) haina kunyanya kusiyana kubva kune yekutanga. Tevere tichataura nezve maapplication anoitwa uchishandisa Kubernetes.

Inobatsira uye inokuvadza microservices

Uye heino pfungwa huru:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Chii zvakajairika microservice architecture? Inofanira kukuunzira mabhenefiti chaiwo, ichiwedzera kushanda nesimba kwako. Kana tikadzokera kugirafu, heino:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Kana ukamufonera zvinobatsira, ipapo kune rumwe rutivi rwegirafu pachava zvinokuvadza microservices (inovhiringidza basa):

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Kudzokera ku "pfungwa huru": ndinofanira kuvimba neruzivo rwangu zvachose here? Kubva kutanga kwegore rino ndakatarisa 85 mapurojekiti. Havasi vese vaive microservices (inenge chikamu chetatu kusvika hafu yavo vaive nekuvaka kwakadai), asi iyi ichiri nhamba huru. Isu (Flant company) sevanobuda kunze tinokwanisa kuona zvakasiyana-siyana zvekushandisa zvakagadziridzwa zvose mumakambani maduku (ane 5 vagadziri) uye mune makuru (~ 500 vagadziri). Imwe bhenefiti ndeyekuti tinoona izvi zvikumbiro zvichirarama uye zvichishanduka nekufamba kwemakore.

Sei microservices?

Kumubvunzo nezve mabhenefiti e microservices aripo mhinduro chaiyo kubva kune yatotaurwa Martin Fowler:

  1. miganhu yakajeka ye modularity;
  2. kutumirwa kwakazvimirira;
  3. rusununguko rwekusarudza matekinoroji.

Ndataura zvakawanda kune vanogadzira software nevagadziri uye ndakabvunza kuti nei vachida mamicroservices. Uye ndakaita rondedzero yangu yezvavanotarisira. Izvi ndizvo zvakaitika:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Kana tikatsanangura mamwe emapoinzi "mukunzwa," zvino:

  • miganhu yakajeka yemamodules: pano tine monolith inotyisa, uye zvino zvinhu zvose zvichave zvakarongeka zvakanaka muGit repositories, umo zvinhu zvose zviri "pamasherufu", zvinodziya uye zvinyoro hazvina kusanganiswa;
  • kusununguka kwekuendesa: isu tichakwanisa kuburitsa masevhisi takazvimirira kuitira kuti budiriro iende nekukurumidza (kuburitsa zvinhu zvitsva zvakafanana);
  • rusununguko rwekusimudzira: tinogona kupa iyi microservice kune imwe timu / mugadziri, uye iyo kune imwe, nekuda kwatinogona kukura nekukurumidza;
  • Π±ΠΎkuvimbika kukuru: kana kukanganisa kwechikamu kuchiitika (imwe microservice kubva pamakumi maviri inodonha), ipapo bhatani rimwe chete richamira kushanda, uye iyo system yese icharamba ichishanda.

Yakajairika (inokuvadza) microservice architecture

Kuti nditsanangure kuti sei chokwadi chisiri icho chatinotarisira, ndicharatidza pamwe chete mufananidzo weiyo microservice architecture yakavakirwa pane ruzivo kubva kune akawanda akasiyana mapurojekiti.

Muenzaniso ungave chitoro chepamhepo chiri kuenda kunokwikwidza neAmazon kana kanenge OZON. Iyo microservice architecture inoita seizvi:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Nekuda kwezvikonzero zvakasanganiswa, aya mamicroservices akanyorwa pamapuratifomu akasiyana:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Sezvo yega yega microservice inofanirwa kuve nekuzvimiririra, mazhinji acho anoda yavo dhatabhesi uye cache. Iyo yekupedzisira architecture ndeiyi inotevera:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Ndeipi migumisiro yaro?

Fowler ane izvi zvakare pane chinyorwa - nezve "kubhadhara" kwekushandisa microservices:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Uye tichaona kana tarisiro dzedu dzakazadzikiswa.

Bvisa miganhu yemamodule...

asi mangani mamicroservices atinoda chaizvo kugadzirisa?kuburitsa shanduko? Tinogona here kuona kuti zvese zvinoshanda sei pasina tracer yakagoverwa (mushure mezvose, chero chikumbiro chinogadziriswa nehafu ye microservices)?

Pane muenzaniso"bundu guru retsvina", uye pano rakava bundu revhu rakagoverwa. Kuti usimbise izvi, heino mufananidzo wekuti zvikumbiro zvinofamba sei:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Deployment Independence...

Nehunyanzvi, yave kuwanikwa: tinogona kuburitsa yega yega microservice zvakasiyana. Asi mukuita iwe unofanirwa kufungisisa kuti inogara ichibuda akawanda microservices, uye tinofanira kurangarira hurongwa hwekuburitswa kwavo. Nenzira yakanaka, isu kazhinji tinoda kuyedza mune imwe dunhu rakaparadzana kana isu tiri kuburitsa kuburitswa nenzira kwayo.

Rusununguko rwekusarudza tekinoroji...

Ano. Ingoyeuka kuti rusununguko runowanzogumira pakusateerera mutemo. Zvakakosha pano kusasarudza matekinoroji kungo "kutamba" navo.

Independence yebudiriro...

Nzira yekugadzira sei test loop yechishandiso chose (nezvikamu zvakawanda)? Asi iwe uchiri kufanira kuichengeta ichienderana. Zvose izvi zvinotungamirira kune chokwadi chokuti nhamba chaiyo ye test circuits, izvo zvatinogona kuva nazvo, zvinova zvishoma.

Zvakadini nekuendesa izvi zvose munharaunda? .. Zvinoitika kuti kazhinji mugadziri anoita basa rake akazvimiririra, asi "pamwe chete", nokuti anomanikidzwa kumirira kusvikira dunhu rakasununguka kuongororwa.

Kuyera zvakasiyana...

Ehe, asi inogumira munzvimbo yeDBMS inoshandiswa. Mumuenzaniso wakapihwa wekuvaka, Cassandra haizove nematambudziko, asi MySQL nePostgreSQL zvichadaro.

Π‘ΠΎkuvimbika kukuru...

Kwete chete kutadza kweimwe microservice muchokwadi kunowanzo kutyora mashandiro eiyo system yese, asi pane zvakare dambudziko idzva: kugadzira yega yega microservice kukanganisa-kushivirira kwakaoma kwazvo. Nekuti ma microservices anoshandisa akasiyana tekinoroji (memcache, Redis, nezvimwewo), kune yega yega iwe unofanirwa kufunga nezve zvese nekuishandisa, izvo, hongu, zvinogoneka, asi zvinoda zviwanikwa zvakakura.

Kuyera kuyerwa...

Izvi zvakanaka chaizvo.

Iko "kureruka" kwemicroservices ...

Hatina chete nehombe network pamusoro (zvikumbiro zveDNS zviri kuwanda, zvichingodaro), asi zvakare nekuda kweakawanda subqueries atakatanga dzokorora data (store caches), izvo zvakatungamira kune yakawanda yakawanda yekuchengetedza.

Uye heino mhedzisiro yekusangana nezvatinotarisira:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Asi handizvo zvoga!

Nokuti:

  • Zvingangodaro tichada meseji bhazi.
  • Maitiro ekuita backup inowirirana pane yaunoda panguva? Imwe chete chaiyo sarudzo ndeye kudzima traffic pane izvi. Asi sei kuita izvi mukugadzira?
  • Kana isu tichitaura nezve kutsigira matunhu akati wandei, saka kuronga kusimudzira mune imwe neimwe yadzo ibasa rinonyanya kushanda.
  • Dambudziko rekuita shanduko dzepakati rinomuka. Semuenzaniso, kana tichida kugadzirisa iyo PHP vhezheni, isu tichada kuzvipira kune yega yega repository (uye kune akawanda acho).
  • Kukura mukushanda kwakaoma kuri, offhand, exponential.

Chii chekuita nezvose izvi?

Tanga ne monolithic application. Zvakaitika kuna Fowler anoti kuti dzinenge dzese dzakabudirira microservice application dzakatanga semonolith yakave hombe uye yakabva yatyoka. Panguva imwecheteyo, anenge ese masisitimu akavakwa se microservices kubva pakutanga chaipo kana gare gare akawana matambudziko akakomba.

Imwe pfungwa yakakosha ndeyekuti purojekiti ine microservice architecture ibudirire, unofanirwa kuziva zvakanyanya uye nzvimbo yezvidzidzo, uye maitiro ekugadzira microservices. Uye nzira yakanakisa yekudzidza nzvimbo yezvidzidzo ndeyekugadzira monolith.

Asi zvakadini kana tatova mumamiriro ezvinhu aya?

Danho rekutanga rekugadzirisa dambudziko ripi neripi kubvumirana nazvo uye kunzwisisa kuti idambudziko, kuti hatichadi kutambura.

Kana, mune yakawedzera monolith (apo isu tapererwa nemukana wekutenga zvimwe zviwanikwa zveiyo), isu tinoicheka, saka mune ino nyaya inopesana inobuda: kana yakawandisa microservices isingachabatsiri, asi inotadzisa - cheka zvakawandisa uye wedzera!

Semuyenzaniso, yemubatanidzwa mufananidzo wakurukurwa pamusoro...

Bvisa mamicroservices asina mubvunzo:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Sanganisa ese mamicroservices ane chekuita nekugadzirwa kwepamberi:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

... mune imwe microservice, yakanyorwa mune imwe (yazvino uye yakajairika, sezvaunofunga iwe pachako) mutauro / hurongwa:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Ichava neORM imwe (imwe DBMS) uye kutanga akati wandei maapplication:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

... asi kazhinji unogona kuendesa zvakawanda ipapo, uchiwana zvinotevera:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Uyezve, muKubernetes tinomhanya zvese izvi muzvikamu zvakasiyana, zvinoreva kuti isu tinogona kuyera mutoro uye kuyera iwo zvakasiyana.

Kupfupikisa

Tarisa mufananidzo mukuru. Kazhinji, matambudziko ese aya ane microservices anomuka nekuti mumwe munhu akatora basa rake, asi aida "kutamba ne microservices".

Mushoko rekuti "microservices" chikamu che "micro" hachina basa.. Iwo "micro" chete nekuti iwo madiki pane hombe monolith. Asi usazviona sechinhu chidiki.

Uye kune pfungwa yekupedzisira, ngatidzokere kune yekutanga chati:

Microservices: Saizi zvine basa, kunyangwe iwe uine Kubernetes

Chinyorwa chakanyorwa pachiri (kumusoro kurudyi) inobhowekana nenyaya yekuti hunyanzvi hwechikwata chinoita kuti purojekiti yako igare iri yekutanga - ivo vanozoita basa rakakosha musarudzo yako pakati pemicroservices uye monolith. Kana timu isina hunyanzvi hwakakwana, asi ikatanga kugadzira microservices, nyaya yacho ichave inouraya.

Vhidhiyo uye masiraidhi

Vhidhiyo kubva mukutaura (~ 50 maminetsi; zvinosuruvarisa, haitauri manzwiro mazhinji evashanyi, ayo akatemesa mamiriro emushumo, asi ndozvazviri):

Mharidzo yemushumo:

PS

Mimwe mishumo pane yedu blog:

Unogonawo kufarira zvinyorwa zvinotevera:

Source: www.habr.com

Voeg