Nagpuyo ba ang mga database sa Kubernetes?

Nagpuyo ba ang mga database sa Kubernetes?

Sa usa ka paagi, sa kasaysayan, ang industriya sa IT gibahin sa duha ka kondisyon nga kampo alang sa bisan unsang hinungdan: kadtong "para" ug kadtong "batok". Dugang pa, ang hilisgutan sa mga panaglalis mahimong bug-os nga arbitraryo. Unsang OS ang mas maayo: Win o Linux? Sa usa ka Android o iOS nga smartphone? Kinahanglan ba nimong tipigan ang tanan sa mga panganod o ibutang kini sa bugnaw nga pagtipig sa RAID ug ibutang ang mga screw sa luwas? Ang mga tawo ba sa PHP adunay katungod nga tawgon nga mga programmer? Kini nga mga panaglalis, usahay, ekslusibong eksistensyal sa kinaiyahan ug walay basehanan gawas sa sporting interest.

Nahitabo lang nga sa pag-abut sa mga sudlanan ug sa tanan nga kini nga minahal nga linutoan nga adunay docker ug conditional k8s, ang mga debate "alang" ug "batok" sa paggamit sa bag-ong mga kapabilidad sa lainlaing mga lugar sa backend nagsugod. (Maghimo kita og reserbasyon nga abante nga bisan kung ang Kubernetes kanunay nga ipasabut ingon usa ka orkestra sa kini nga diskusyon, ang pagpili niining partikular nga himan dili hinungdanon. .)

Ug, ingon og, kini usa ka yano nga panaglalis tali sa duha ka kilid sa parehas nga sensilyo. Ingon nga walay salabutan ug walay kaluoy sama sa walay katapusan nga komprontasyon tali sa Win vs Linux, diin adunay igo nga mga tawo nga anaa sa tunga-tunga. Apan sa kaso sa containerization, dili tanan yano ra. Kasagaran sa ingon nga mga panaglalis walay tuo nga bahin, apan sa kaso sa "paggamit" o "dili paggamit" nga mga sudlanan alang sa pagtipig sa mga database, ang tanan mobalik. Tungod kay sa usa ka piho nga diwa, ang mga tigpaluyo ug mga kaatbang niini nga pamaagi husto.

Mahayag nga kilid

Ang argumento sa The Light Side mahimong mahulagway sa mubo sa usa ka hugpong sa mga pulong: "Hello, 2k19 naa sa gawas sa bintana!" Kini sama sa populismo, siyempre, apan kung imong susihon ang sitwasyon sa detalye, kini adunay mga bentaha. Atong husayon ​​sila karon.

Ingnon ta nga ikaw adunay usa ka dako nga proyekto sa web. Mahimo kini nga una nga gitukod pinasukad sa usa ka pamaagi sa microservice, o sa usa ka punto nga kini moabut pinaagi sa usa ka ebolusyonaryong dalan - kini dili kaayo hinungdanon, sa tinuud. Imong gisabwag ang among proyekto ngadto sa bulag nga mga microservice, nag-set up sa orkestra, load balancing, ug scaling. Ug karon, uban ang limpyo nga konsensya, mohigop ka og mojito sa duyan panahon sa mga epekto sa habra imbes nga ipataas ang nahulog nga mga server. Apan sa tanan nga mga aksyon kinahanglan nga makanunayon ka. Kasagaran, ang aplikasyon ra mismo—ang code—ang gisudlan. Unsa pa ang naa nato gawas sa code?

Mao na, data. Ang kasingkasing sa bisan unsang proyekto mao ang datos niini: kini mahimo nga usa ka tipikal nga DBMS - MySQL, Postgre, MongoDB, o storage nga gigamit alang sa pagpangita (ElasticSearch), key-value storage alang sa caching - pananglitan, redis, ug uban pa. maghisgot kita bahin sa hiwi nga mga kapilian sa pagpatuman sa backend sa diha nga ang database nahagsa tungod sa dili maayo nga pagkasulat nga mga pangutana, ug hinoon kita maghisgot mahitungod sa pagsiguro sa sayop nga pagtugot niini nga database ubos sa load sa kliyente. Human sa tanan, kung among gisudlan ang among aplikasyon ug gitugotan kini nga libre nga mag-scale aron maproseso ang bisan unsang gidaghanon sa umaabot nga mga hangyo, natural kini nga nagdugang sa load sa database.

