Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Septhemba 19 eMoscow kwenzeka umhlangano wokuqala onendikimba othi HUG (Highload++ User Group), owawunikezelwe kuma-microservices. Kube nesethulo esithi “Operating Microservices: Size Matters, Even if You Have Kubernetes,” lapho sabelana ngolwazi olubanzi lukaFlant kumaphrojekthi okusebenza anezakhiwo ezincane zesevisi. Okokuqala, kuzoba usizo kubo bonke onjiniyela abacabanga ngokusebenzisa le ndlela kuphrojekthi yabo yamanje noma yesikhathi esizayo.

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Sethula ividiyo yombiko (imizuzu engu-50, inolwazi kakhulu kune-athikili), kanye nokukhishwa okuyinhloko okuvela kuyo ngendlela yombhalo.

QAPHELA: Ividiyo nezethulo nazo ziyatholakala ekugcineni kwalokhu okuthunyelwe.

Isingeniso

Imvamisa indaba emnandi inesiqalo, indaba esemqoka kanye nesinqumo. Lo mbiko ufana nesandulelo, futhi odabukisayo kulokho. Kubalulekile futhi ukuqaphela ukuthi inikeza umbono womuntu wangaphandle ngama-microservices. ukuxhashazwa.

Ngizoqala ngale grafu, umbhali wayo (ngo-2015) waba UMartin Fowler:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Ibonisa ukuthi, esimweni sohlelo lokusebenza lwe-monolithic olufinyelela inani elithile, ukukhiqiza kuqala ukwehla. Ama-Microservices ahlukile ngokuthi umkhiqizo wokuqala nawo uphansi, kepha njengoba ubunzima bukhula, ukuwohloka kokusebenza kahle akubonakali kangako kubo.

Ngizongeza kule grafu ngecala lokusebenzisa i-Kubernetes:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Kungani isicelo esinama-microservices singcono? Ngoba ukwakheka okunjalo kubeka phambili izidingo ezibucayi zezakhiwo, nazo ezimbozwe ngokuphelele ngamakhono we-Kubernetes. Ngakolunye uhlangothi, okunye kwalokhu kusebenza kuzoba usizo ku-monolith, ikakhulukazi ngoba i-monolith evamile namuhla akuyona i-monolith ngqo (imininingwane izoba kamuva embikweni).

Njengoba ubona, igrafu yokugcina (lapho kokubili izinhlelo zokusebenza ze-monolithic kanye ne-microservice kungqalasizinda ne-Kubernetes) ayihlukile kakhulu kweyokuqala. Okulandelayo sizokhuluma ngezinhlelo zokusebenza eziqhutshwa kusetshenziswa i-Kubernetes.

Ama-microservices awusizo nayingozi

Futhi nawu umqondo oyinhloko:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Yini evamile microservice architecture? Kufanele ilethe izinzuzo zangempela, ikhulise ukusebenza kahle kwakho. Uma sibuyela emuva kugrafu, nansi:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Uma umfonela wusizo, khona-ke ngakolunye uhlangothi lwegrafu kuyoba khona eziyingozi microservices (iphazamisa umsebenzi):

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Ukubuyela "kumbono oyinhloko": ingabe kufanele ngithembe ulwazi lwami nhlobo? Selokhu kuqale lo nyaka ngibhekile Imisebenzi engu-85. Akubona bonke ababengama-microservices (cishe ingxenye yesithathu kuya kwengxenye yabo babenezakhiwo ezinjalo), kodwa lokhu kuseyinombolo enkulu. Thina (inkampani ye-Flant) njengabahlinzeki bangaphandle siyakwazi ukubona izinhlelo zokusebenza ezihlukahlukene ezithuthukiswe kokubili ezinkampanini ezincane (ezinonjiniyela aba-5) kanye nezinkulu (~abathuthukisi abangu-500). Inzuzo eyengeziwe ukuthi sibona lezi zinhlelo zokusebenza ziphila futhi zishintsha ngokuhamba kweminyaka.

Kungani ama-microservices?

Embuzweni mayelana nezinzuzo zama-microservices kukhona impendulo eqondile kakhulu kusukela kuMartin Fowler osekukhulunywe ngaye:

  1. imingcele ecacile ye-modularity;
  2. ukuthunyelwa okuzimele;
  3. inkululeko yokukhetha ubuchwepheshe.

Ngikhulume kakhulu nabakhi be-software nabathuthukisi futhi ngabuza ukuthi kungani bedinga ama-microservices. Futhi ngenza uhlu lwami lwezinto abazilindele. Nakhu okwenzekile:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Uma sichaza amanye amaphuzu “ngemizwa,” khona-ke:

  • imingcele ecacile yamamojula: lapha sine-monolith esabekayo, futhi manje konke kuzohlelwa kahle kuma-repositories e-Git, lapho konke "kumashalofu", okufudumele nokuthambile akuxubeki;
  • ukuzimela kokuphakelwa: sizokwazi ukukhipha izinsiza ngokuzimela ukuze intuthuko ihambe ngokushesha (shicilela izici ezintsha ngokuhambisana);
  • ukuthuthukiswa kokuzimela: singanikeza le sevisi encane eqenjini/umthuthukisi, futhi leyo kwelinye, sibonga esingathuthuka ngayo ngokushesha;
  • боukwethembeka okukhulu: uma ukuwohloka okuyingxenye kwenzeka (i-microservice eyodwa kwezingu-20 iwa), khona-ke inkinobho eyodwa kuphela izoyeka ukusebenza, futhi uhlelo lulonke luzoqhubeka nokusebenza.

