Ibalik mo sa akin ang monolith ko

Mukhang nasa likod namin ang rurok ng hype para sa mga microservice. Hindi na kami nagbabasa ng mga post nang ilang beses sa isang linggo "Paano ko inilipat ang aking monolith sa 150 na serbisyo." Ngayon ay nakarinig ako ng mas maraming common sense na kaisipan: "Hindi ko kinasusuklaman ang monolith, mahalaga lang ako sa kahusayan." Naobserbahan pa namin ang ilang migrasyon mula sa mga microservice pabalik sa monolith. Kapag lumipat mula sa isang malaking application patungo sa maramihang mas maliliit na serbisyo, kakailanganin mong lutasin ang ilang mga bagong problema. Ilista natin ang mga ito nang maikli hangga't maaari.

Setting: mula sa basic chemistry hanggang sa quantum mechanics

Ang pag-set up ng pangunahing database at application na may background na proseso ay isang medyo tapat na proseso. Ini-publish ko ang readme sa Github - at madalas sa loob ng isang oras, ilang oras, gumagana ang lahat at nagsisimula ako ng bagong proyekto. Ang pagdaragdag at pagpapatakbo ng code, kahit para sa paunang kapaligiran, ay ginagawa sa unang araw. Ngunit kung makipagsapalaran tayo sa mga microservice, ang paunang oras ng paglulunsad ay tumataas. Oo, ngayon mayroon kaming Docker na may orkestra at isang kumpol ng mga K8 machine, ngunit para sa isang baguhan na programmer ang lahat ng ito ay mas kumplikado. Para sa maraming juniors, ito ay isang pasanin na talagang isang hindi kinakailangang komplikasyon.

Ang sistema ay hindi madaling maunawaan

Magfocus muna tayo sa junior natin. Sa mga monolitikong application, kung may naganap na error, madali itong masubaybayan at agad na lumipat sa pag-debug. Ngayon ay mayroon kaming isang serbisyo na nakikipag-usap sa isa pang serbisyo na may nakapila sa isang message bus na nagpoproseso ng isa pang serbisyoβ€”at pagkatapos ay mayroong isang error. Kailangan nating pagsama-samahin ang lahat ng mga pirasong ito upang sa huli ay malaman na ang Serbisyo A ay tumatakbo sa bersyon 11, at ang Serbisyo E ay naghihintay na para sa bersyon 12. Ito ay ibang-iba sa aking karaniwang pinagsama-samang log: kinakailangang gumamit ng interactive na terminal/debugger para makalakad sa pamamagitan ng proseso ng hakbang-hakbang. Ang pag-debug at pag-unawa ay likas na naging mas mahirap.

Kung hindi ito ma-debug, baka subukan natin sila

Ang patuloy na pagsasama at patuloy na pag-unlad ay nagiging karaniwan na ngayon. Karamihan sa mga bagong app na nakikita ko ay awtomatikong gumagawa at nagpapatakbo ng mga pagsubok sa bawat bagong release at nangangailangan ng mga pagsubok na kunin at suriin bago magparehistro. Ang mga ito ay mahusay na proseso na hindi dapat iwanan at naging isang malaking pagbabago para sa maraming kumpanya. Ngunit ngayon, para masubukan talaga ang serbisyo, kailangan kong kunin ang isang buong gumaganang bersyon ng aking aplikasyon. Tandaan ang bagong engineer na may K8 cluster ng 150 serbisyo? Well, ngayon ay tuturuan namin ang aming CI system kung paano ilabas ang lahat ng mga system na ito para ma-verify na gumagana talaga ang lahat. Ito ay malamang na labis na pagsisikap, kaya't susubukan na lang natin ang bawat bahagi nang hiwalay: Kumpiyansa ako na sapat ang ating mga spec, malinis ang mga API, at ang pagkabigo ng serbisyo ay nakahiwalay at hindi makakaapekto sa iba.

Lahat ng kompromiso ay may magandang dahilan. tama?

Maraming dahilan para lumipat sa mga microservice. Nakita kong ginawa ito para sa higit na kakayahang umangkop, para sa pag-scale ng mga koponan, para sa pagganap, upang magbigay ng mas mahusay na pagpapanatili. Ngunit sa katotohanan, nag-invest kami ng mga dekada sa mga tool at kasanayan upang bumuo ng mga monolith na patuloy na umuunlad. Nagtatrabaho ako sa mga propesyonal sa iba't ibang teknolohiya. Karaniwang pinag-uusapan natin ang tungkol sa pag-scale dahil tumatakbo ang mga ito sa mga limitasyon ng iisang Postgres database node. Karamihan sa mga pag-uusap ay tungkol sa pag-scale ng database.

Ngunit palagi akong interesadong malaman ang tungkol sa kanilang arkitektura. Saang yugto sila ng paglipat sa mga microservice? Nakatutuwang makita ang higit pang mga inhinyero na nagsasabing sila ay masaya sa kanilang monolitikong aplikasyon. Maraming tao ang makikinabang mula sa mga microservice, at ang mga benepisyo ay hihigit sa mga pagkakamali sa landas ng paglipat. Ngunit sa personal, mangyaring ibigay sa akin ang aking monolitikong aplikasyon, isang lugar sa beach - at lubos akong masaya.

Pinagmulan: www.habr.com

Magdagdag ng komento