Sa tinuud, ang channel alang sa pag-access sa database ug ang server diin kini nagdagan nahimo nga mata sa dagom sa among matahum nga sulud nga backend. Sa samang higayon, ang nag-unang motibo sa container virtualization mao ang paglihok ug pagka-flexible sa istruktura, nga nagtugot kanato sa pag-organisar sa pag-apod-apod sa mga peak load sa tibuok nga imprastraktura nga anaa kanato sa episyente kutob sa mahimo. Sa ato pa, kung dili namo ibutang ug i-roll out ang tanan nga mga elemento sa sistema sa tibuuk nga cluster, nakahimo kami usa ka grabe nga sayup.

Mas lohikal ang pag-cluster dili lamang sa aplikasyon mismo, apan usab sa mga serbisyo nga responsable sa pagtipig sa datos. Pinaagi sa pag-cluster ug pag-deploy sa mga web server nga nagtrabaho nga independente ug nag-apod-apod sa load sa ilang mga kaugalingon sa k8s, nasulbad na namo ang problema sa pag-synchronize sa data - parehas nga mga komento sa mga post, kung magkuha kami usa ka platform sa media o blog ingon usa ka pananglitan. Sa bisan unsa nga kaso, kami adunay intra-cluster, bisan virtual, representasyon sa database isip ExternalService. Ang pangutana mao nga ang database mismo dili pa clustered - ang mga web server nga gipakatap sa cube nagkuha og impormasyon mahitungod sa mga pagbag-o gikan sa among static combat database, nga gilain nga nagtuyok.

Nabatyagan ba nimo ang usa ka kuha? Gigamit namo ang k8s o Swarm sa pag-apod-apod sa load ug paglikay sa pag-crash sa main web server, pero wala namo kini buhata para sa database. Apan kung ang database nahagsa, nan ang among tibuok nga clustered nga imprastraktura wala'y kahulogan - unsa man ang kapuslanan sa walay sulod nga mga web page nga nagbalik sa usa ka database access error?

Mao nga gikinahanglan ang pag-cluster dili lamang sa mga web server, sama sa kasagarang gibuhat, apan usab sa imprastraktura sa database. Niini lamang nga paagi masiguro nato ang usa ka istruktura nga hingpit nga molihok sa usa ka team, apan sa samang higayon independente sa usag usa. Dugang pa, bisan kung ang katunga sa among backend "nahugno" ubos sa pagkarga, ang nahabilin mabuhi, ug ang sistema sa pag-synchronize sa mga database sa usag usa sulod sa cluster ug ang abilidad sa walay katapusan nga pag-scale ug pag-deploy sa bag-ong mga clusters makatabang sa madali nga pagkab-ot sa gikinahanglan nga kapasidad - kung adunay racks sa data center.

Dugang pa, ang modelo sa database nga gipang-apod-apod sa mga pungpong nagtugot kanimo sa pagdala niini nga database sa kung diin kini gikinahanglan; Kung naghisgot kami bahin sa usa ka global nga serbisyo, nan dili makatarunganon nga mag-spin up ang usa ka web cluster sa usa ka lugar sa lugar sa San Francisco ug sa parehas nga oras magpadala mga packet kung mag-access sa usa ka database sa rehiyon sa Moscow ug pabalik.

Usab, ang containerization sa database nagtugot kanimo sa pagtukod sa tanan nga mga elemento sa sistema sa parehas nga lebel sa abstraction. Nga, sa baylo, nagpaposible sa pagdumala niini nga sistema direkta gikan sa code, sa mga developers, nga walay aktibong pag-apil sa mga tigdumala. Ang mga developers naghunahuna nga ang usa ka bulag nga DBMS gikinahanglan alang sa bag-ong subproject - sayon! nagsulat og yaml file, gi-upload kini sa cluster ug nahuman ka.

Ug siyempre, ang internal nga operasyon gipasimple kaayo. Sultihi ko, pila ka beses nimo gipiyong ang imong mga mata sa dihang ang usa ka bag-ong miyembro sa team nagbutang sa iyang mga kamot sa database sa kombat alang sa trabaho? Hain, sa pagkatinuod, mao ra ang imong nabatonan ug nagtuyok karon? Siyempre, kitang tanan mga hamtong dinhi, ug sa usa ka dapit kita adunay bag-ong backup, ug mas layo pa - luyo sa estante nga adunay mga pepino sa lola ug daan nga mga ski - laing backup, tingali bisan sa bugnaw nga pagtipig, tungod kay ang imong opisina nasunog na sa makausa. Apan parehas ra, ang matag pagpaila sa usa ka bag-ong miyembro sa team nga adunay access sa imprastraktura sa kombat ug, siyempre, sa database sa kombat usa ka balde nga validol alang sa tanan sa palibot. Aw, kinsay nakaila niya, bag-o pa lang, tingalig cross-handed? Makahadlok, musugot ka.

