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.
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:
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:
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.
Ngati mumuimbira zothandiza, ndiye kumbali ina ya graph padzakhala zovulaza microservices (zimasokoneza ntchito):
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:
malire omveka a modularity;
kudziyimira pawokha;
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:
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;
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:
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:
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.