Isakhiwo esijwayelekile (esiyingozi) se-microservice

Ukuchaza ukuthi kungani iqiniso lingekona esikulindele, ngizokwethula iqoqo isithombe se-microservice architecture esisekelwe kokuhlangenwe nakho kwamaphrojekthi amaningi ahlukene.

Isibonelo kungaba isitolo se-inthanethi esingabonakali esizoqhudelana ne-Amazon noma okungenani i-OZON. I-microservice architecture yayo ibukeka kanje:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Ngenhlanganisela yezizathu, lawa ma-microservices abhalwe kumapulatifomu ahlukene:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Njengoba i-microservice ngayinye kufanele ibe nokuzimela, abaningi babo badinga i-database yabo kanye ne-cache. I-architecture yokugcina imi kanje:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Iyini imiphumela yako?

UFowler unalokhu futhi kukhona isihloko — mayelana “nenkokhelo” yokusebenzisa ama-microservices:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Futhi sizobona uma ebesikulindele kufeziwe.

Sula imingcele yamamojula...

Nokho mangaki ama-microservices okudingeka ngempela ukuwalungisa?ukukhipha ushintsho? Singakwazi yini ukuthola ukuthi yonke into isebenza kanjani ngaphandle kwe-tracer esabalalisiwe (ngemuva kwakho konke, noma yisiphi isicelo sicutshungulwa ngesigamu sama-microservices)?

Kukhona iphethini"isigaxa esikhulu sokungcola", futhi lapha kwaba isigaxa senhlabathi esabalalisiwe. Ukuqinisekisa lokhu, nawu umfanekiso olinganiselwe wokuthi izicelo zihamba kanjani:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Ukuzimela kokuphakelwa...

Ngobuchwepheshe, kuzuziwe: singakwazi ukukhipha i-microservice ngayinye ngokwehlukana. Kodwa ekusebenzeni udinga ukunaka ukuthi ihlala iphuma ama-microservices amaningi, futhi kudingeka sicabangele uhlelo lokukhishwa kwazo. Ngendlela enhle, ngokuvamile sidinga ukuhlola kumjikelezo ohlukile ukuthi sikhipha ukukhishwa ngendlela efanele yini.

Inkululeko yokukhetha ubuchwepheshe...

Ungu. Khumbula nje ukuthi inkululeko ngokuvamile incike ekungabi-namthetho. Kubaluleke kakhulu lapha ukuthi ungakhethi ubuchwepheshe ukuze nje "udlale" ngabo.

Ukuzimela kwentuthuko...

Indlela yokwenza iluphu yokuhlola yalo lonke uhlelo lokusebenza (enezingxenye eziningi)? Kodwa usadinga ukuyigcina isesikhathini samanje. Konke lokhu kuholela eqinisweni lokuthi inombolo yangempela yamasekhethi okuhlola, esingaqukatha ngokomthetho, kuvele kuncane.

Kuthiwani ngokuhambisa konke lokhu endaweni? .. Kuvela ukuthi ngokuvamile umthuthukisi wenza umsebenzi wakhe ngokuzimela, kodwa "ngokungahleliwe", ngoba uphoqeleka ukuba alinde kuze kube yilapho isifunda sikhululekile ukuze sihlolwe.

Isikali esihlukile...

Yebo, kodwa kunqunyelwe endaweni ye-DBMS esetshenzisiwe. Esibonelweni sezakhiwo esinikeziwe, i-Cassandra ngeke ibe nezinkinga, kodwa i-MySQL ne-PostgreSQL izoba nayo.

Боukwethembeka okukhulu...

Akukhona nje ukuthi ukwehluleka kwe-microservice eyodwa empeleni kuvame ukuphula ukusebenza kahle kohlelo lonke, kodwa futhi kunenkinga entsha: ukwenza yonke i-microservice ibekezelele amaphutha kunzima kakhulu. Ngoba ama-microservices asebenzisa ubuchwepheshe obuhlukene (i-memcache, i-Redis, njll.), ngayinye udinga ukucabanga ngakho konke futhi uyisebenzise, ​​​​okungenzeka, kodwa kudinga izinsiza ezinkulu.

Layisha ukukala...

Lokhu kuhle ngempela.

"Ukukhanya" kwama-microservices...

