Liewen Datenbanken zu Kubernetes?

Liewen Datenbanken zu Kubernetes?

Iergendwéi, historesch, ass d'IT Industrie aus irgend engem Grond an zwee bedingte Lageren opgedeelt: déi, déi "fir" sinn an déi, déi "géint" sinn. Ausserdeem, kann d'Thema vun StrÀitfÀll komplett arbitrÀr ginn. Wéi eng OS ass besser: Win oder Linux? Op engem Android oder iOS Smartphone? Sollt Dir alles an de Wolleken spÀicheren oder et op kale RAID-SpÀichere setzen an d'Schrauwen an eng Safe setzen? Hutt PHP Leit d'Recht Programméierer genannt ze ginn? Dës StrÀitfÀll sinn, heiansdo, exklusiv existenziell an der Natur an hu keng Basis aner wéi sportlechen Interessi.

Et ass just geschitt, datt mat dem Optrëtt vun Container an all dës beléifte Kichen mat Docker a bedingte K8s, d'Debatten "fir" a "géint" d'Benotzung vun neie FÀegkeeten a verschiddene BerÀicher vum Backend ugefaang hunn. (Loosst eis am Viraus reservéieren, datt och wann de Kubernetes an dëser Diskussioun meeschtens als Orchestrator bezeechent gëtt, de Choix vun dësem speziellen Tool net vu fundamentaler Wichtegkeet ass. Amplaz kënnt Dir all aner ersetzen, deen Iech am meeschte bequem a vertraut schéngt. .)

An, et géif schéngen, dëst wier en einfachen StrÀit tëscht zwou SÀiten vun der selwechter Mënz. Esou sënnlos a barmhÀerzlech wéi déi éiweg Konfrontatioun tëscht Win vs Linux, an dÀr adÀquate Leit iergendwou an der Mëtt existéieren. Awer am Fall vun der Containeriséierung ass net alles sou einfach. Normalerweis an esou Streidereien gëtt et keng riets SÀit, mÀ am Fall vun "benotzen" oder "net benotzen" BehÀlter fir Datenbanken ze spÀicheren, gëtt alles op d'Kopp. Well an engem gewësse Sënn hunn d'Supporter an d'Géigner vun dëser Approche Recht.

Schéin SÀit

D'Argument vun der Light Side kann kuerz an engem Saz beschriwwe ginn: "Hallo, 2k19 ass baussent der FĂ«nster!" Et klĂ©ngt selbstverstĂ€ndlech no Populismus, mee wann een sech am Detail an d’Situatioun verdaut, huet dat seng Virdeeler. Loosst eis se elo sortĂ©ieren.

Loosst eis soen datt Dir e grousse Webprojet hutt. Et kéint am Ufank op der Basis vun enger Mikroservice Approche gebaut ginn, oder iergendwann ass et duerch en evolutive Wee komm - dat ass net ganz wichteg, tatsÀchlech. Dir hutt eise Projet a getrennte Mikroservicer verspreet, Orchester opgestallt, Belaaschtung a Skaléieren. An elo, mat engem kloere Gewësse, schëpft Dir e Mojito an enger HÀngematt wÀhrend Habra Effekter amplaz vun gefall Serveren ze erhéijen. Awer an all Aktiounen musst Dir konsequent sinn. Ganz dacks ass nëmmen d'Applikatioun selwer - de Code - containeriséiert. Wat soss hu mir ausser Code?

Dat ass richteg, daten. D'HĂ€erz vun all Projet ass seng DonnĂ©eĂ«n: dĂ«st kann entweder eng typesch DBMS sinn - MySQL, Postgre, MongoDB, oder SpĂ€ichere benotzt fir d'Sich (ElasticSearch), SchlĂ«sselwĂ€ertspĂ€ichere fir Caching - zum Beispill Redis, etc. Am Moment si mir net mir wĂ€erten iwwer crooked Backend Ëmsetzung Optiounen schwĂ€tzen wann d'Datebank Crash wĂ©inst schlecht schrĂ«ftlech Ufroen, an amplaz wĂ€erte mir schwĂ€tzen iwwer d'Feeler Toleranz vun dĂ«ser ganz Datebank Ă«nner Client Laascht ze garantĂ©ieren. No allem, wa mir eis Applikatioun containerisĂ©ieren an et erlaben frĂ€i ze skalĂ©ieren fir all Zuel vun erakommen Ufroen ze veraarbechten, erhĂ©icht dĂ«st natierlech d'Laascht op der Datebank.

