Failover: perfekcionisms un... slinkums mūs sagrauj

Vasarā tradicionāli samazinās gan iepirkumu aktivitāte, gan web projektu infrastruktÅ«ras izmaiņu intensitāte, stāsta Captain Evidence. Tikai tāpēc, ka pat IT cilvēki dažreiz dodas atvaļinājumā. Un arÄ« CTO. Jo grÅ«tāk klājas tiem, kas paliek amatā, taču tagad runa nav par to: iespējams, tieÅ”i tāpēc vasara ir labākais laiks, lai apsvērtu esoÅ”o rezervāciju shēmu un izstrādātu plānu tās uzlaboÅ”anai. Un Å”ajā jums bÅ«s noderÄ«ga Jegora Andrejeva pieredze no AdminDivisionpar ko viņŔ runāja konferencē DarbÄ«bas diena.

Veidojot rezerves vietas, rezervējot ir vairākas lamatas, kurās var iekrist. Un tos Ä«sti nevar sist. Un sagrauj mÅ«s Å”ajā visā, tāpat kā daudzās citās lietās, perfekcionisms un ... slinkums. Mēs cenÅ”amies visu-visu-visu padarÄ«t perfektu, bet jums tas nav jādara perfekti! Jums ir jādara tikai noteiktas lietas, bet jādara tās pareizi, jānoved tās lÄ«dz galam, lai tās darbotos normāli.

Kļūmjpārlēce nav kaut kāda jautra, jautra ā€œlai tā bÅ«tuā€ lieta; tā ir lieta, kurai vajadzētu darÄ«t tieÅ”i vienu - samazināt dÄ«kstāves laiku, lai serviss, uzņēmums zaudētu mazāk naudas. Un visās rezervÄ“Å”anas metodēs es iesaku domāt Ŕādā kontekstā: kur ir nauda?

Failover: perfekcionisms un... slinkums mūs sagrauj

Pirmā lamatas: veidojot lielas, uzticamas sistēmas un veicot dublÄ“Å”anu, mēs samazinām negadÄ«jumu skaitu. Tas ir briesmÄ«gs malds. Veicot atlaiÅ”anu, mēs, visticamāk, palielināsim negadÄ«jumu skaitu. Un, ja mēs visu darÄ«sim pareizi, tad kolektÄ«vi samazināsim dÄ«kstāves laiku. BÅ«s vairāk negadÄ«jumu, taču tie notiks par zemākām izmaksām. Galu galā, kas ir rezervācija? ir sistēmas sarežģījums. JebkurÅ” sarežģījums ir slikts: mums ir vairāk skrÅ«vju, vairāk zobratu, vārdu sakot, vairāk elementu - un lÄ«dz ar to lielāka iespēja salÅ«zt. Un viņi patieŔām saplÄ«st. Un tie plÄ«sÄ«s biežāk. VienkārÅ”s piemērs: pieņemsim, ka mums ir vietne ar PHP, MySQL. Un tas steidzami jārezervē.

Shtosh (c) Mēs ņemam otro vietni, izveidojam identisku sistēmu... SarežģītÄ«ba kļūst divreiz lielāka - mums ir divas vienÄ«bas. Un mēs arÄ« pārsÅ«tām noteiktu loÄ£iku datu pārsÅ«tÄ«Å”anai no vienas vietnes uz otru no augÅ”as - tas ir, datu replikācija, statikas kopÄ“Å”ana utt. Tātad replikācijas loÄ£ika parasti ir ļoti sarežģīta, un tāpēc sistēmas kopējā sarežģītÄ«ba var bÅ«t nevis 2, bet 3, 5, 10 reizes lielāka.

Otrais lamatas: veidojot patieŔām lielas sarežģītas sistēmas, mēs fantazējam, ko mēs galu galā vēlamies iegÅ«t. Voila: mēs vēlamies Ä«paÅ”i uzticamu sistēmu, kas darbojas bez dÄ«kstāves, pārslēdzas pussekundes laikā (vai labāk, uzreiz) un sāk Ä«stenot sapņus. Bet arÄ« Å”eit ir nianse: jo Ä«sāks ir vēlamais pārslēgÅ”anas laiks, jo sarežģītāka kļūst sistēmas loÄ£ika. Jo grÅ«tāk mums ir jāpadara Ŕī loÄ£ika, jo biežāk sistēma salÅ«zÄ«s. Un jÅ«s varat nonākt ļoti nepatÄ«kamā situācijā: mēs cenÅ”amies samazināt dÄ«kstāves laiku, bet patiesÄ«bā mēs visu sarežģījam, un, ja kaut kas noiet greizi, dÄ«kstāves laiks bÅ«s ilgāks. Å eit jÅ«s bieži pieÄ·erat sevi pie domas: Å”eit ... labāk nebÅ«tu rezervēt. BÅ«tu labāk, ja tas darbotos atseviŔķi un ar skaidru dÄ«kstāvi.

