September 19 muMoscow
Kusuma
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)
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:
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:
Chii zvakajairika microservice architecture? Inofanira kukuunzira mabhenefiti chaiwo, ichiwedzera kushanda nesimba kwako. Kana tikadzokera kugirafu, heino:
Kana ukamufonera zvinobatsira, ipapo kune rumwe rutivi rwegirafu pachava zvinokuvadza microservices (inovhiringidza basa):
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
- miganhu yakajeka ye modularity;
- kutumirwa kwakazvimirira;
- rusununguko rwekusarudza matekinoroji.
Ndataura zvakawanda kune vanogadzira software nevagadziri uye ndakabvunza kuti nei vachida mamicroservices. Uye ndakaita rondedzero yangu yezvavanotarisira. Izvi ndizvo zvakaitika:
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:
Nekuda kwezvikonzero zvakasanganiswa, aya mamicroservices akanyorwa pamapuratifomu akasiyana:
Sezvo yega yega microservice inofanirwa kuve nekuzvimiririra, mazhinji acho anoda yavo dhatabhesi uye cache. Iyo yekupedzisira architecture ndeiyi inotevera:
Ndeipi migumisiro yaro?
Fowler ane izvi zvakare
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"
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:
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
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:
Sanganisa ese mamicroservices ane chekuita nekugadzirwa kwepamberi:
... mune imwe microservice, yakanyorwa mune imwe (yazvino uye yakajairika, sezvaunofunga iwe pachako) mutauro / hurongwa:
Ichava neORM imwe (imwe DBMS) uye kutanga akati wandei maapplication:
... asi kazhinji unogona kuendesa zvakawanda ipapo, uchiwana zvinotevera:
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:
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:
- Β«
Monitoring uye Kubernetes Β» (Dmitry Stolyarov; Chivabvu 28, 2018 pa RootConf); - Β«
CI/CD Zviitiko Zvakanakisa neKubernetes uye GitLab Β» (Dmitry Stolyarov; Mbudzi 7, 2017 paHighLoad++); - Β«
Chiitiko chedu neKubernetes mumapurojekiti madiki Β» (Dmitry Stolyarov; June 6, 2017 pa RootConf); - Β«
Isu tinovaka Docker mifananidzo yeCI / CD nekukurumidza uye zviri nyore ne dapp Β» (Dmitry Stolyarov; Mbudzi 8, 2016 paHighLoad++); - Β«
Kuenderera Kuendesa Maitiro neDocker Β» (Dmitry Stolyarov; Chivabvu 31, 2016 pa RootConf).
Unogonawo kufarira zvinyorwa zvinotevera:
- Β«
Rufu rwe microservice kupenga muna 2018 "; - Β«
7 akanakisa maitiro ekushandisa midziyo zvinoenderana neGoogle "; - Β«
Nhamba kubva kuThe New Stack pamatambudziko ekushandisa Kubernetes ".
Source: www.habr.com