Kaut kÄ vÄsturiski IT nozare jebkÄdu iemeslu dÄļ ir sadalÄ«ta divÄs nosacÄ«tÄs nometnÄs: tajos, kas ir āparā un tajos, kas ir āpretā. TurklÄt strÄ«du priekÅ”mets var bÅ«t pilnÄ«gi patvaļīgs. Kura OS ir labÄka: Win vai Linux? Android vai iOS viedtÄlrunÄ«? Vai jums vajadzÄtu visu glabÄt mÄkoÅos vai ievietot aukstÄ RAID krÄtuvÄ un ievietot skrÅ«ves seifÄ? Vai PHP cilvÄkiem ir tiesÄ«bas saukties par programmÄtÄjiem? Å ie strÄ«di dažkÄrt ir tikai eksistenciÄli, un tiem nav cita pamata kÄ tikai sporta intereses.
TÄ sagadÄ«jÄs, ka lÄ«dz ar konteineru parÄdÄ«Å”anos un visu Å”o iemīļoto virtuvi ar dokeru un nosacÄ«tajiem k8s sÄkÄs diskusijas āparā un āpretā jaunu iespÄju izmantoÅ”anu dažÄdÄs backend jomÄs. (Jau iepriekÅ” atrunÄsim, lai arÄ« Kubernetes Å”ajÄ diskusijÄ visbiežÄk tiks norÄdÄ«ts kÄ orÄ·estrÄtÄjs, Ŕī konkrÄtÄ rÄ«ka izvÄlei nav bÅ«tiskas nozÄ«mes. TÄ vietÄ varat aizstÄt jebkuru citu, kas jums Ŕķiet ÄrtÄkais un pazÄ«stamÄkais .)
Un, Ŕķiet, tas bÅ«tu vienkÄrÅ”s strÄ«ds starp vienas monÄtas divÄm pusÄm. Tikpat bezjÄdzÄ«ga un nežÄlÄ«ga kÄ mūžīgÄ konfrontÄcija starp Win vs Linux, kurÄ adekvÄti cilvÄki eksistÄ kaut kur pa vidu. Bet konteinerizÄcijas gadÄ«jumÄ ne viss ir tik vienkÄrÅ”i. Parasti Å”Ädos strÄ«dos nav labÄs puses, bet āizmantotā vai ānelietotā konteineru gadÄ«jumÄ datu bÄzu glabÄÅ”anai viss apgriežas kÄjÄm gaisÄ. Jo savÄ ziÅÄ taisnÄ«ba ir gan Ŕīs pieejas atbalstÄ«tÄjiem, gan pretiniekiem.
GaiÅ”Ä puse
VieglÄs puses argumentu var Ä«si raksturot vienÄ frÄzÄ: "Sveiki, 2k19 ir aiz loga!" Tas, protams, izklausÄs pÄc populisma, bet, ja sÄ«kÄk iedziļinÄsies situÄcijÄ, tam ir savas priekÅ”rocÄ«bas. SakÄrtosim tos tagad.
PieÅemsim, ka jums ir liels tÄ«mekļa projekts. SÄkotnÄji to varÄja uzbÅ«vÄt, pamatojoties uz mikropakalpojumu pieeju, vai arÄ« kÄdÄ brÄ«dÄ« tas nonÄca pa evolÅ«cijas ceļu - patiesÄ«bÄ tas nav Ä«paÅ”i svarÄ«gi. JÅ«s izkaisÄ«jÄt mÅ«su projektu atseviŔķos mikropakalpojumos, iestatÄ«jÄt orÄ·estrÄÅ”anu, slodzes lÄ«dzsvaroÅ”anu un mÄrogoÅ”anu. Un tagad ar tÄ«ru sirdsapziÅu jÅ«s habra efektu laikÄ iemalkojat mohito ŔūpuļtÄ«klÄ, nevis ceļat pakrituÅ”os serverus. Bet visÄs darbÄ«bÄs jums jÄbÅ«t konsekventai. Ä»oti bieži konteinerÄ tiek ievietota tikai pati lietojumprogramma ā kods. Kas vÄl mums ir bez koda?
TieÅ”i tÄ, dati. Jebkura projekta bÅ«tÄ«ba ir tÄ dati: tie var bÅ«t vai nu tipiska DBVS ā MySQL, Postgre, MongoDB, vai krÄtuve, ko izmanto meklÄÅ”anai (ElasticSearch), atslÄgas vÄrtÄ«bu krÄtuve keÅ”atmiÅai ā piemÄram, redis utt. mÄs runÄsim par greizÄm aizmugursistÄmas ievieÅ”anas iespÄjÄm, kad datubÄze avarÄ slikti uzrakstÄ«tu vaicÄjumu dÄļ, un tÄ vietÄ mÄs runÄsim par Ŕīs paÅ”as datu bÄzes kļūdu tolerances nodroÅ”inÄÅ”anu klienta slodzes laikÄ. Galu galÄ, kad mÄs konteinerizÄjam savu lietojumprogrammu un ļaujam tai brÄ«vi mÄrogot, lai apstrÄdÄtu jebkÄdu ienÄkoÅ”o pieprasÄ«jumu skaitu, tas dabiski palielina datu bÄzes slodzi.
Faktiski kanÄls piekļuvei datu bÄzei un serverim, kurÄ tas darbojas, kļūst par adatas aci mÅ«su skaistajÄ konteinerizÄtajÄ aizmugursistÄmÄ. TajÄ paÅ”Ä laikÄ galvenais konteineru virtualizÄcijas motÄ«vs ir struktÅ«ras mobilitÄte un elastÄ«ba, kas ļauj maksimÄli efektÄ«vi organizÄt maksimÄlÄs slodzes sadali pa visu mums pieejamo infrastruktÅ«ru. Tas ir, ja mÄs nekonteinerÄjam un neizvÄrsÄ«sim visus esoÅ”os sistÄmas elementus visÄ klasterÄ«, mÄs pieļaujam ļoti nopietnu kļūdu.
Daudz loÄ£iskÄk ir grupÄt ne tikai paÅ”u lietojumprogrammu, bet arÄ« pakalpojumus, kas ir atbildÄ«gi par datu glabÄÅ”anu. SagrupÄjot un izvietojot tÄ«mekļa serverus, kas strÄdÄ neatkarÄ«gi un sadala slodzi savÄ starpÄ k8s, mÄs jau risinÄm datu sinhronizÄcijas problÄmu - tie paÅ”i komentÄri pie ierakstiem, ja Åemam par piemÄru kÄdu mediju vai blogu platformu. JebkurÄ gadÄ«jumÄ mums ir klastera iekÅ”Äjais, pat virtuÄls, datu bÄzes attÄlojums kÄ ÄrÄjais pakalpojums. JautÄjums ir par to, ka pati datu bÄze vÄl nav sagrupÄta - kubÄ izvietotie tÄ«mekļa serveri informÄciju par izmaiÅÄm Åem no mÅ«su statiskÄs kaujas datu bÄzes, kas rotÄ atseviŔķi.
Vai jÅ«tat nozveju? MÄs izmantojam k8s vai Swarm, lai sadalÄ«tu slodzi un izvairÄ«tos no galvenÄ tÄ«mekļa servera avÄrijÄm, taÄu mÄs to nedarÄm datubÄzei. Bet, ja datu bÄze avarÄ, tad visai mÅ«su klasterizÄtajai infrastruktÅ«rai nav jÄgas ā ko gan tur tukÅ”as tÄ«mekļa lapas, kas atgriež datu bÄzes piekļuves kļūdu?
TÄpÄc ir nepiecieÅ”ams klasterÄt ne tikai tÄ«mekļa serverus, kÄ tas parasti tiek darÄ«ts, bet arÄ« datu bÄzes infrastruktÅ«ru. Tikai tÄ mÄs varam nodroÅ”inÄt struktÅ«ru, kas pilnÄ«bÄ darbojas vienÄ komandÄ, bet tajÄ paÅ”Ä laikÄ neatkarÄ«gi viens no otra. TurklÄt, pat ja puse no mÅ«su aizmugursistÄmas āsabrÅ«kā slodzes laikÄ, pÄrÄjais izdzÄ«vos, un klastera datu bÄzu savstarpÄjÄs sinhronizÄcijas sistÄma un iespÄja bezgalÄ«gi mÄrogot un izvietot jaunus klasterus palÄ«dzÄs Ätri sasniegt nepiecieÅ”amo jaudu. ja vien datu centrÄ bÅ«tu statÄ«vi .
TurklÄt klasteros izplatÄ«tais datu bÄzes modelis ļauj tieÅ”i Å”o datu bÄzi nogÄdÄt tur, kur tas ir nepiecieÅ”ams; Ja mÄs runÄjam par globÄlu pakalpojumu, tad ir diezgan neloÄ£iski izveidot tÄ«mekļa klasteru kaut kur Sanfrancisko apgabalÄ un tajÄ paÅ”Ä laikÄ sÅ«tÄ«t paketes, piekļūstot datubÄzei Maskavas reÄ£ionÄ un atpakaļ.
TÄpat datu bÄzes konteinerizÄcija ļauj veidot visus sistÄmas elementus vienÄ abstrakcijas lÄ«menÄ«. Tas, savukÄrt, ļauj pÄrvaldÄ«t Å”o sistÄmu tieÅ”i no koda, izstrÄdÄtÄjiem bez aktÄ«vas administratoru iesaistes. IzstrÄdÄtÄji uzskatÄ«ja, ka jaunajam apakÅ”projektam ir nepiecieÅ”ama atseviŔķa DBVS ā vienkÄrÅ”i! uzrakstÄ«ja yaml failu, augÅ”upielÄdÄja to klasterÄ« un esat pabeidzis.
Un, protams, iekÅ”ÄjÄ darbÄ«ba ir ievÄrojami vienkÄrÅ”ota. PastÄsti man, cik reizes tu esi aizvÄris acis, kad jauns komandas dalÄ«bnieks darba dÄļ ielika rokas kaujas datubÄzÄ? Kura patiesÄ«bÄ ir vienÄ«gÄ, kas jums ir un Å”obrÄ«d griežas? Protams, mÄs visi Å”eit esam pieauguÅ”ie, un kaut kur mums ir svaigs dublÄjums, un vÄl tÄlÄk - aiz plaukta ar vecmÄmiÅas gurÄ·iem un vecÄm slÄpÄm - vÄl viens rezerves variants, iespÄjams, pat saldÄtavÄ, jo jÅ«su birojs jau reiz dega. Bet tomÄr katra jauna komandas biedra ievadÄ«Å”ana ar piekļuvi kaujas infrastruktÅ«rai un, protams, kaujas datu bÄzei, ir spainis validola visiem apkÄrtÄjiem. Nu, kas viÅu pazÄ«st, iesÄcÄju, varbÅ«t viÅÅ” ir krustu ŔķÄrsu? Tas ir biedÄjoÅ”i, jÅ«s piekrÄ«tat.
JÅ«su projekta datu bÄzes konteinerizÄÅ”ana un faktiski izkliedÄtÄ fiziskÄ topoloÄ£ija palÄ«dz izvairÄ«ties no Å”Ädiem apstiprinÄÅ”anas brīžiem. Vai neuzticaties iesÄcÄjam? LABI! Iedosim viÅam savu klasteru darbam un atvienosim datu bÄzi no citÄm kopÄm ā sinhronizÄciju tikai manuÄli nospiežot un sinhroni pagriežot divus taustiÅus (viens komandas vadÄ«tÄjam, otrs administratoram). Un visi ir laimÄ«gi.
Un tagad ir pienÄcis laiks kļūt par datu bÄzu klasterizÄcijas pretiniekiem.
TumÅ”Ä puse
ArgumentÄjot, kÄpÄc nav vÄrts ievietot datu bÄzi konteineros un turpinÄt to darbinÄt vienÄ centrÄlajÄ serverÄ«, mÄs nenolaidÄ«simies uz ortodoksijas retoriku un apgalvojumiem, piemÄram, "vectÄvi vadÄ«ja datubÄzes uz aparatÅ«ras, un mÄs arÄ« to darÄ«sim!" TÄ vietÄ mÄÄ£inÄsim izdomÄt situÄciju, kurÄ konteinerizÄcija tieÅ”Äm nestu jÅ«tamas dividendes.
PiekrÄ«tu, projektus, kuriem tieÅ”Äm nepiecieÅ”ama pamatne konteinerÄ, var uz vienas rokas pirkstiem saskaitÄ«t ne pats labÄkais frÄzmaŔīnu operators. LielÄkoties pat paÅ”as k8s vai Docker Swarm lietoÅ”ana ir lieka - diezgan bieži Å”ie rÄ«ki tiek Ä·erti vispÄrÄjÄs tehnoloÄ£iju ažiotÄžas un "visvarenÄ" attieksmes dÄļ dzimumu personÄ, lai visu virzÄ«tu iekÅ”Ä. mÄkoÅi un konteineri. Nu, jo tagad tas ir modÄ un visi tÄ dara.
Vismaz pusÄ gadÄ«jumu Kubernetis vai tikai Docker izmantoÅ”ana projektÄ ir lieka. ProblÄma ir tÄda, ka ne visas komandas vai Ärpakalpojumu uzÅÄmumi, kas nolÄ«gti klienta infrastruktÅ«ras uzturÄÅ”anai, to apzinÄs. SliktÄk ir uzlikt konteinerus, jo tas klientam maksÄ noteiktu monÄtu daudzumu.
VispÄr valda uzskats, ka dokeru/kubu mafija stulbi grauž klientus, kas Å”os infrastruktÅ«ras jautÄjumus nodod ÄrpakalpojumÄ. Galu galÄ, lai strÄdÄtu ar klasteriem, mums ir nepiecieÅ”ami inženieri, kuri to spÄj un kopumÄ saprot ieviestÄ risinÄjuma arhitektÅ«ru. KÄdreiz jau aprakstÄ«jÄm savu gadÄ«jumu ar republikas izdevumu - tur apmÄcÄ«jÄm klienta komandu strÄdÄt Kubernetis realitÄtÄ, un visi bija apmierinÄti. Un tas bija pieklÄjÄ«gi. Bieži vien k8s āieviesÄjiā sagrÄbj klienta infrastruktÅ«ru par Ä·Ä«lniekiem - jo tagad tikai viÅi saprot, kÄ tur viss darbojas, klienta pusÄ nav speciÄlistu.
Tagad iedomÄjieties, ka Å”ÄdÄ veidÄ mÄs Ärpakalpojumu sniedzam ne tikai tÄ«mekļa servera daļu, bet arÄ« datu bÄzes uzturÄÅ”anu. MÄs teicÄm, ka BD ir sirds, un sirds zudums ir nÄvÄjoÅ”s jebkuram dzÄ«vam organismam. ÄŖsÄk sakot, izredzes nav tÄs labÄkÄs. TÄtad ažiotÄžas Kubernetis vietÄ daudziem projektiem vienkÄrÅ”i nevajadzÄtu apnikt parasto AWS tarifu, kas atrisinÄs visas problÄmas ar slodzi viÅu vietnÄ/projektÄ. TaÄu AWS vairs nav modÄ, un izrÄdÄ«Å”anÄs ir vairÄk vÄrta nekÄ nauda ā diemžÄl arÄ« IT vidÄ.
LABI. VarbÅ«t projektam patieÅ”Äm ir nepiecieÅ”ama klasterizÄcija, bet, ja ar bezvalsts lietojumprogrammÄm viss ir skaidrs, kÄ mÄs varam organizÄt pienÄcÄ«gu tÄ«kla savienojumu klasterizÄtai datubÄzei?
Ja mÄs runÄjam par nevainojamu inženiertehnisko risinÄjumu, kas ir pÄreja uz k8s, tad mÅ«su galvenÄs galvassÄpes ir datu replikÄcija klasteru datubÄzÄ. Dažas DBVS sÄkotnÄji ir diezgan uzticÄ«gas datu izplatÄ«Å”anai starp saviem individuÄlajiem gadÄ«jumiem. Daudzi citi nav tik pretimnÄkoÅ”i. Un diezgan bieži galvenais arguments, izvÄloties DBVS mÅ«su projektam, nav spÄja replicÄt ar minimÄlÄm resursu un inženierijas izmaksÄm. It Ä«paÅ”i, ja projekts sÄkotnÄji nebija plÄnots kÄ mikropakalpojums, bet vienkÄrÅ”i attÄ«stÄ«jÄs Å”ajÄ virzienÄ.
MÄs domÄjam, ka nav nepiecieÅ”ams runÄt par tÄ«kla disku Ätrumu - tie ir lÄni. Tie. Mums joprojÄm nav reÄlas iespÄjas, ja kaut kas notiek, restartÄt DBVS gadÄ«jumu kaut kur, kur ir vairÄk, piemÄram, procesora jaudas vai brÄ«vas RAM. MÄs ļoti Ätri nonÄksim pie virtualizÄtÄ diska apakÅ”sistÄmas veiktspÄjas. AttiecÄ«gi DBVS ir jÄpiesaista tÄs personÄ«gajam iekÄrtu komplektam, kas atrodas tieÅ”Ä tuvumÄ. Vai arÄ« ir nepiecieÅ”ams kaut kÄ atseviŔķi atdzesÄt pietiekami Ätru datu sinhronizÄciju paredzÄtajÄm rezervÄm.
Turpinot tÄmu par virtuÄlajÄm failu sistÄmÄm: Docker Volumes diemžÄl nav bez problÄmÄm. KopumÄ tÄdÄ jautÄjumÄ kÄ ilgstoÅ”a uzticama datu glabÄÅ”ana es gribÄtu iztikt ar tehniski vienkÄrÅ”ÄkajÄm shÄmÄm. Un jauna abstrakcijas slÄÅa pievienoÅ”ana no konteinera FS vecÄkresursdatora FS ir risks pats par sevi. Bet, ja konteinerizÄcijas atbalsta sistÄmas darbÄ«bai ir arÄ« grÅ«tÄ«bas ar datu pÄrsÅ«tÄ«Å”anu starp Å”iem slÄÅiem, tÄ patieÅ”Äm ir katastrofa. Å obrÄ«d Ŕķiet, ka lielÄkÄ daļa progresÄ«vajai cilvÄcei zinÄmo problÄmu ir izskaustas. Bet jÅ«s saprotat, jo sarežģītÄks mehÄnisms, jo vieglÄk tas sabojÄjas.
Å emot vÄrÄ visus Å”os āpiedzÄ«vojumusā, ir daudz izdevÄ«gÄk un vienkÄrÅ”Äk glabÄt datu bÄzi vienuviet, un pat tad, ja nepiecieÅ”ams konteinerizÄt lietojumprogrammu, ļaujiet tai darboties paÅ”ai un caur izplatÄ«Å”anas vÄrteju saÅemt vienlaicÄ«gu saziÅu ar datu bÄze, kas tiks lasÄ«ta un rakstÄ«ta tikai vienu reizi un VienÄ vietÄ. Å Ä« pieeja samazina kļūdu un desinhronizÄcijas iespÄjamÄ«bu lÄ«dz minimumam.
Pie kÄ mÄs vedam? TurklÄt datu bÄzu konteinerizÄcija ir piemÄrota tur, kur pÄc tÄs ir reÄla vajadzÄ«ba. JÅ«s nevarat aizpildÄ«t pilnas lietotnes datubÄzi un griezt to tÄ, it kÄ jums bÅ«tu divi desmiti mikropakalpojumu ā tas nedarbojas Å”ÄdÄ veidÄ. Un tas ir skaidri jÄsaprot.
Izvades vietÄ
Ja jÅ«s gaidÄt skaidru secinÄjumu "virtualizÄt datu bÄzi vai nÄ", mÄs jÅ«s pievilsim: tÄ Å”eit nebÅ«s. Jo, veidojot jebkuru infrastruktÅ«ras risinÄjumu, ir jÄvadÄs nevis pÄc modes un progresa, bet, pirmkÄrt, pÄc veselÄ saprÄta.
Ir projekti, kuriem Kubernetis komplektÄ esoÅ”ie principi un instrumenti lieliski der, un Å”Ädos projektos ir miers vismaz backend jomÄ. Un ir projekti, kuriem nevajag konteinerizÄciju, bet normÄlu serveru infrastruktÅ«ru, jo tie principÄ nevar pÄrskanot uz mikropakalpojumu klastera modeli, jo kritÄ«s.
Avots: www.habr.com