Kā ar to var cÄ«nÄ«ties? Mums ir jābeidz melot sev, jābeidz glaimot, ka mēs tÅ«lÄ«t bÅ«vēsim kosmosa kuÄ£i, bet adekvāti jāsaprot, cik ilgi projekts var nogulties. Un saskaņā ar Å”o maksimālo laiku mēs izvēlēsimies, ar kādām metodēm mēs palielināsim mÅ«su sistēmas uzticamÄ«bu.

Failover: perfekcionisms un... slinkums mūs sagrauj

Ir pienācis laiks "stāstiem no f" ... no dzīves, protams.

Piemērs numur viens

Iedomājieties pilsētas N cauruļu velmÄ“Å”anas rÅ«pnÄ«cas Nr.1 ā€‹ā€‹vizÄ«tkartes vietni. Tur ar milzÄ«giem burtiem rakstÄ«ts - PIPE ROLLING PLANT Nr.1. Nedaudz zemāks ir sauklis: "MÅ«su caurules ir apaļākās caurules N." Un apakŔā ir izpilddirektora tālruņa numurs un viņa vārds. Mēs saprotam, ka jums ir nepiecieÅ”ams rezervēt - tā ir ļoti svarÄ«ga lieta! Sāksim saprast, no kā tas sastāv. Html-statika - tas ir, pāris bildes, kur Ä£enerālis, patiesÄ«bā, pie pirts galda ar savu partneri apspriež kādu nākamo darÄ«jumu. Mēs sākam domāt par dÄ«kstāvi. Nāk prātā: tev vajag nogulēt piecas minÅ«tes, ne vairāk. Un tad ir jautājums: cik daudz pārdoÅ”anas Å”ajā mÅ«su vietnē bija kopumā? Cik daudz? Ko nozÄ«mē ā€œnulleā€? Un tas nozÄ«mē: jo visus četrus darÄ«jumus pēdējā gada laikā Ä£enerālis veicis pie viena galda, ar tiem paÅ”iem cilvēkiem, ar kuriem viņi iet uz pirti, sēž pie galda. Un mēs saprotam, ka pat tad, ja vietne nogulēs uz dienu, nekas briesmÄ«gs nebÅ«s.

Pamatojoties uz ievadÄ«to, ir diena, lai izceltu Å”o stāstu. Sākam domāt par atlaiÅ”anas shēmu. Un Å”im piemēram mēs izvēlamies ideālāko atlaiÅ”anas shēmu: mēs neizmantojam atlaiÅ”anu. Visu Å”o lietu jebkurÅ” admins paceļ pusstundas laikā ar dÅ«mu pauzēm. Uzstādiet tÄ«mekļa serveri, ielieciet failus - tas arÄ« viss. Tas darbosies. Nav ko skatÄ«ties, nav kam pievērst Ä«paÅ”u uzmanÄ«bu. Tas ir, secinājums no piemēra numur viens ir diezgan acÄ«mredzams: pakalpojumi, kuriem nav nepiecieÅ”ams dublēt, nav jādublē.

Failover: perfekcionisms un... slinkums mūs sagrauj

Piemērs numur divi

Uzņēmuma blogs: tur ziņas raksta speciāli apmācÄ«ti cilvēki, tāpēc piedalÄ«jāmies tādā un tādā izstādē, bet izlaidām vēl vienu jaunu produktu utt. Pieņemsim, ka tas ir standarta PHP ar WordPress, nelielu datu bāzi un nedaudz statisku. Protams, atkal nāk prātā, ka nekādā gadÄ«jumā nevajadzētu gulēt - "ne vairāk kā piecas minÅ«tes!", Tas arÄ« viss. Bet padomāsim tālāk. Ko dara Å”is emuārs? Tie nāk no Yandex, no Google dažiem pieprasÄ«jumiem, organiskajiem produktiem. Lieliski. Vai tam ir kāds sakars ar pārdoÅ”anu? Ieskats: nav Ä«sti. Reklāmas datplÅ«sma tiek novirzÄ«ta uz galveno vietni, kas atrodas citā datorā. Sāksim domāt par emuāra rezervÄ“Å”anas shēmu. Labā nozÄ«mē tas jāpaceļ pāris stundu laikā, un bÅ«tu jauki tam sagatavoties. BÅ«tu saprātÄ«gi paņemt maŔīnu citā datu centrā, uzrullēt tajā vidi, tas ir, tÄ«mekļa serveri, PHP, WordPress, MySQL un atstāt to izslēgtu. BrÄ«dÄ«, kad saprotam, ka viss ir salÅ«zis, ir jāizdara divas lietas - jāizripina mysql dump lÄ«dz 50 metriem, tas pēc minÅ«tes lidos tur, un no tur esoŔās rezerves izritināt noteiktu skaitu bilžu. Tas ir arÄ« tur, ne Dievs nezina, cik daudz. Tātad pusstundas laikā viss paceļas. Jebkādas replikācijas, vai Dievs piedod, automātiska kļūmjpārlēce. Secinājums: to, ko mēs varam ātri izvilkt no rezerves, nav nepiecieÅ”ams rezervēt.