Containerization ug, sa tinuud, ang gipang-apod-apod nga pisikal nga topology sa database sa imong proyekto makatabang sa paglikay sa ingon nga pag-validate nga mga higayon. Ayaw pagsalig sa usa ka bag-ohan? OK! Hatagan nato siya sa iyang kaugalingon nga cluster aron magtrabaho ug idiskonekta ang database gikan sa ubang mga cluster - pag-synchronize lamang pinaagi sa manual nga pagduso ug dungan nga rotation sa duha ka mga yawe (usa alang sa team lead, ang usa alang sa admin). Ug ang tanan malipayon.

Ug karon panahon na nga magbag-o sa mga kontra sa database clustering.

Ngitngit nga bahin

Naglalis ngano nga dili takus ang pag-container sa database ug pagpadayon sa pagpadagan niini sa usa ka sentral nga server, dili kami moyukbo sa retorika sa mga orthodoxies ug mga pahayag sama sa "ang mga apohan nagpadagan sa mga database sa hardware, ug mao usab kami!" Hinuon, sulayan nato ang paghimo sa usa ka sitwasyon diin ang containerization sa pagkatinuod mobayad sa tinuod nga mga dividend.

Uyon, ang mga proyekto nga kinahanglan gyud usa ka base sa usa ka sudlanan mahimong maihap sa mga tudlo sa usa ka kamot pinaagi sa dili ang labing kaayo nga operator sa makina sa paggaling. Sa kadaghanan nga bahin, bisan ang paggamit sa k8s o Docker Swarm mismo sobra - kasagaran kini nga mga himan gigamit tungod sa kinatibuk-ang hype sa mga teknolohiya ug ang mga kinaiya sa "makagagahum" sa tawo sa mga kasarian aron iduso ang tanan ngadto sa mga panganod ug mga sudlanan. Aw, tungod kay karon uso na ug ang tanan nagbuhat niini.

Sa labing menos katunga sa mga kaso, ang paggamit sa Kubernetis o Docker lang sa usa ka proyekto sobra. Ang isyu mao nga dili tanan nga mga koponan o mga kompanya sa outsourcing nga gisuholan aron mapadayon ang imprastraktura sa kliyente nahibal-an kini. Mas grabe kung ang mga sudlanan gipahamtang, tungod kay nagkantidad kini usa ka piho nga kantidad sa mga sensilyo sa kliyente.

Sa kinatibuk-an, adunay usa ka opinyon nga ang docker / cube mafia hungog nga nagdugmok sa mga kliyente nga nag-outsource niini nga mga isyu sa imprastraktura. Human sa tanan, aron sa pagtrabaho uban sa mga clusters, nagkinahanglan kita og mga inhenyero nga makahimo niini ug sa kasagaran makasabut sa arkitektura sa gipatuman nga solusyon. Gihulagway na namo kaniadto ang among kaso sa publikasyon sa Republika - didto among gibansay ang grupo sa kliyente sa pagtrabaho sa mga kamatuoran sa Kubernetis, ug ang tanan natagbaw. Ug kini disente. Kasagaran, ang mga "implementers" sa k8 nag-hostage sa imprastraktura sa kliyente - tungod kay karon ra nila nasabtan kung giunsa ang tanan nagtrabaho didto; wala’y mga espesyalista sa bahin sa kliyente.

Karon hunahunaa nga sa niini nga paagi kita outsource dili lamang sa web server nga bahin, apan usab sa database maintenance. Giingon namon nga ang BD mao ang kasingkasing, ug ang pagkawala sa kasingkasing makamatay alang sa bisan unsang buhi nga organismo. Sa laktud, ang mga palaaboton dili ang pinakamaayo. Mao nga, imbis nga hype Kubernetis, daghang mga proyekto ang kinahanglan nga dili magsamok sa normal nga taripa alang sa AWS, nga makasulbad sa tanan nga mga problema sa pagkarga sa ilang site / proyekto. Apan ang AWS dili na uso, ug ang mga pasundayag labaw pa kay sa salapi - sa kasubo, sa IT nga palibot usab.

OK ra. Tingali ang proyekto kinahanglan gyud nga clustering, apan kung ang tanan klaro sa stateless nga mga aplikasyon, nan unsaon nato pag-organisar ang disente nga koneksyon sa network alang sa usa ka clustered database?