TatsĂ€chlech ass de Kanal fir Zougang zu der Datebank an dem Server op deem se leeft, d'Ae vun der Nadel an eisem schĂ©ine containerisĂ©ierte Backend. Zur selwechter ZĂ€it ass d'Haaptmotiv vun der ContainervirtualisĂ©ierung d'MobilitĂ©it an d'FlexibilitĂ©it vun der Struktur, wat eis erlaabt d'Verdeelung vun de SpĂ«tzelastungen iwwer dĂ©i ganz Infrastruktur, dĂ©i eis verfĂŒgbar ass, esou effizient wĂ©i mĂ©iglech ze organisĂ©ieren. Dat ass, wa mir all existent Elementer vum System iwwer de Cluster net containerisĂ©ieren an ausrollen, maache mir e ganz eeschte Feeler.

Et ass vill mĂ©i logesch net nĂ«mmen d'Applikatioun selwer ze clusteren, awer och d'Servicer dĂ©i verantwortlech sinn fir d'Daten ze spĂ€icheren. Andeems Dir Webserveren clusteren an ofsetzen, dĂ©i onofhĂ€ngeg funktionnĂ©ieren an d'Laascht Ă«nner sech an k8s verdeelen, lĂ©ise mir schonn de Problem vun der DatesynchronisĂ©ierung - dĂ©iselwecht Kommentaren op Posts, wa mir e puer Medien oder Blogplattform als Beispill huelen. Op alle Fall hu mir en Intra-Cluster, souguer virtuell, Representatioun vun der Datebank als ExternalService. D'Fro ass datt d'Datebank selwer nach net clusterĂ©iert ass - d'Webserver, dĂ©i am Wierfel ofgebaut ginn, huelen Informatioun iwwer Ännerungen aus eiser statescher Kampfdatenbank, dĂ©i separat rotĂ©iert.

Hues du e Fang? Mir benotze k8s oder Swarm fir d'Laascht ze verdeelen an ze verhĂ«nneren, datt den Haaptserver ofstĂŒrzt. Webserver, awer mir maachen dat net fir d'Datebank. Mee wann d'Datebank ofstĂŒrzt, dann ass eis ganz geclustert Infrastruktur nĂ«tzlos - wat brĂ©ngt et, wann eidel WebsĂ€iten Datebankzougangsfehler zrĂ©ckginn?

Dofir ass et néideg net nëmme Webserver ze clusteren, wéi et normalerweis gemaach gëtt, awer och d'Datebankinfrastruktur. Nëmmen esou kënne mir eng Struktur garantéieren, déi voll an engem Team funktionéiert, awer glÀichzÀiteg onofhÀngeg vuneneen. Ausserdeem, och wann d'Halschent vun eisem Backend ënner Laascht "zesummebrach" wÀert de Rescht iwwerliewen, an de System fir d'Datebanken mateneen am Cluster ze synchroniséieren an d'FÀegkeet fir endlos ze skaléieren an nei Cluster z'installéieren hëlleft séier déi erfuerderlech Kapazitéit z'erreechen - wann et nëmmen Racken am Rechenzentrum wieren.

ZousÀtzlech erlaabt d'Datebankmodell, déi a Cluster verdeelt gëtt, Iech dës ganz Datebank ze huelen wou se gebraucht gëtt; Wa mir vun engem globalen Service schwÀtzen, dann ass et ganz onlogesch e Webcluster iergendwou an der San Francisco Regioun ze spinnen a glÀichzÀiteg PÀckchen ze schécken wann Dir op eng Datebank an der Moskau Regioun an zréck kënnt.

Och ContainerisĂ©ierung vun der Datebank erlaabt Iech all Elementer vum System um selwechten Abstraktiounsniveau ze bauen. Wat, am Tour, mĂ©cht et mĂ©iglech dĂ«se System direkt aus Code ze verwalten, vun EntwĂ©ckler, ouni aktiv Bedeelegung vun Administrateuren. D'EntwĂ©ckler hunn geduecht datt eng separat DBMS fir den neien Ënnerprojet gebraucht gĂ«tt - einfach! geschriwwen eng Yaml Datei, eropgelueden an de StĂ€rekoup an Dir sidd fĂ€erdeg.