Asigcini nje ngokuba nezinkulu inethiwekhi ngaphezulu (izicelo ze-DNS ziyaphindaphindeka, njll.), kodwa futhi ngenxa yemibuzo engaphansi eminingi esiyiqalile phindaphinda idatha (izinqolobane zasesitolo), okuholele enanini elikhulu lokugcina.

Futhi nawu umphumela wokuhlangabezana nalokho esikulindele:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Kodwa akugcini lapho!

Ngoba:

  • Cishe sizodinga ibhasi lomlayezo.
  • Indlela yokwenza isipele esingaguquki ngesikhathi esifanele ngesikhathi? Eyodwa kwangempela inketho ukuvala ithrafikhi yalokhu. Kodwa ungakwenza kanjani lokhu ekukhiqizeni?
  • Uma sikhuluma ngokusekela izifunda eziningana, khona-ke ukuhlela ukusimama endaweni ngayinye kuwumsebenzi onzima kakhulu.
  • Inkinga yokwenza izinguquko ezimaphakathi iyavela. Isibonelo, uma sidinga ukubuyekeza inguqulo ye-PHP, sizodinga ukuzibophezela kunqolobane ngayinye (futhi kukhona inqwaba yazo).
  • Ukukhula kobunzima bokusebenza, ngokusobala, kuyachayeka.

Kwenziwani ngakho konke lokhu?

Qala ngesicelo se-monolithic. Okwenzeka kuFowler kusho ukuthi cishe zonke izinhlelo zokusebenza eziyimpumelelo ze-microservice zaqala njenge-monolith eyaba nkulu kakhulu yase iphuka. Ngesikhathi esifanayo, cishe zonke izinhlelo ezakhiwe njengama-microservices kusukela ekuqaleni ngokushesha noma kamuva zaba nezinkinga ezinkulu.

Omunye umcabango obalulekile ukuthi ukuze iphrojekthi ene-microservice architecture ibe yimpumelelo, kufanele wazi kahle kakhulu kanye nendawo yesifundo, kanye nendlela yokwenza ama-microservices. Futhi indlela engcono kakhulu yokufunda indawo yesifundo ukwenza i-monolith.

Kodwa kuthiwani uma sesivele sikulesi simo?

Isinyathelo sokuqala sokuxazulula noma iyiphi inkinga ukuvumelana nayo futhi siqonde ukuthi kuyinkinga, ukuthi asisafuni ukuhlupheka.

Uma, esimweni se-monolith ekhulile (lapho siphelelwe ithuba lokuyithengela izinsiza ezengeziwe), siyinqamule, khona-ke kulokhu kuvela indaba ephambene: lapho ama-microservices amaningi engasasizi, kodwa avimbela - nqamula okweqile futhi wandise!

Isibonelo, esithombeni esiqoqiwe okukhulunywe ngaso ngenhla...

Lahla ama-microservices angabazeka kakhulu:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Hlanganisa wonke ama-microservices anesibopho sokukhiqiza i-frontend:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

... kusevisi encane eyodwa, ebhalwe ngenye (yesimanje futhi evamile, njengoba ucabanga wena) ulimi/uhlaka:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Izoba ne-ORM eyodwa (i-DBMS eyodwa) futhi kuqala izicelo ezimbalwa:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

... kodwa ngokuvamile ungadlulisela okuningi lapho, uthole umphumela olandelayo:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Ngaphezu kwalokho, ku-Kubernetes siqhuba konke lokhu ezimweni ezihlukene, okusho ukuthi sisengakwazi ukulinganisa umthwalo futhi siwulinganise ngokuhlukana.

Ukufingqa

Bheka isithombe esikhulu. Ngokuvamile, zonke lezi zinkinga nge-microservices ziphakama ngoba othile wathatha umsebenzi wabo, kodwa wayefuna "ukudlala nge-microservices".

Egameni elithi "microservices" ingxenye "encane" ayisebenzi.. "Zincane" kuphela ngoba zincane kune-monolith enkulu. Kodwa ungacabangi ngabo njengento encane.

Futhi ngomcabango wokugcina, ake sibuyele eshadini lokuqala:

Ama-Microservices: Usayizi ubalulekile, noma ngabe une-Kubernetes

Kubhalwe inothi (phezulu kwesokudla) itholakala eqinisweni lokuthi amakhono eqembu elenza iphrojekthi yakho ihlale iyinhloko - bazodlala indima ebalulekile ekukhetheni kwakho phakathi kwama-microservices kanye ne-monolith. Uma iqembu lingenawo amakhono anele, kodwa liqala ukwenza ama-microservices, indaba izoba yingozi.

Amavidiyo namaslayidi

Ividiyo evela enkulumweni (~ imizuzu engu-50; ngeshwa, ayivezi imizwa eminingi yezivakashi, enqume kakhulu isimo sombiko, kodwa kunjalo):

Ukwethulwa kombiko:

PS

Eminye imibiko kubhulogi yethu:

Ungase futhi ube nentshisekelo kokushicilelwe okulandelayo:

Source: www.habr.com

Engeza amazwana