Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

September 19 ku Moscow chinachitika msonkhano woyamba wamutu wa HUG (Highload ++ User Group), womwe unaperekedwa ku ma microservices. Panali ulaliki wa "Operating Microservices: Size Matters, Ngakhale Muli ndi Kubernetes," momwe tidagawana nawo zomwe Flant adakumana nazo pakugwirira ntchito ndi zomangamanga zazing'ono. Choyamba, zidzakhala zothandiza kwa onse opanga mapulogalamu omwe akuganiza zogwiritsa ntchito njirayi mu polojekiti yawo yamakono kapena yamtsogolo.

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Kuyambitsa kanema wa lipoti (Mphindi 50, yophunzitsa zambiri kuposa nkhaniyo), komanso zotulukapo zake pamawu.

NB: Kanema ndi mafotokozedwe akupezekanso kumapeto kwa positi iyi.

Mau oyamba

Kawirikawiri nkhani yabwino imakhala ndi chiyambi, chiwembu chachikulu ndi kuthetsa. Lipotili lili ngati chiyambi, ndipo ndi lomvetsa chisoni kwambiri. Ndikofunikiranso kuzindikira kuti imapereka malingaliro akunja a microservices. kudyera masuku pamutu.

Ndiyamba ndi graph iyi, wolemba wake (mu 2015) wakhala Martin Fowler:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Zimasonyeza momwe, pogwiritsira ntchito monolithic yomwe imafika pamtengo wina, zokolola zimayamba kuchepa. Ma Microservices ndi osiyana chifukwa zokolola zoyamba nawo ndizochepa, koma zovuta zikamawonjezeka, kuwonongeka kwa magwiridwe antchito sikumawonekera kwa iwo.

Ndiwonjezera pa graph iyi pa nkhani yogwiritsa ntchito Kubernetes:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Chifukwa chiyani kugwiritsa ntchito ma microservice kuli bwino? Chifukwa zomanga zotere zimayika patsogolo zofunikira pazomangamanga, zomwe zimaphimbidwa bwino ndi kuthekera kwa Kubernetes. Kumbali inayi, zina mwazochitazi zidzakhala zothandiza kwa monolith, makamaka chifukwa monolith masiku ano si monolith ndendende (zambiri zidzakhala pambuyo pake mu lipoti).

Monga mukuonera, graph yomaliza (pamene ntchito zonse za monolithic ndi microservice zili mu zomangamanga ndi Kubernetes) sizosiyana kwambiri ndi zoyambirira. Kenako tikambirana za mapulogalamu omwe amagwiritsidwa ntchito ndi Kubernetes.

Zothandiza ndi zovulaza microservices

Ndipo nali lingaliro lalikulu:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Kodi zabwinobwino microservice zomangamanga? Iyenera kukubweretserani phindu lenileni, kukulitsa luso lanu lantchito. Ngati tibwerera ku graph, nayi:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Ngati mumuimbira zothandiza, ndiye kumbali ina ya graph padzakhala zovulaza microservices (zimasokoneza ntchito):

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Kubwerera ku "lingaliro lalikulu": kodi ndikhulupirire zomwe ndakumana nazo? Chiyambireni chaka chino ndayang'ana 85 ntchito. Sikuti onse anali microservices (pafupifupi gawo limodzi mwa magawo atatu ndi theka anali ndi zomangamanga), koma ichi akadali chiwerengero chachikulu. Ife (Flant company) monga ogulitsa kunja timatha kuwona ntchito zosiyanasiyana zomwe zimapangidwira m'makampani ang'onoang'ono (omwe ali ndi opanga 5) komanso akuluakulu (~ 500 opanga). Ubwino wowonjezera ndikuti tikuwona mapulogalamuwa akukhala ndikusintha pazaka zambiri.

Chifukwa chiyani ma microservices?

Pa funso lokhudza ubwino wa microservices alipo Yankho lachindunji kuchokera kwa Martin Fowler yemwe watchulidwa kale:

  1. malire omveka a modularity;
  2. kudziyimira pawokha;
  3. ufulu wosankha matekinoloje.

Ndalankhula zambiri kwa omanga mapulogalamu ndi opanga mapulogalamu ndikufunsa chifukwa chake amafunikira ma microservices. Ndipo ndinapanga mndandanda wa zomwe amayembekezera. Nazi zomwe zidachitika:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Ngati tifotokoza zina mwa "zomverera," ndiye:

  • malire omveka a ma modules: apa tili ndi monolith yowopsya, ndipo tsopano zonse zidzakonzedwa bwino m'mabuku a Git, momwe zonse zili "pamashelufu", zotentha ndi zofewa sizisakanikirana;
  • kudziyimira pawokha: titha kutulutsa mautumiki paokha kuti chitukuko chipite mwachangu (kusindikiza zatsopano mofananiza);
  • Kudziyimira pawokha kwachitukuko: titha kupereka microservice iyi kwa gulu / wopanga, ndi wina kwa mnzake, chifukwa chomwe titha kukula mwachangu;
  • боkudalirika kwakukulu: ngati kuwonongeka pang'ono kumachitika (microservice imodzi mwa 20 imagwa), ndiye kuti batani limodzi lokha lidzasiya kugwira ntchito, ndipo dongosolo lonse lidzapitiriza kugwira ntchito.