An natierlech, intern Operatioun ass vill vereinfacht. Sot mir, wĂ©i oft hutt Dir Är Aen zougemaach wann en neien Teammember seng HĂ€nn an d'Kampfdatenbank fir Aarbecht gesat huet? Wat ass tatsĂ€chlech deen eenzegen deen Dir hutt a drĂ©int elo? Natierlech si mir hei all Erwuessener, an iergendwou hu mir e frĂ«sche Backup, an nach mĂ©i wĂ€it ewech - hannert dem Regal mat der Bomi Gurken an al Schier - en anere Backup, vlĂ€icht souguer an der KĂ€ltelagerung, well Äre BĂŒro schonn eemol a Brand war. Awer nach Ă«mmer, all AfĂ©ierung vun engem neie Teammember mat Zougang zu der Kampfinfrastruktur an natierlech op d'Kampfdatenbank ass en Eemer vu Validol fir jiddereen ronderĂ«m. Gutt, wien kennt hien, en Newbie, vlĂ€icht ass hien iwwerrascht? Et ass grujeleg, Dir wĂ€ert averstanen.

ContainerisĂ©ierung an tatsĂ€chlech dĂ©i verdeelt kierperlech Topologie vun der Datebank vun Ärem Projet hĂ«lleft esou validĂ©ierend Momenter ze vermeiden. Vertrau net engem Newbie? OK! Loosst eis him sĂ€in eegene Cluster ginn fir mat ze schaffen an d'Datebank vun den anere Cluster ze trennen - SynchronisĂ©ierung nĂ«mmen duerch manuell Push a Synchron-Rotatioun vun zwee SchlĂ«sselen (eent fir d'TeamfĂŒhrung, dĂ©i aner fir den Admin). A jiddereen ass frou.

An elo ass et ZÀit fir Géigner vum Datebankclustering z'Ànneren.

DĂ€ischter SĂ€it

Wann ee bedenkt, firwat et sech net lount, d'Datebank an engem Container ze konteneréieren an se weider op enger zentraler Plaz ze bedreiwen ServerLoosst eis net op orthodox Rhetorik a Aussoen ewéi "Eis Grousspappen hunn Datenbanken op Hardware gebaut, a mir och!" zréckgrÀifen, loosst eis amplaz probéieren, eis eng Situatioun virzestellen, an dÀr Containeriséierung tatsÀchlech konkret Virdeeler bréngt.

Averstanen, d'Projeten, déi wierklech eng Basis an engem Container brauchen, kënnen op d'Fangere vun enger Hand gezielt ginn vun net dee beschten Milling Machine Bedreiwer. Fir de gréissten Deel ass och d'Benotzung vu k8s oder Docker Swarm selwer iwwerflësseg - zimlech dacks ginn dës Tools benotzt wéinst dem allgemengen Hype vun Technologien an den Attitudë vum "AllmÀchtege" an der Persoun vun de Geschlechter fir alles an d'Drénken ze drécken. Wolleken a Container. Gutt, well elo ass et moudesch a jiddereen mécht et.

Op d'mannst d'Halschent vun de FÀll ass d'Benotzung vu Kubernetis oder just Docker op engem Projet iwwerflësseg. D'Fro ass datt net all Teams oder Outsourcingfirmen, déi agestallt gi fir d'Infrastruktur vum Client z'erhalen, dëst bewosst sinn. Et ass méi schlëmm wann d'Container imposéiert sinn, well et de Client eng gewësse Quantitéit u Mënzen kascht.

Am Allgemengen gëtt et d'Meenung datt d'Docker / Cube Mafia domm Clienten zerstéiert déi dës Infrastruktur Themen outsourcen. No allem, fir mat Cluster ze schaffen, brauche mir Ingenieuren, déi dozou fÀeg sinn an allgemeng d'Architektur vun der ëmgesater Léisung verstoen. Mir hunn eng Kéier schonn eise Fall mat der Republik Publikatioun beschriwwen - do hu mir d'Team vum Client trainéiert fir an de Realitéite vu Kubernetis ze schaffen, a jiddereen war zefridden. An et war anstÀnneg. Oft huelen k8s "Implementer" d'Infrastruktur vum Client als Geisel - well se elo nëmme verstinn wéi alles do funktionnéiert; et gi keng Spezialisten op der SÀit vum Client.

Stellt Iech elo vir, datt mir op dĂ«s ManĂ©ier net nĂ«mmen de Webserverdeel outsourcen, awer och d'Datebankhaltung. Mir hu gesot datt BD d'HĂ€erz ass, an de Verloscht vum HĂ€erz ass fatal fir all liewegen Organismus. Kuerz gesot, d'Perspektiven sinn net dĂ©i bescht. Also, amplaz vum Hype Kubernetis, sollten vill Projeten einfach net mam normalen Tarif fir AWS stĂ©ieren, wat all d'Problemer mat der Laascht op hirem Site / Projet lĂ©isen. Awer AWS ass net mĂ©i moudesch, a Show-offs si mĂ©i wĂ€ert wĂ©i Suen - leider och am IT Ëmfeld.