Failover: perfekcionisms un... slinkums mūs sagrauj

TreÅ”ais piemērs, grÅ«tāks

Interneta veikals. PhP ar atvērtu sirdi ir nedaudz noformēts, mysql ar stabilu pamatu. Diezgan daudz statikas (galu galā interneta veikalā ir skaistas HD bildes un tas viss), Redis sesijai un Elasticsearch meklÄ“Å”anai. Mēs sākam domāt par dÄ«kstāvi. Un Å”eit, protams, ir acÄ«mredzams, ka interneta veikals nevar nesāpÄ«gi nogulēt ne dienu. Galu galā, jo ilgāk tas atrodas, jo vairāk naudas mēs zaudējam. Ir vērts paātrināt. Cik daudz? Domāju, ja kādu stundu nogulēsim, neviens traks nekļūs. Jā, mēs kaut ko zaudēsim, bet, ja sāksim bÅ«t dedzÄ«gi, bÅ«s tikai sliktāk. Nosakām atļautā dÄ«kstāves stundu shēmu.

Kā to var rezervēt? AutomaŔīna ir vajadzÄ«ga jebkurā gadÄ«jumā: stunda laika ir diezgan maz. Mysql: te jau vajadzÄ«ga replikācija, dzÄ«vā replikācija, jo pēc stundas 100 GB visdrÄ«zāk neiekļūs dumpā. Statika, bildes: atkal stundas laikā 500 GB var nepaspēt pievienoties. Tāpēc labāk ir uzreiz kopēt attēlus. Redis: Å”eit lietas kļūst interesantas. Sesijas atrodas Redisā ā€” mēs nevaram to vienkārÅ”i paņemt un aprakt. Jo nebÅ«s ļoti labi: visi lietotāji tiks izrakstÄ«ti, grozi tiks iztukÅ”oti utt. Cilvēki bÅ«s spiesti atkārtoti ievadÄ«t savu lietotājvārdu un paroli, un daudzi cilvēki var atdalÄ«ties un nepabeigt pirkumu. Atkal konversija samazināsies. No otras puses, Redis ir atjaunināts, ar pēdējiem pieteicējiem lietotājiem, iespējams, arÄ« nav vajadzÄ«gs. Un labs kompromiss ir ņemt Redis un atjaunot to no dublējuma vakar vai, ja to darāt katru stundu, pirms stundas. Par laimi, tā atjaunoÅ”ana no dublējuma ir viena faila kopÄ“Å”ana. Un visinteresantākais stāsts ir Elasticsearch. KurÅ” kādreiz radÄ«ja MySQL replikāciju? Vai kāds kādreiz ir paņēmis Elasticsearch replikāciju? Un pēc kā viņa normāli strādāja? Ko es domāju: mēs savā sistēmā redzam noteiktu entÄ«tiju. Tas ir sava veida noderÄ«gi, bet sarežģīti.
GrÅ«ti tādā ziņā, ka mÅ«su kolēģiem inženieriem ar to nav pieredzes. Vai arÄ« ir slikta pieredze. Vai arÄ« mēs saprotam, ka Ŕī ir diezgan jauna tehnoloÄ£ija ar niansēm vai mitrumu. Mēs domājam... SasodÄ«ts, elastÄ«ba arÄ« ir veselÄ«ga, arÄ« tās atjaunoÅ”ana no dublējuma prasa ilgu laiku, ko man darÄ«t? Mēs saprotam, ka elastÄ«gais mÅ«su gadÄ«jumā tiek izmantots meklÄ“Å”anai. Kā mÅ«su tieÅ”saistes veikals pārdod? Mēs ejam pie tirgotājiem un jautājam, no kurienes nāk cilvēki. Viņi atbild: "90% no Yandex tirgus nonāk tieÅ”i produkta kartē." Un vai nu viņi to pērk, vai nepērk. Tāpēc 10% lietotāju ir nepiecieÅ”ama meklÄ“Å”ana. Un, lai saglabātu elastÄ«gu replikāciju, it Ä«paÅ”i starp dažādiem datu centriem dažādās zonās, patieŔām ir daudz nianÅ”u. Kura izeja? Mēs ņemam elastÄ«go gumiju rezervētā vietā un ar to neko nedarām. Ja lieta ievilksies, mēs to varam pacelt kaut kad vēlāk, bet tas nav droÅ”i. Faktiski plus vai mÄ«nus secinājums ir viens: pakalpojumus, kas neietekmē naudu, mēs atkal nerezervējam. Lai ķēde bÅ«tu vienkārÅ”a.