Kung naghisgot kami bahin sa usa ka seamless nga solusyon sa engineering, nga mao ang pagbalhin sa k8s, nan ang among panguna nga sakit sa ulo mao ang pagkopya sa datos sa usa ka clustered database. Ang ubang mga DBMS sa sinugdan maunongon kaayo sa pag-apod-apod sa datos tali sa ilang tagsa-tagsa ka mga higayon. Daghan pa ang dili kaayo maabiabihon. Ug sa kasagaran ang panguna nga argumento sa pagpili sa usa ka DBMS alang sa among proyekto dili ang abilidad sa pagkopya nga adunay gamay nga kapanguhaan ug gasto sa engineering. Ilabi na kung ang proyekto wala una giplano ingon usa ka microservice, apan yano nga milambo sa kini nga direksyon.

Naghunahuna kami nga dili kinahanglan nga hisgutan ang katulin sa mga drive sa network - hinay sila. Mga. Wala gihapon kami usa ka tinuud nga oportunidad, kung adunay mahitabo, aron ma-restart ang usa ka pananglitan sa DBMS sa usa ka lugar diin adunay daghan pa, pananglitan, gahum sa processor o libre nga RAM. Dali kaayo kami nga modagan sa paghimo sa virtualized disk subsystem. Tungod niini, ang DBMS kinahanglan nga ilansang sa kaugalingon nga personal nga set sa mga makina nga nahimutang sa duol. O gikinahanglan nga sa usa ka paagi gilain ang pagpabugnaw sa igo nga paspas nga pag-synchronize sa datos alang sa gituohan nga mga reserba.

Pagpadayon sa hilisgutan sa mga virtual file system: Ang Docker Volumes, sa kasubo, dili walay problema. Sa kinatibuk-an, sa usa ka butang sama sa dugay nga kasaligan nga pagtipig sa datos, gusto nako nga buhaton ang labing yano nga teknikal nga mga laraw. Ug ang pagdugang og bag-ong abstraction layer gikan sa FS sa sudlanan ngadto sa FS sa parent host usa ka risgo sa iyang kaugalingon. Apan kung ang operasyon sa containerization support system makasugat usab og mga kalisud sa pagpasa sa datos tali niini nga mga layer, nan kini usa ka katalagman. Sa pagkakaron, ang kadaghanan sa mga problema nga nahibal-an sa progresibong katawhan daw nawagtang na. Apan nakasabot ka, kon mas komplikado ang mekanismo, mas sayon ​​kini nga mabungkag.

Sa kahayag sa tanan niini nga mga "adventures," kini mao ang mas mapuslanon ug mas sayon ​​sa pagtipig sa database sa usa ka dapit, ug bisan kon kamo kinahanglan nga containerize sa aplikasyon, pasagdi nga kini modagan sa iyang kaugalingon ug pinaagi sa distribution gateway makadawat dungan nga komunikasyon uban sa database, nga basahon ug isulat kausa ra ug Sa usa ka lugar. Kini nga pamaagi nagpamenos sa kalagmitan sa mga kasaypanan ug desynchronization sa usa ka minimum.

Unsa ang atong gipadulong? Dugang pa, ang database containerization angay kung diin adunay tinuod nga panginahanglan alang niini. Dili nimo mabutang ang usa ka full-app nga database ug i-spin kini ingon nga adunay duha ka dosena nga microservice - dili kini molihok sa ingon. Ug kini kinahanglan nga tin-aw nga masabtan.

Imbis output

Kung naghulat ka sa usa ka tin-aw nga konklusyon "sa pag-virtualize sa database o dili," nan mahigawad kami kanimo: wala kini dinhi. Tungod kay sa paghimo sa bisan unsa nga solusyon sa imprastraktura, ang usa kinahanglan nga magiyahan dili sa uso ug pag-uswag, apan, una sa tanan, pinaagi sa sentido komon.

Adunay mga proyekto diin ang mga prinsipyo ug mga himan nga kauban sa Kubernetis hingpit nga mohaum, ug sa ingon nga mga proyekto adunay kalinaw bisan sa backend nga lugar. Ug adunay mga proyekto nga wala magkinahanglan og containerization, apan usa ka normal nga imprastraktura sa server, tungod kay sila sa sukaranan dili makabalik sa modelo sa microservice cluster, tungod kay sila mahulog.

Source: www.habr.com

Idugang sa usa ka comment