Zomangamanga (zowopsa) za microservice

Kuti ndifotokoze chifukwa chake zenizeni siziri zomwe tikuyembekezera, ndipereka pamodzi chithunzi cha kamangidwe ka microservice kutengera zomwe zachitika pama projekiti osiyanasiyana.

Chitsanzo chingakhale malo ogulitsira pa intaneti omwe angapikisane ndi Amazon kapena OZON. Mapangidwe ake a microservice amawoneka motere:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Pazifukwa zingapo, ma microservices awa amalembedwa pamapulatifomu osiyanasiyana:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Popeza microservice iliyonse iyenera kukhala yodziyimira payokha, ambiri aiwo amafunikira database yawoyawo ndi cache. Zomangamanga zomaliza ndi izi:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Zotsatira zake ndi zotani?

Fowler nayenso ali ndi izi pali nkhani - za "malipiro" ogwiritsira ntchito ma microservices:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Ndipo tiwona ngati zomwe tikuyembekezera zidakwaniritsidwa.

Chotsani malire a ma modules...

koma ndi ma microservice angati omwe tiyenera kukonza?kusintha kusintha? Kodi tingathe kudziwa momwe chilichonse chimagwirira ntchito popanda chotsatira chogawidwa (pambuyo pake, pempho lililonse limakonzedwa ndi theka la ma microservices)?

Pali chitsanzo"chotupa chachikulu cha dothi", ndipo apa panakhala dothi logawanika. Kuti mutsimikizire izi, nachi chithunzithunzi cha momwe zopempha zimayendera:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Kudziyimira pawokha ...

Mwaukadaulo, zatheka: titha kutulutsa microservice iliyonse padera. Koma muzochita muyenera kuganizira kuti nthawi zonse imatuluka ma microservices ambiri, ndipo tiyenera kuganizira dongosolo la kutulutsidwa kwawo. Mwanjira yabwino, nthawi zambiri timafunika kuyesa mudera lina ngati tikutulutsa mwatsatanetsatane.

Ufulu wosankha ukadaulo...

Ndi. Ingokumbukirani kuti ufulu kaŵirikaŵiri umakhala ndi malire pa kusayeruzika. Ndikofunikira kwambiri pano kuti musasankhe matekinoloje kuti "musewere" nawo.

Kudziimira pa chitukuko...

Momwe mungapangire chipika choyesera pa pulogalamu yonse (yokhala ndi zigawo zambiri)? Koma mukufunikabe kuti mupitirizebe. Zonsezi zimatsogolera ku mfundo yakuti chiwerengero chenicheni cha mabwalo oyesera, zomwe titha kukhala nazo, zimakhala zochepa.

Ndipo tumizani zonsezi m'deralo? .. Zikuoneka kuti nthawi zambiri wopanga mapulogalamu amachita ntchito yake payekha, koma "mwachisawawa", chifukwa amakakamizika kuyembekezera mpaka dera liri laulere kuti liyesedwe.

Makulitsidwe osiyana...

Inde, koma ndizochepa m'dera la DBMS lomwe amagwiritsidwa ntchito. Muchitsanzo cha zomangamanga, Cassandra sadzakhala ndi mavuto, koma MySQL ndi PostgreSQL adzakhala.

Боkudalirika kwakukulu...

Sikuti kulephera kwa microservice imodzi kwenikweni nthawi zambiri kumasokoneza magwiridwe antchito adongosolo lonse, koma palinso vuto latsopano: kupanga microservice iliyonse yololera zolakwika ndizovuta kwambiri. Chifukwa ma microservices amagwiritsa ntchito matekinoloje osiyanasiyana (memcache, Redis, etc.), kwa aliyense muyenera kuganizira zonse ndikuzigwiritsa ntchito, zomwe, n'zotheka, koma zimafuna chuma chachikulu.

Kuyeza kuyeza...

Izi ndi zabwino kwenikweni.

"Kupepuka" kwa microservices ...

Sitikhala ndi zazikulu zokha pa network (zopempha za DNS zikuchulukitsidwa, ndi zina zotero), komanso chifukwa cha mafunso ambiri omwe tidayambitsa kubwereza deta (zosungira sitolo), zomwe zinapangitsa kuti pakhale kusungirako kwakukulu.

