Failover: Perfektionismus a ... Faulegkeet ruinéieren eis

Am Summer, souwuel d'Akafaktivitéit wéi och d'Intensitéit vun Ännerungen an der Infrastruktur vu Webprojeten traditionell erofgoen, seet de Captain Obvious eis. Einfach well och IT Spezialisten heiansdo an d'Vakanz ginn. An och CTO. Et ass ëmsou méi schwéier fir déi, déi am Amt bleiwen, awer dat ass elo net de Punkt: vläicht ass de Summer déi bescht Zäit fir lues iwwer déi existent Reservéierungsschema ze denken an e Plang auszeschaffen fir et ze verbesseren. An d'Erfahrung vum Yegor Andreev aus AdminDivision, iwwer déi hien op der Konferenz geschwat huet Uptime Dag.

Et gi verschidde Fallen, op déi Dir kënnt falen wann Dir Backupsiten bauen. An et ass absolut onméiglech an hinnen gefaangen ze ginn. A wat eis an deem ganzen ruinéiert, wéi a ville anere Saachen, ass Perfektionismus a ... Faulegkeet. Mir probéieren alles ze maachen, alles, alles perfekt, awer mir brauchen et net perfekt ze maachen! Dir musst just verschidde Saachen maachen, awer maacht se richteg, fëllt se sou datt se richteg funktionnéieren.

Failover ass net eng Zort Spaass, Spaass Saach; dat ass eng Saach déi genau eng Saach maache soll - d'Downtime reduzéieren sou datt de Service, d'Firma, manner Sue verléiert. An all Reservéierungsmethoden proposéieren ech Iech am folgende Kontext ze denken: Wou sinn d'Suen?

Failover: Perfektionismus a ... Faulegkeet ruinéieren eis

Éischt Trap: wa mir grouss, zouverlässeg Systemer bauen an Redundanz engagéieren, reduzéieren mir d'Zuel vun Accidenter. Dëst ass eng schrecklech Mëssverständnis. Wa mir an Redundanz engagéieren, wäerte mir wahrscheinlech d'Zuel vun den Accidenter erhéijen. A wa mir alles richteg maachen, da wäerte mir zesummen d'Downtime reduzéieren. Et wäerten méi Accidenter kommen, déi awer zu méi niddrege Käschte kommen. Wat ass eng Reservatioun? - dëst ass eng Komplikatioun vum System. All Komplikatioun ass schlecht: mir hu méi Zänn, méi Gears, an engem Wuert, méi Elementer - an dofir eng méi héich Chance fir Decompte. A si wäerte wierklech briechen. A si wäerte méi dacks briechen. En einfacht Beispill: loosst eis soen datt mir eng Websäit mat PHP a MySQL hunn. An et muss dréngend reservéiert ginn.

Shtosh (c) Mir huelen den zweete Site, bauen en identesche System ... D'Komplexitéit gëtt duebel sou grouss - mir hunn zwee Entitéiten. Mir rullen och eng gewësse Logik aus fir Daten vun engem Site op eng aner ze transferéieren - dat heescht Datereplikatioun, kopéieren statesch Donnéeën, asw. Also, d'Replikatiounslogik ass normalerweis ganz komplex, an dofir kann d'total Komplexitéit vum System net 2, awer 3, 5, 10 Mol méi grouss sinn.

Zweet Fal: wa mir wierklech grouss komplex Systemer bauen, fantaséiere mir wat mir um Enn wëllen kréien. Voila: mir wëllen e super zouverlässeg System kréien, deen ouni Ënnerbriechung funktionnéiert, an enger halwer Sekonn (oder besser nach, direkt) schalt, a mir fänken un Dreem ze realiséieren. Mee et gëtt och eng Nuance hei: Wat méi kuerz déi gewënschte Schaltzäit ass, wat d'Systemlogik méi komplex gëtt. Wat mir méi komplex musse maachen fir dës Logik ze maachen, dest méi dacks wäert de System zerbriechen. An Dir kënnt an eng ganz désagréabel Situatioun kommen: mir probéieren mat all eiser Kraaft d'Downtime ze reduzéieren, awer tatsächlech maache mir alles méi komplizéiert, a wann eppes falsch leeft, wäert d'Downtime méi laang sinn. Hei fällt Dir Iech dacks un ze denken: bon ... et wier besser net ze reservéieren. Et wier besser wann et eleng a mat verständlechen Ënnerbriechung funktionnéiert.