Failover: perfekcionisms un... slinkums mūs sagrauj

Piemērs numur četri, vēl grūtāk

Integrators: ziedu pārdoÅ”ana, taksometra izsaukÅ”ana, preču pārdoÅ”ana, vispār jebkas. Nopietna lieta, kas strādā 24/7 lielam lietotāju skaitam. Ar pilnvērtÄ«gu interesantu steku, kur ir interesantas bāzes, risinājumi, liela slodze, un galvenais, guļot ilgāk par 5 minÅ«tēm viņam sāp. Ne tikai un ne tik daudz tāpēc, ka cilvēki nepirks, bet tāpēc, ka cilvēki redzēs, ka Ŕī lieta nedarbojas, viņi bÅ«s sarÅ«gtināti un otrreiz var neatnākt vispār.

LABI. Piecas minÅ«tes. Ko mēs ar Å”o darÄ«sim? Å ajā gadÄ«jumā pieauguÅ”o veidā mēs veidojam Ä«stu rezerves vietni ar visu naudu, ar visu un visu replikāciju un, iespējams, pat automatizējot maksimālo pāreju uz Å”o vietni. Un papildus tam jums ir jāatceras, ka ir jāveic viena svarÄ«ga lieta: faktiski jāuzraksta pārslēgÅ”anas noteikumi. Regulējums, pat ja jums viss un viss ir automatizēts, var bÅ«t ļoti vienkārÅ”s. No sērijām ā€œpalaist tādu un tādu iespējamo skriptuā€, ā€œnospiediet tādu un tādu izvēles rÅ«tiņu 53. marÅ”rutāā€ un tā tālāk - bet tam vajadzētu bÅ«t kaut kādam precÄ«zam darbÄ«bu sarakstam.

Un Ŕķiet, ka viss ir skaidrs. Replikācijas pārslēgÅ”ana ir triviāls uzdevums, pretējā gadÄ«jumā tā pārslēgsies pati. Pārrakstiet domēna vārdu dns - no tās paÅ”as sērijas. Problēma ir tāda, ka tad, kad Ŕāds projekts krÄ«t, iestājas panika, un tam var tikt pakļauti pat stiprākie, bārdaini administratori. Bez skaidras norādes ā€œatver termināli, nāc Å”urp, mÅ«su servera adrese joprojām ir Ŕādaā€ reanimācijai atvēlēto 5 minÅ«Å”u periodu ir grÅ«ti izturēt. Nu, plus, kad mēs izmantojam Å”o regulējumu, ir viegli salabot, piemēram, dažas izmaiņas infrastruktÅ«rā un attiecÄ«gi mainÄ«t regulējumu.
Nu, ja rezervÄ“Å”anas sistēma ir ļoti sarežģīta un kādā brÄ«dÄ« esam pieļāvuÅ”i kļūdu, tad varam nolikt savu rezerves vietni un papildus pārvērst datus par Ä·irbi abās vietnēs - tas bÅ«s ļoti skumji.

Failover: perfekcionisms un... slinkums mūs sagrauj

Piemērs piektais pilns hardcore

Starptautisks pakalpojums ar simtiem miljonu lietotāju visā pasaulē. Visas pastāvoŔās laika joslas, liela slodze ar maksimālo ātrumu, jÅ«s nevarat apgulties. MinÅ«te ā€“ un bÅ«s skumji. Ko darÄ«t? Rezerve, atkal, pilnÄ«bā. Mēs izdarÄ«jām visu, kas tika minēts iepriekŔējā piemērā, un nedaudz vairāk. Ideāla pasaule, un mÅ«su infrastruktÅ«ra ir saskaņā ar visiem IaaC devops. Tas ir, viss parasti ir git, un vienkārÅ”i nospiediet pogu.

Kas trÅ«kst? Viens ir mācÄ«Å”ana. Bez tiem nevar iztikt. Å Ä·iet, ka viss ir ideāli, mēs visu kontrolējam. Nospiežam pogu, viss notiek. Pat ja tā ir taisnÄ«ba ā€” un mēs saprotam, ka tas tā nav ā€” mÅ«su sistēma mijiedarbojas ar dažām citām sistēmām. Piemēram, tas ir dns no marÅ”ruta 53, s3 krātuve, integrācija ar kādu api. Mēs nevaram paredzēt visu Å”ajā spekulatÄ«vajā eksperimentā. Un, kamēr mēs patieŔām neizvilksim slēdzi, mēs nezinām, vai tas darbosies vai nē.

Failover: perfekcionisms un... slinkums mūs sagrauj

Tas laikam arī viss. Neesiet slinki un nepārcentieties. Un lai darba laiks ir ar jums!

Avots: www.habr.com

Pievieno komentāru