In l'estiu, l'attività di compra è l'intensità di i cambiamenti in l'infrastruttura di i prughjetti web tradiziunale diminuite, u Captain Obvious ci dice. Simply picchì ancu i spezialisti IT à volte vanu in vacanze. È ancu CTO. Hè u più difficiule per quelli chì fermanu in l'uffiziu, ma questu ùn hè micca u puntu avà: forsi hè per quessa chì l'estiu hè u megliu periodu per pensà pianu pianu à u schema di riservazione esistente è abbozzà un pianu per migliurà. È l'esperienza di Yegor Andreev da , chì hà parlatu in a cunferenza .
Ci hè parechje trappule chì pudete cascà in quandu custruisce siti di salvezza. È hè assolutamente impussibile di esse chjappu in elli. È ciò chì ci arruvina in tuttu questu, cum'è in parechje altre cose, hè u perfeccionismu è ... a pigrizia. Pruvemu di fà tuttu, tuttu, tuttu perfettamente, ma ùn avemu micca bisognu di fà perfettamente! Solu bisognu di fà certe cose, ma fate bè, compie per ch'elli travaglianu bè.
Failover ùn hè micca qualcosa di divertente, divertente; questu hè una cosa chì deve fà esattamente una cosa - riduce i tempi di inattività per chì u serviziu, a cumpagnia, perde menu soldi. È in tutti i metudi di riservazione, suggerisce di pensà à u cuntestu seguente: induve sò i soldi?

Prima trappula: quandu custruemu grandi sistemi affidabili è impegnà in redundancy, riducemu u numeru di accidenti. Questu hè un terribili misconception. Quandu ci impegnà in redundancy, hè prubabile di aumentà u numeru di accidenti. È se facemu tuttu bè, allora in modu cullettivu riduceremu i tempi di inattività. Ci saranu più accidenti, ma si feranu à i costi più bassi. Cosa hè una riserva? - questu hè una complicazione di u sistema. Qualchese cumplicazione hè male: avemu più cogs, più ingranaggi, in una parolla, più elementi - è, dunque, una probabilità più alta di rottura. È veramente si romperanu. È si romperanu più spessu. Un esempiu simplice: dicemu chì avemu un situ web cù PHP è MySQL. È urgente deve esse riservatu.
Shtosh (c) Pigliemu u sicondu situ, custruiscenu un sistema identicu ... A cumplessità diventa duie volte più grande - avemu duie entità. Avemu dinò una certa logica per u trasferimentu di dati da un situ à un altru - vale à dì, replicazione di dati, copia di dati statici, etc. Dunque, a logica di replicazione hè di solitu assai cumplessa, è per quessa, a cumplessità tutale di u sistema pò esse micca 2, ma 3, 5, 10 volte più grande.
Seconda trappula: quandu custruemu sistemi cumplessi veramente grande, fantasiemu ciò chì vulemu ottene à a fine. Voila: vulemu ottene un sistema super-affidabile chì travaglia senza alcunu downtime, cambia in mezzu secondu (o megliu ancu, istantaneamente), è cuminciamu à fà i sogni. Ma ci hè ancu una sfumatura quì: u più brevi u tempu di cambiamentu desideratu, u più cumplessu a logica di u sistema diventa. U più cumplessu avemu da fà sta logica, u più spessu u sistema si rompe. È pudete finisce in una situazione assai dispiacevule: pruvemu cù tutte e nostre forze per riduce i tempi di inattività, ma in fatti facemu tuttu più cumplicatu, è quandu qualcosa va male, i tempi di inattività finiscinu per esse più longu. Quì si piglia à spessu à pensà : bè... saria megliu ùn fà una riservazione. Saria megliu s'ellu hà travagliatu solu è cun tempi di inattività comprensibile.
Cumu pudete cumbatte questu? Avemu bisognu di piantà di mentissi à noi stessi, di piantà di lusingà chì avemu da custruisce una nave spaziale quì avà, ma capisce bè quantu tempu u prughjettu pò menti. È per questu tempu massimu, scegliemu quale metudi avemu daveru aduprà per aumentà l'affidabilità di u nostru sistema.