Wéi kënnt Dir dëst bekämpfen? Mir mussen ophalen fir eis selwer ze léien, ophalen eis selwer ze schmaachen, datt mir elo e Raumschëff hei bauen, awer adäquat verstoen wéi laang de Projet ka leien. A fir dës maximal Zäit wäerte mir wielen wéi eng Methoden mir tatsächlech benotze fir d'Zouverlässegkeet vun eisem System ze erhéijen.

Failover: Perfektionismus a ... Faulegkeet ruinéieren eis

Et ass Zäit fir "Geschichten aus w" ... natierlech aus dem Liewen.

Beispill Nummer eent

Stellt Iech eng Visittekaart Websäit fir Pipe Rolling Plant No. Just drënner ass de Slogan: "Eis Päifen sinn déi ronnste Päifen am N." An hei drënner ass d'Telefonsnummer vum CEO a säin Numm. Mir verstinn datt Dir eng Reservatioun maache musst - dëst ass eng ganz wichteg Saach! Loosst eis ufänken erauszefannen, aus wat et besteet. Html-statics - dat ass, e puer Biller, wou de Generaldirekter, tatsächlech, eng Zort nächst Deal um Dësch am Buedzëmmer mat sengem Partner diskutéiert. Mir fänken un d'Downtime ze denken. Et kënnt am Kapp: Dir musst fënnef Minutten do leien, net méi. An da stellt sech d'Fro: Wéivill Ofsaz gouf et vun dësem Site vun eis am Allgemengen? Wéi vill - wéi vill? Wat heescht "null"? An dat heescht: Well de Generol huet d'lescht Joer all véier Transaktiounen um selwechten Dësch gemaach, mat deene selwechte Leit mat deenen se an d'Badhaus goen an um Dësch sëtzen. A mir verstinn, datt och wann de Site fir en Dag sëtzt, näischt schrecklech wäert geschéien.

Baséierend op der Aféierungsinformatioun gëtt et en Dag fir dës Geschicht z'erhiewen. Loosst eis un e Redundanzschema denken. A mir wielen déi ideal Redundanzschema fir dëst Beispill: mir benotzen keng Redundanz. Dat Ganzt ka vun all Administrateur an enger hallwer Stonn mat Rauchpausen opgehuewe ginn. Installéiert e Webserver, füügt Dateien derbäi - dat ass et. Et wäert schaffen. Dir musst näischt oppassen, Dir musst net besonnesch op eppes oppassen. Dat ass, d'Konklusioun aus Beispill Nummer eent ass ganz kloer: Servicer déi net reservéiert musse ginn, mussen net reservéiert ginn.

Failover: Perfektionismus a ... Faulegkeet ruinéieren eis

Beispill Nummer zwee

Firmeblog: do schreiwen speziell ausgebilte Leit Neiegkeeten, mir hunn un esou an esou enger Ausstellung deelgeholl, mä mir hunn en aneren neie Produit erausbruecht, asw. Loosst eis soen datt dëst Standard PHP mat WordPress ass, eng kleng Datebank an e bësse statesch. Natierlech kënnt et erëm an de Kapp, datt Dir op kee Fall sollt leien - "net méi wéi fënnef Minutten!" Dat ass alles. Mee loosst eis weider denken. Wat mécht dëse Blog? D'Leit kommen do aus Yandex, vu Google baséiert op e puer Ufroen, organesch. Super. Huet de Verkaf eppes domat ze dinn? Epiphany: net wierklech. Reklammverkéier geet op d'Haaptsäit, déi op enger anerer Maschinn ass. Loosst eis un e Buchungsschema denken. Op eng gutt Manéier muss et an e puer Stonnen opgehuewe ginn, an et wier flott fir dat ze preparéieren. Et wier raisonnabel eng Maschinn vun engem aneren Datenzenter ze huelen, d'Ëmwelt drop ze rullen, dat heescht e Webserver, PHP, WordPress, MySQL, an et do ze loossen. Am Moment wou mir verstinn datt alles gebrach ass, musse mir zwou Saache maachen - de mysql Dump 50 Meter ausrollen, et flitt an enger Minutt dohinner, a rullt eng gewëssen Zuel vu Biller aus dem Backup do aus. Dëst ass och net do fir Gott weess wéi laang. Also an enger hallwer Stonn klëmmt dat Ganzt. Keng Replikatioun, oder Gott verzeien mech, automatesch Failover. Fazit: wat mir séier aus engem Backup ausrollen, brauch net ze backen.