Ndipo izi ndi zotsatira zakukwaniritsa zomwe tikuyembekezera:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Koma si zokhazo!

Chifukwa:

  • Mwachidziwikire tidzafunika basi yauthenga.
  • Momwe mungapangire zosunga zobwezeretsera munthawi yoyenera? Mmodzi yekhayo zenizeni njira ndikuzimitsa traffic pa izi. Koma bwanji kupanga izi?
  • Ngati tikukamba za kuthandizira zigawo zingapo, ndiye kuti kukonzekera kukhazikika mu chirichonse cha iwo ndi ntchito yochuluka kwambiri.
  • Vuto lopanga kusintha kwapakati limakhalapo. Mwachitsanzo, ngati tikufuna kusintha mtundu wa PHP, tifunika kudzipereka ku malo aliwonse (ndipo pali zambiri).
  • Kuchuluka kwa magwiridwe antchito ndikosavuta, kokulirapo.

Zotani ndi zonsezi?

Yambani ndi ntchito monolithic. Zochitikira Fowler akuti kuti pafupifupi ntchito zonse zopambana za microservice zidayamba ngati monolith yomwe idakhala yayikulu kwambiri kenako idasweka. Nthawi yomweyo, pafupifupi machitidwe onse omwe adamangidwa ngati ma microservices kuyambira pachiyambi pomwe adakumana ndi mavuto akulu.

Lingaliro lina lofunika ndilakuti kuti projekiti yokhala ndi kamangidwe ka microservice ikhale yopambana, muyenera kudziwa bwino ndi gawo la maphunziro, ndi momwe mungapangire ma microservices. Ndipo njira yabwino yophunzirira gawo la phunziro ndikupanga monolith.

Koma bwanji ngati tili kale mumkhalidwe umenewu?

Njira yoyamba yothetsera vuto lililonse ndikuvomerezana nalo ndikumvetsetsa kuti ndi vuto, kuti sitikufunanso kuvutika.

Ngati, pankhani ya monolith yokulirapo (pamene tataya mwayi wogula zina zowonjezera), tidula, ndiye kuti nkhani yosiyanayi ikupezeka: pamene ma microservices ochulukirapo sathandizanso, koma amalepheretsa - kudula mochulukira ndikukulitsa!

Mwachitsanzo, pa chithunzi chomwe takambirana pamwambapa ...

Chotsani ma microservices okayikitsa kwambiri:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Phatikizani ma microservices onse omwe ali ndi udindo wopanga kutsogolo:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

... mu microservice imodzi, yolembedwa mu imodzi (yamakono ndi yachibadwa, monga momwe mukuganizira) chinenero / dongosolo:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Idzakhala ndi ORM imodzi (DBMS imodzi) ndikuyamba ntchito zingapo:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

... koma nthawi zambiri mutha kusamutsa zambiri kumeneko, ndikupeza zotsatirazi:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Kuphatikiza apo, ku Kubernetes timayendetsa zonsezi mosiyanasiyana, zomwe zikutanthauza kuti titha kuyeza katunduyo ndikuzikulitsa padera.

Kufotokozera mwachidule

Yang'anani chithunzi chachikulu. Nthawi zambiri, mavuto onsewa ndi microservices amayamba chifukwa wina anatenga ntchito yawo, koma ankafuna "kusewera ndi microservices".

M'mawu oti "microservices" gawo la "micro" ndilosowa.. Iwo ndi "ochepa" chifukwa ndi ang'onoang'ono kuposa monolith yaikulu. Koma musawaone ngati kanthu kakang’ono.

Ndipo kuti tiganize zomaliza, tiyeni tibwerere ku tchati choyambirira:

Microservices: Kukula kumafunika, ngakhale mutakhala ndi Kubernetes

Chikalata cholembedwa pamenepo (pamwamba kumanja) zimatengera kuti luso la gulu lomwe limapangitsa kuti polojekiti yanu ikhale yoyamba nthawi zonse - atenga gawo lalikulu pakusankha kwanu pakati pa ma microservices ndi monolith. Ngati gululo lilibe luso lokwanira, koma likuyamba kupanga ma microservices, nkhaniyi idzakhala yakupha.

Makanema ndi zithunzi

Kanema kuchokera pakulankhula (~ mphindi 50; mwatsoka, sizipereka malingaliro ambiri a alendo, omwe makamaka adatsimikiza momwe lipotilo likuyendera, koma ndi momwe zilili):

Kafotokozedwe ka lipoti:

PS

Malipoti ena pabulogu yathu:

Mukhozanso kukhala ndi chidwi ndi zofalitsa zotsatirazi:

Source: www.habr.com

Kuwonjezera ndemanga