OK. VlÀicht brauch de Projet wierklech Clustering, awer wann alles kloer ass mat stateless Uwendungen, wéi kënne mir dann anstÀnneg Netzwierkverbindung fir eng clustered Datebank organiséieren?

Wa mir vun enger nahtloser Ingenieursléisung schwÀtzen, dat ass wat den Iwwergang op k8s ass, dann ass eisen Haapt Kappwéi Datereplikatioun an enger clusteréierter Datebank. E puer DBMSs sinn am Ufank zimlech trei zu der Verdeelung vun Daten tëscht hiren individuellen Instanzen. Vill anerer sinn net sou begréissend. An zimlech dacks ass d'Haaptargument bei der Auswiel vun engem DBMS fir eise Projet net d'FÀegkeet ze replizéieren mat minimale Ressourcen an IngenieurskÀschte. Besonnesch wann de Projet am Ufank net als Mikrodéngscht geplangt war, mee einfach an dës Richtung evoluéiert ass.

Mir mengen datt et net néideg ass iwwer d'Geschwindegkeet vun de Netzwierkfuerer ze schwÀtzen - si si lues. Déi. Mir hunn nach keng richteg Geleeënheet, wann eppes geschitt, eng DBMS Instanz iergendwou ze Restart wou et méi ass, Zum Beispill, Prozessor Muecht oder frÀi RAM. Mir wÀerte ganz séier an d'Leeschtung vum virtualiséierte Disk Subsystem lafen. Deementspriechend muss den DBMS op sÀin eegene perséinleche Set vu Maschinnen, déi an der Noperschaft lÀit, nagelt ginn. Oder et ass néideg iergendwéi getrennt genuch séier Datensynchroniséierung fir déi vermeintlech Reserven ofzekillen.

D'Thema vu virtuelle Dateiesystemer weiderfĂ©ieren: Docker Volumen, leider, sinn net problemfrĂ€i. Am Allgemengen, an esou enger Saach wĂ©i laangfristeg zouverlĂ€sseg Datelagerung, gĂ©if ech gĂ€r mat den technesch einfachste Schemaen maachen. An eng nei Abstraktiounsschicht vun der FS vum Container un den FS vum Elterendeel ze addĂ©ieren ass e Risiko u sech. Awer wann d'Operatioun vum ContainerisĂ©ierungs-ËnnerstĂ«tzungssystem och Schwieregkeete mat der Iwwerdroung vun Daten tĂ«scht dĂ«se Schichten begĂ©int, dann ass et wierklech eng Katastroph. Am Moment schĂ©ngen dĂ©i meescht vun de Probleemer, dĂ©i der progressiver MĂ«nschheet bekannt sinn, gelĂ€scht ze sinn. Awer Dir verstitt, wat de Mechanismus mĂ©i komplex ass, wat et mĂ©i einfach brĂ©cht.

Am Liicht vun all dësen "Abenteuer" ass et vill méi rentabel a méi einfach d'Datebank op enger Plaz ze halen, an och wann Dir d'Applikatioun muss containeriséieren, loosst se eleng lafen an duerch d'Verdeelungspaart kréien glÀichzÀiteg Kommunikatioun mat der Datebank, déi nëmmen eemol an Op enger Plaz gelies a geschriwwe gëtt. Dës Approche reduzéiert d'Wahrscheinlechkeet vu Feeler an Desynchroniséierung op e Minimum.

Wat féieren mir zu? Ausserdeem ass d'Datebank Containeriséierung passend wou et e reelle Bedierfnes dofir ass. Dir kënnt net eng voll-App-Datebank ausfëllen an et spin wéi wann Dir zwee Dutzend Mikroservicer hÀtt - et funktionnéiert net sou. An dat muss kloer verstane ginn.

Amplaz Ausgang

Wann Dir op eng kloer Conclusioun waart "d'Datebank ze virtualiséieren oder net", da wÀerte mir Iech enttÀuschen: et wÀert net hei sinn. Well bei der Schafung vun enger Infrastrukturléisung muss een net vu Moud a Fortschrëtt guidéiert ginn, mÀ virun allem vum gesonde Mënscheverstand.

Et gi Projete fir déi d'Prinzipien an Tools, déi mat Kubernetis kommen, perfekt passen, an an esou Projeten gëtt et op d'mannst am Backend-BerÀich Fridden. An et gi Projeten déi keng Containeriséierung brauchen, mee eng normal Serverinfrastruktur, well se grondsÀtzlech net op de Mikroservice-Cluster-Modell ëmskaléieren, well se falen.

Source: will.com

Setzt e Commentaire