Failover: Perfektionismus a ... Faulegkeet ruinéieren eis

Beispill Nummer dräi, méi komplizéiert

Online Geschäft. PhP mat oppenen Häerz ass e bësse tweaked, mysql mat enger zolitter Basis. Zimlech vill statesch (schliisslech huet den Online Store schéin HD Biller an all déi Saachen), Redis fir d'Sessioun an Elasticsearch fir Sich. Mir fänken un d'Downtime ze denken. An hei ass et natierlech evident, datt en Online-Buttek een Dag laang net schmerzlos ka leien. Ëmmerhin, wat méi laang et läit, wat mir méi Sue verléieren. Et ass derwäert ze beschleunegen. Wéi vill? Ech denken, wa mir eng Stonn léien, gëtt keen verréckt. Jo, mir verléieren eppes, awer wa mir ufänken haart ze schaffen, gëtt et nëmmen verschlechtert. Mir definéieren e Schema vun Ausdauer pro Stonn erlaabt.

Wéi kann dat alles reservéiert ginn? Dir braucht op alle Fall en Auto: eng Stonn Zäit ass relativ wéineg. Mysql: hei brauche mer scho Replikatioun, Live Replikatioun, well an enger Stonn wäerten 100 GB héchstwahrscheinlech net op den Dump bäigesat ginn. Statik, Biller: erëm, an enger Stonn 500 GB kann net Zäit hunn dobäi ginn. Dofir ass et besser d'Biller direkt ze kopéieren. Redis: Dëst ass wou d'Saache interessant ginn. A Redis gi Sessiounen gespäichert - mir kënnen et net nëmmen huelen a begruewen. Well dat wäert net ganz gutt sinn: all Benotzer ginn ausgeloggt, hir Kuerf eidel gemaach, asw. D'Leit wäerte gezwongen sinn hire Benotzernumm a Passwuert erëm anzeginn, a vill Leit kënnen ofbriechen an de Kaf net fäerdeg maachen. Erëm, Konversioune falen. Op der anerer Säit ass Redis direkt aktuell, mat de leschten ageloggte Benotzer wahrscheinlech och net néideg. An e gudde Kompromiss ass Redis ze huelen an et aus engem Backup vu gëschter ze restauréieren, oder, wann Dir et all Stonn maacht, vun enger Stonn virun. Glécklecherweis heescht et aus engem Backup ze restauréieren eng Datei kopéieren. An déi interessantst Geschicht ass Elasticsearch. Wien huet jeemools MySQL Replikatioun opgeholl? Wien huet jeemools Elasticsearch Replikatioun opgeholl? A fir wiem huet et normalerweis no? Wat ech mengen ass datt mir eng gewëssen Entitéit an eisem System gesinn. Et schéngt nëtzlech ze sinn - awer et ass komplex.
Komplex am Sënn datt eis Matbierger Ingenieuren keng Erfahrung hunn domat ze schaffen. Oder et gëtt eng negativ Erfahrung. Oder mir verstinn datt dëst nach ëmmer eng zimlech nei Technologie mat Nuancen oder Rawness ass. Mir denken ... Verdammt, elastesch ass och gesond, et dauert och laang fir se aus engem Backup ze restauréieren, wat soll ech maachen? Mir verstinn datt elastesch an eisem Fall fir Sich benotzt gëtt. Wéi verkeeft eisen Online Store? Mir ginn bei d'Marketer a froe wou d'Leit hierkommen. Si äntweren: "90% vum Yandex Maart kommen direkt op d'Produktkaart." An entweder se kafen et oder se maachen net. Dofir ass d'Sich vun 10% vun de Benotzer gebraucht. A behalen elastesch Replikatioun, besonnesch tëscht verschiddenen Datenzenteren a verschiddene Zonen, huet wierklech vill Nuancen. Wéi eng Sortie? Mir huelen elastesch aus engem reservéierten Site a maachen näischt mat. Wann d'Saach weidergeet, wäerte mir et wahrscheinlech enges Daags erhéijen, awer dëst ass net sécher. Eigentlech ass d'Conclusioun déi selwecht, plus oder minus: mir, erëm, reservéieren keng Servicer déi net Geld beaflossen. Fir den Diagramm méi einfach ze halen.