Hè u tempu di “stori da w”... di a vita, di sicuru.
Esempiu numeru unu
Imagine un situ web di carta di visita per Pipe Rolling Plant N ° 1 in a cità di N. Dice in lettere enormi - PIPE ROLLING PLANT N ° 1. Appena sottu hè u slogan: "I nostri pipi sò i pipi più tondi in N". È quì sottu hè u numeru di telefunu di u CEO è u so nome. Capemu chì avete bisognu di fà una riservazione - questu hè una cosa assai impurtante! Cuminciamu à capisce ciò chì hè custituitu. Html-statics - vale à dì, un paru di ritratti induve u direttore generale, in fattu, discute un tipu di prossimu affare à a tavula in u bagnu cù u so cumpagnu. Cuminciamu à pensà à i tempi di inattività. Vi vene in mente: ci vole à stà cinqui minuti, micca più. E tandu si pone a quistione: quante vendite ci eranu da stu situ di u nostru in generale? Quantu-quantu? Chì significà "zero"? È questu significa: perchè u generale hà fattu tutte e quattru transazzione l'annu passatu à a listessa tavula, cù e listesse persone cù quale si vanu à u bagnu è si sentenu à a tavula. È avemu capitu chì ancu s'è u situ si trova per un ghjornu, nunda di terribili succede.
Basatu nantu à l'infurmazioni introduttive, ci hè un ghjornu per elevà sta storia. Cuminciamu à pensà à un schema di redundancy. E scegliemu u schema di redundanza più ideale per questu esempiu: ùn usemu micca a redundanza. Tuttu sta cosa pò esse risuscitata da qualsiasi amministratore in una meza ora cù pause di fumu. Installa un servitore web, aghjunghje schedari - hè questu. Funcionerà. Ùn avete bisognu di guardà un ochju à nunda, ùn avete micca bisognu di prestu attenzione particulari à nunda. Questu hè, a cunclusione di l'esempiu numeru unu hè abbastanza evidenti: i servizii chì ùn anu micca bisognu di riservazione ùn anu micca bisognu di riservazione.

Esempiu numeru dui
Blog di a cumpagnia: u persunale furmatu apposta scrive nutizie quì, cum'è avemu participatu à tale è tale mostra, avemu publicatu un novu pruduttu, ecc. Dicemu chì hè PHP standard cù WordPress, una piccula basa di dati, è un pocu di dati statichi. Benintesa, l'idea di lasciallu senza ragione mi torna in mente - "micca più di cinque minuti!" - è tuttu què. Ma pensemu più in là. Chì face stu blog? A ghjente vene quì da Yandex, Google è ricerche organiche. Bellu. E vendite sò ancu ligate à questu? Insight: micca veramente. U trafficu publicitariu và à u situ principale, chì hè nantu à una macchina diversa. Stemu cuminciendu à pensà à un pianu di salvezza per u blog. Idealmente, duveria esse operativu in un paru d'ore, è seria una bona idea esse preparatu per quessa. Una suluzione ragionevule seria di affittà una macchina da un altru centru di dati è installà l'ambiente nantu à questu, vale à dì un servitore web, PHP, WordPress, MySQL, è lasciallu quì, silenziatu. In u mumentu chì ci rendimu contu chì tuttu hè rottu, ci vole à fà duie cose: implementà un dump MySQL à 50 metri di distanza, chì ci vole un minutu, è implementà alcune immagini da a copia di salvezza. Ancu què ùn hè micca esattamente una quantità enorme. Cusì, tuttu hè in funzione in una mezz'ora. Nisuna replica, o, Diu mi perdoni, failover automaticu. In fondu: ciò chì pudemu implementà rapidamente da una copia di salvezza ùn hà micca bisognu di esse salvatu.

Esempiu numeru trè, più cumplicatu
Store in linea. PhP cù core apertu hè un pocu tweaked, mysql cù una basa solida. Piuttostu assai statica (dopu tuttu, a tenda in linea hà belli imaghjini HD è tutte e cose), Redis per a sessione è Elasticsearch per a ricerca. Cuminciamu à pensà à i tempi di inattività. E quì, di sicuru, hè ovvi chì una tenda in linea ùn pò micca stà ind'è un ghjornu senza dolore. Dopu tuttu, più longu si trova, più soldi perdemu. Vale a pena accelerà. Quantu? Pensu chì s'ellu ci stendemu per un'ora, nimu ùn impazzisce. Iè, perderemu qualcosa, ma si cuminciamu à travaglià dura, solu peghju. Definimu un schema di downtime permessu per ora.
Cumu pò esse riservatu tuttu questu? Avete bisognu di una vittura in ogni casu: una ora di tempu hè abbastanza pocu. Mysql: quì avemu digià bisognu di replicazione, replicazione in diretta, perchè in una ora 100 GB probabilmente ùn saranu micca aghjuntu à u dump. Statica, ritratti: novu, in una ora 500 GB ùn anu micca tempu per esse aghjuntu. Per quessa, hè megliu à cupià i ritratti subitu. Redis: hè quì chì diventa interessante. In Redis, e sessioni sò guardati - ùn pudemu micca solu piglià è intarrallu. Perchè questu ùn serà micca assai bonu: tutti l'utilizatori seranu sconnessi, i so cesti seranu sviutati, è cusì. A ghjente serà furzata à ritruvà u so nome d'utilizatore è a password, è parechje persone puderanu alluntanassi è ùn compie micca a compra. Di novu, cunversione falà. Per d 'altra banda, Redis hè direttamente up-to-date, cù l'ultimi utenti cunnessi probabilmente ùn anu micca bisognu. È un bonu cumprumissu hè di piglià Redis è restaurà da una copia di salvezza da ieri, o, se fate ogni ora, da una ora fà. Fortunatamente, restaurà da una copia di salvezza significa copià un schedariu. È a storia più interessante hè Elasticsearch. Quale hà mai pigliatu a replicazione MySQL? Quale hè mai pigliatu a replicazione Elasticsearch? È per quale hà travagliatu nurmale? Ciò chì vogliu dì hè chì vedemu una certa entità in u nostru sistema. Sembra utile - ma hè cumplessu.
Cumplessu in u sensu chì i nostri cumpagni ingegneri ùn anu micca sperienza di travaglià cun ellu. O ci hè una sperienza negativa. O avemu capitu chì questu hè sempre una tecnulugia abbastanza nova cù sfumature o crudezza. Pensemu... Damn, l'elasticu hè ancu sanu, ci vole ancu assai tempu per restaurà da una copia di salvezza, chì deve fà ? Capemu chì l'elasticu in u nostru casu hè utilizatu per a ricerca. Cumu vende a nostra tenda in linea? Andemu à i marketers è dumandemu da induve vene a ghjente. Rispundenu: "90% da Yandex Market venenu direttamente à a carta di u produttu". È o compranu o ùn anu micca. Dunque, a ricerca hè necessaria da u 10% di l'utilizatori. È mantene a replicazione elastica, soprattuttu trà e diverse centri di dati in diverse zone, hà veramente assai sfumature. Quale uscita ? Pigliemu elasticu da un situ riservatu è ùn fate nunda cun ellu. Se a materia si trascina, pudemu alzà un ghjornu, ma ùn hè micca sicuru. In verità, a cunclusione hè a stessa, più o minus: noi, di novu, ùn riservemu micca servizii chì ùn anu micca affettatu di soldi. Per mantene u schema più simplice.

