Septhemba 19 eMoscow
Sethula
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)
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:
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:
Yini evamile microservice architecture? Kufanele ilethe izinzuzo zangempela, ikhulise ukusebenza kahle kwakho. Uma sibuyela emuva kugrafu, nansi:
Uma umfonela wusizo, khona-ke ngakolunye uhlangothi lwegrafu kuyoba khona eziyingozi microservices (iphazamisa umsebenzi):
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
- imingcele ecacile ye-modularity;
- ukuthunyelwa okuzimele;
- inkululeko yokukhetha ubuchwepheshe.
Ngikhulume kakhulu nabakhi be-software nabathuthukisi futhi ngabuza ukuthi kungani bedinga ama-microservices. Futhi ngenza uhlu lwami lwezinto abazilindele. Nakhu okwenzekile:
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:
Ngenhlanganisela yezizathu, lawa ma-microservices abhalwe kumapulatifomu ahlukene:
Njengoba i-microservice ngayinye kufanele ibe nokuzimela, abaningi babo badinga i-database yabo kanye ne-cache. I-architecture yokugcina imi kanje:
Iyini imiphumela yako?
UFowler unalokhu futhi
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"
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:
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
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:
Hlanganisa wonke ama-microservices anesibopho sokukhiqiza i-frontend:
... kusevisi encane eyodwa, ebhalwe ngenye (yesimanje futhi evamile, njengoba ucabanga wena) ulimi/uhlaka:
Izoba ne-ORM eyodwa (i-DBMS eyodwa) futhi kuqala izicelo ezimbalwa:
... kodwa ngokuvamile ungadlulisela okuningi lapho, uthole umphumela olandelayo:
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:
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:
- «
Ukuqapha kanye ne-Kubernetes » (Dmitry Stolyarov; May 28, 2018 at RootConf); - «
I-CI/CD Imikhuba Engcono Kakhulu nge-Kubernetes kanye ne-GitLab » (Dmitry Stolyarov; Novemba 7, 2017 ku-HighLoad++); - «
Okuhlangenwe nakho kwethu ne-Kubernetes kumaphrojekthi amancane » (Dmitry Stolyarov; Juni 6, 2017 e-RootConf); - «
Sakha izithombe ze-Docker ze-CI/CD ngokushesha futhi kalula nge-dapp » (Dmitry Stolyarov; Novemba 8, 2016 ku-HighLoad++); - «
Imikhuba Eqhubekayo Yokulethwa Nge-Docker » (Dmitry Stolyarov; May 31, 2016 at RootConf).
Ungase futhi ube nentshisekelo kokushicilelwe okulandelayo:
- «
Ukufa kwe-microservice madness ngo-2018 "; - «
Izindlela ezi-7 ezihamba phambili zokusebenzisa iziqukathi ngokuya nge-Google "; - «
Izibalo ezivela ku-New Stack mayelana nezinselelo zokwenza i-Kubernetes ".
Source: www.habr.com