Failover: Perfektionismus a ... Faulegkeet ruinéieren eis

Beispill Nummer véier, nach méi schwéier

Integrator: Blummen verkafen, Taxi ruffen, Wueren verkafen, allgemeng alles. Eng sérieux Saach déi 24/7 fir eng grouss Zuel vu Benotzer funktionnéiert. Mat engem vollwäertege interessante Stack, wou et interessant Basen, Léisungen, héich Belaaschtung, an am wichtegsten ass et wéideet fir méi wéi 5 Minutten ze leien. Net nëmmen an net sou vill, well d'Leit net kafen, mee well d'Leit gesinn datt dës Saach net funktionnéiert, wäerte se opgeregt ginn a kënnen guer net zréckkommen.

OK. Fënnef Minutten. Wat wäerte mir doriwwer maachen? An dësem Fall benotze mir, wéi Erwuessener, all d'Suen fir e richtege Backup-Site ze bauen, mat Replikatioun vun allem, a vläicht souguer automatiséieren de Wiessel op dëse Site sou vill wéi méiglech. An zousätzlech zu dësem, Dir musst drun erënneren eng wichteg Saach ze maachen: eigentlech, Schreiwen d'Schalter Reglementer. D'Reglementer, och wann Dir alles automatiséiert hutt, kënne ganz einfach sinn. Vun der Serie "Laf esou an esou en ansible Skript", "klickt esou an esou eng Checkbox op der Streck 53" an sou weider - awer dëst muss eng Aart vun exakt Lëscht vun Aktiounen sinn.

An alles schéngt kloer. Replikatioun wiesselen ass eng trivial Aufgab, oder et wäert sech selwer wiesselen. En Domain Numm an DNS nei schreiwen ass aus der selwechter Serie. De Problem ass datt wann esou e Projet klappt, Panik ufänkt, a souguer déi stäerkst, bäertege Administrateure kënnen ufälleg sinn. Ouni kloer Instruktiounen "öffnen den Terminal, kommt hei, d'Adress vun eisem Server ass nach ëmmer esou," et ass schwéier déi 5-Minuten Zäitlimit ze erfëllen, déi fir d'Reanimatioun zougewisen ass. Gutt, plus, wa mir dës Reglementer benotzen, ass et einfach e puer Ännerungen an der Infrastruktur opzehuelen, zum Beispill, an d'Reglementer deementspriechend z'änneren.
Gutt, wann de Reservatiounssystem ganz komplex ass an irgendwann hu mir e Feeler gemaach, da kënne mir eis Backup-Site zerstéieren, an zousätzlech d'Donnéeën an e Kürbis op béide Site ëmsetzen - dat wäert komplett traureg sinn.

Failover: Perfektionismus a ... Faulegkeet ruinéieren eis

Beispill Nummer fënnef, komplett Hardcore

En internationale Service mat Honnerte vu Millioune Benotzer weltwäit. All Zäitzonen do sinn, héich Laascht op maximal Geschwindegkeet, Dir kënnt guer net leien. Eng Minutt - an et wäert traureg sinn. Wat kann een maachen? Reservéiert nach eng Kéier, nom komplette Programm. Mir hunn alles gemaach iwwer wat ech am virege Beispill geschwat hunn, an e bësse méi. Eng ideal Welt, an eis Infrastruktur ass no all de Konzepter vun IaaC devops. Dat ass, alles ass am Git, an Dir dréckt just op de Knäppchen.

Wat feelt? Ee - Übungen. Et ass onméiglech ouni hinnen. Et schéngt, datt bei eis alles perfekt ass, mir hunn allgemeng alles ënner Kontroll. Mir drécken op de Knäppchen, alles geschitt. Och wann dat esou ass - a mir verstinn datt et net esou geschitt - eise System interagéiert mat e puer anere Systemer. Zum Beispill ass dëst dns vun der Route 53, s3 Storage, Integratioun mat e puer API. Mir wäerten an dësem spekulativen Experiment net alles viraussoen. A bis mir tatsächlech de Schalter zéien, wësse mer net ob et funktionnéiert oder net.

Failover: Perfektionismus a ... Faulegkeet ruinéieren eis

Dat ass wahrscheinlech alles. Sidd net faul oder iwwerdréit et. A kann Uptime mat Iech sinn!

Source: will.com

Setzt e Commentaire