Esempiu numeru quattru, ancu più difficiule
Integratore: vende fiori, chjamà un taxi, vende merchenzie, in generale, qualcosa. Una cosa seria chì travaglia 24/7 per un gran numaru d'utilizatori. Cù una pila interessante cumpleta, induve ci sò basi interessanti, suluzioni, alta carica, è più importantemente, fa male à stendu per più di 5 minuti. Micca solu è micca tantu perchè a ghjente ùn hà micca cumprà, ma perchè a ghjente vi vede chì sta cosa ùn viaghja micca, si arraggianu è ùn pò micca vultà in tuttu.
OK. Cinque minuti. Chì avemu da fà per questu? In questu casu, noi, cum'è l'adulti, usemu tutti i soldi per custruisce un veru situ di salvezza, cù a replicazione di tuttu, è forsi ancu automatizà u cambiamentu à stu situ quantu pussibule. È in più di questu, avete bisognu di ricurdà di fà una cosa impurtante: in realtà, scrive i regulamenti di cambiamentu. I rigulamenti, ancu s'ellu avete tuttu automatizatu, pò esse assai simplice. Da a serie "eseguite un tali è un tali script ansible", "cliccate tali è una tale casella di spunta in a strada 53" è cusì - ma questu deve esse una sorta di lista esatta di l'azzioni.
È tuttu pare chjaru. Cambia a replicazione hè un compitu triviale, o si cambia da sè stessu. A riscrittura di un nome di duminiu in DNS hè di a listessa serie. U prublema hè chì quandu un tali prughjettu falla, u panicu principia, è ancu i più forti, l'amministratori barbuti ponu esse suscettibili à questu. Senza struzzioni chjaru "apre u terminal, venite quì, l'indirizzu di u nostru servitore hè sempre cusì", hè difficiule di scuntrà u limitu di 5 minuti attribuitu per a risuscitazione. Eppo, in più, quandu usemu sti rigulamenti, hè faciule d'arregistrà qualchi cambiamenti in l'infrastruttura, per esempiu, è cambià a regulazione in cunseguenza.
Ebbè, se u sistema di riservazione hè assai cumplessu è in un certu puntu avemu fattu un sbagliu, allora pudemu distrughje u nostru situ di salvezza, è in più turnà e dati in una zucca in i dui siti - questu serà cumplitamenti tristu.

Esempiu numeru cinque, hardcore cumpletu
Un serviziu internaziunale cù centinaie di milioni di utilizatori in u mondu. Tutti i fusi orari ci sò, alta carica à a velocità massima, ùn pudete micca stendu à tuttu. Un minutu - è sarà tristu. Chì fà ? Riserva, di novu, secondu u prugramma cumpletu. Avemu fattu tuttu ciò chì aghju parlatu in l'esempiu precedente, è un pocu più. Un mondu ideale, è a nostra infrastruttura hè secondu tutti i cuncetti di IaaC devops. Hè, tuttu hè in git, è basta à appughjà u buttone.
Chì ci manca ? Unu - esercizii. Hè impussibile senza elli. Sembra chì tuttu hè perfettu cun noi, in generale avemu tuttu sottu cuntrollu. Premu u buttone, tuttu succede. Ancu s'ellu hè cusì - è avemu capitu chì ùn succede micca cusì - u nostru sistema interagisce cù qualchi altri sistemi. Per esempiu, questu hè dns da a ruta 53, s3 storage, integrazione cù qualchì api. Ùn pudemu micca prevede tuttu in questu esperimentu speculativu. È finu à chì tiramu veramente u switch, ùn sapemu micca s'ellu hà da travaglià o micca.

Hè probabilmente tuttu. Ùn siate pigri o esagerate. È pò esse uptime cun voi!
Source: www.habr.com
