フェむルオヌバヌ: 完璧䞻矩ず怠惰が私たちをダメにしたす

倏になるず、賌買掻動ず Web プロゞェクトのむンフラストラクチャの倉化の激しさの䞡方が䌝統的に枛少するず、Captain Obvious 氏は語りたす。 それは、IT スペシャリストであっおも䌑暇を取るこずがあるためです。 そしおCTOも。 珟職に留たる人々にずっおはなおさら難しいが、今はそれが問題ではない。おそらくだからこそ、既存の予玄制床に぀いおゆっくりず怜蚎し、改善する蚈画を立おるには倏が最適な時期なのだろう。 そしお゚ゎヌル・アンドレヌ゚フの経隓から 管理郚門、圌はカンファレンスで話したした 皌働日.

バックアップ サむトを構築するずきに陥る可胜性のある萜ずし穎がいく぀かありたす。 そしお、それらに巻き蟌たれるこずは絶察に䞍可胜です。 そしお、他の倚くのこずず同様、これらすべおにおいお私たちをダメにするのは、完璧䞻矩ず怠惰です。 私たちはすべおを完璧にやろうずしおいたすが、完璧にやる必芁はありたせん。 特定のこずだけを行う必芁がありたすが、それらを正しく実行し、適切に機胜するように完了しおください。

フェむルオヌバヌは、楜しい楜しいものではありたせん。 これはたさに XNUMX ぀のこずを実行する必芁がありたす。ダりンタむムを削枛しお、サヌビスや䌁業の損倱を少なくするこずです。 そしお、すべおの予玄方法においお、次のような文脈で考えるこずをお勧めしたす。「お金はどこにあるのか?」

フェむルオヌバヌ: 完璧䞻矩ず怠惰が私たちをダメにしたす

最初の眠: 倧芏暡で信頌性の高いシステムを構築し、冗長性を確保するず、事故の数が枛りたす。 これはひどい誀解です。 人員削枛をするず、事故が増える可胜性がありたす。 すべおを正しく行えば、党䜓ずしおダりンタむムが削枛されたす。 事故は増えるだろうが、発生するコストは䜎くなるだろう。 予玄ずは䜕ですか? - これはシステムの耇雑さです。 耇雑な機構はすべお悪いものです。より倚くの歯車、より倚くの歯車、぀たりより倚くの芁玠があるため、故障の可胜性が高くなりたす。 そしお本圓に壊れおしたいたす。 そしお、壊れる頻床も高くなりたす。 簡単な䟋: PHP ず MySQL を䜿甚した Web サむトがあるずしたす。 そしおそれは緊急に予玄する必芁がありたす。

Shtosh (c) 2 番目のサむトを䜿甚しお、同䞀のシステムを構築したす... 耇雑さは 3 倍になりたす。゚ンティティが 5 ぀ありたす。 たた、あるサむトから別のサむトにデヌタを転送するための特定のロゞック (デヌタ レプリケヌション、静的デヌタのコピヌなど) も展開したす。 したがっお、レプリケヌション ロゞックは通垞非垞に耇雑であるため、システム党䜓の耇雑さは 10 倍ではなく、XNUMX、XNUMX、XNUMX 倍になる可胜性がありたす。

第二の眠: 本圓に倧芏暡で耇雑なシステムを構築するずき、私たちは最終的に䜕が埗たいかを空想したす。 出来䞊がり: 私たちは、ダりンタむムなしで動䜜し、XNUMX 秒 (たたはさらに良い堎合は瞬時) で切り替わる、非垞に信頌性の高いシステムを手に入れたいず考えおいたす。そうすれば、倢の実珟が始たりたす。 ただし、ここにはニュアンスもありたす。垌望するスむッチング時間が短くなるほど、システム ロゞックはより耇雑になりたす。 このロゞックを耇雑にすればするほど、システムが故障する頻床が高くなりたす。 そしお、非垞に䞍快な状況に陥る可胜性がありたす。私たちはダりンタむムを短瞮するために党力を尜くしおいたすが、実際にはすべおをより耇雑にしおおり、䜕か問題が発生した堎合、ダりンタむムは最終的に長くなる可胜性がありたす。 ここで、「うヌん 予玄しないほうがいいだろう」ず考えおしたうこずがよくありたす。 単独で動䜜し、ダりンタむムが理解できる範囲で動䜜するほうがよいでしょう。

どうやっおこれず戊うこずができたすか 私たちは自分自身に嘘を぀くのをやめ、今ここで宇宙船を建造する぀もりだず自分に媚びるのをやめる必芁がありたすが、プロゞェクトがどれくらいの期間嘘を぀き埗るかを十分に理解する必芁がありたす。 そしお、この最倧時間内で、システムの信頌性を高めるために実際にどのような方法を䜿甚するかを遞択したす。

フェむルオヌバヌ: 完璧䞻矩ず怠惰が私たちをダメにしたす

「W からのストヌリヌ」の時間です...もちろん、人生からの話です。

䟋その XNUMX

N 垂にある Pipe Rolling Plant No. 1 の名刺 Web サむトを想像しおください。そこには倧きな文字で「PIPE ROLLING PLANT No. 1」ず曞かれおいたす。 そのすぐ䞋には、「私たちのパむプは、N で最も䞞いパむプです。」ずいうスロヌガンがありたす。 そしお以䞋は CEO の電話番号ず名前です。 ご予玄が必芁であるこずを承知しおおりたすが、これは非垞に重芁なこずです。 それが䜕で構成されおいるかを理解しおみたしょう。 HTML-statics - 総支配人が実際に济堎のテヌブルでパヌトナヌず䜕らかの次の取匕に぀いお話し合っおいる数枚の写真です。 私たちはダりンタむムに぀いお考え始めたす。 思い浮かぶのは、XNUMX分間はそこに暪たわる必芁がある、それ以䞊はだめだ、ずいうこずです。 そしお、疑問が生じたす。私たちのこのサむトから党䜓でどれくらいの売䞊があったのでしょうか? いくらいくら 「れロ」ずはどういう意味ですか それは぀たり、将軍は昚幎、XNUMX回の取匕すべおを同じテヌブルで、䞀緒に銭湯に行っおテヌブルに座る盞手ず同じ人たちず行ったからである。 そしお、たずえサむトが XNUMX 日攟眮されおいたずしおも、恐ろしいこずは䜕も起こらないこずを私たちは理解しおいたす。

玹介情報に基づいお、この話を䞊げる日がありたす。 冗長性スキヌムに぀いお考えおみたしょう。 そしお、この䟋では最も理想的な冗長性スキヌムを遞択したす。぀たり、冗長性を䜿甚したせん。 このすべおは、管理者なら誰でも、䌑憩を挟んで XNUMX 分以内に䞊げるこずができたす。 Web サヌバヌをむンストヌルし、ファむルを远加するだけです。 それが動䜜したす。 䜕も監芖する必芁はなく、特別な泚意を払う必芁もありたせん。 ぀たり、䟋 XNUMX の結論は非垞に明癜です。予玄する必芁のないサヌビスは予玄する必芁がありたせん。

フェむルオヌバヌ: 完璧䞻矩ず怠惰が私たちをダメにしたす

䟋その XNUMX

䌚瀟ブログ: 特別な蚓緎を受けた人がニュヌスを曞いたり、展瀺䌚に参加したり、たた新補品をリリヌスしたり、など。 これが WordPress を備えた暙準的な PHP であり、小さなデヌタベヌスず少しの静的芁玠があるずしたす。 もちろん、どんな状況でも暪になっおはいけないこずをもう䞀床思い出したす。「50分以内」それだけです。 しかし、さらに考えおみたしょう。 このブログは䜕をするものですか? 人々は、いく぀かのク゚リに基づいお、Yandex や Google から有機的にそこにやっお来たす。 玠晎らしい。 売䞊は関係ありたすか ゚ピファニヌそうではありたせん。 広告トラフィックは、別のマシン䞊にあるメむン サむトに送信されたす。 予玄スキヌムを考えおみたしょう。 良い意味で数時間で䞊げないずいけないので、その準備をしおおくず良いでしょう。 別のデヌタセンタヌからマシンを取埗し、そこに環境 (Web サヌバヌ、PHP、WordPress、MySQL) を展開し、そこに残しおおくのが合理的です。 すべおが壊れおいるず理解した時点で、XNUMX ぀のこずを行う必芁がありたす。mysql ダンプを XNUMX メヌトル展開したす。XNUMX 分以内にそこに飛びたす。もう XNUMX ぀は、バックアップから䞀定数の写真をそこに展開したす。 これも、い぀たで続くかは神のみぞ知るです。 したがっお、XNUMX分以内に党䜓が䞊昇したす。 レプリケヌションはありたせん。さもなければ、自動フェむルオヌバヌです。 結論: バックアップからすぐに展開できるものはバックアップする必芁はありたせん。

フェむルオヌバヌ: 完璧䞻矩ず怠惰が私たちをダメにしたす

䟋 XNUMX はさらに耇雑です

オンラむンストア。 オヌプンハヌトの PhP には少し調敎が加えられおいたすが、mysql にはしっかりしたベヌスがありたす。 かなり倚くの静的デヌタ (結局のずころ、オンラむン ストアには矎しい HD 画像などがありたす)、セッションには Redis、怜玢には Elasticsearch が䜿甚されたす。 私たちはダりンタむムに぀いお考え始めたす。 そしおここで、もちろん、オンラむンストアは䞀日䞭苊痛なく暪たわるこずができないこずは明らかです。 結局のずころ、嘘が長くなればなるほど、より倚くのお金を倱うこずになりたす。 スピヌドを䞊げる䟡倀はある。 いくら XNUMX時間暪になったら誰もおかしくないず思いたす。 確かに、私たちは䜕かを倱いたすが、䞀生懞呜働き始めれば、状況は悪化するだけです。 XNUMX 時間あたりに蚱容されるダりンタむムのスキヌムを定矩したす。

どうすればこれらすべおを予玄できるのでしょうか どのような堎合でも車が必芁です。100 時間の時間は非垞に短いです。 Mysql: ここではすでにレプリケヌション、ラむブ レプリケヌションが必芁です。500 時間では XNUMX GB はダンプに远加されない可胜性が高いためです。 静止画、写真: 繰り返したすが、XNUMX 時間以内に XNUMX GB を远加する時間がない堎合がありたす。 したがっお、写真をすぐにコピヌするこずをお勧めしたす。 Redis: ここが興味深いずころです。 Redis ではセッションが保存されたす。セッションを取り出しお埋めるだけでは枈みたせん。 これはあたり良いこずではありたせん。すべおのナヌザヌがログアりトされ、バスケットが空になるなどです。 ナヌザヌ名ずパスワヌドを再入力する必芁があり、倚くの人が途䞭で賌入をやめおしたう可胜性がありたす。 繰り返したすが、コンバヌゞョンは䜎䞋したす。 䞀方、Redis は盎接最新であるため、最埌にログむンしたナヌザヌもおそらく必芁ありたせん。 そしお、適切な劥協案は、Redis を䜿甚しお、昚日のバックアップから埩元するこずです。たたは、XNUMX 時間ごずに実行する堎合は XNUMX 時間前のバックアップから埩元したす。 幞いなこずに、バックアップからの埩元は XNUMX ぀のファむルのコピヌを意味したす。 そしお最も興味深い話は Elasticsearch です。 MySQL レプリケヌションを知った人はいるでしょうか? Elasticsearch レプリケヌションを知っおいる人は誰ですか? そしおその埌、誰にずっおは正垞に動䜜したしたか? 私が蚀いたいのは、私たちのシステムの䞭に特定の実䜓が芋えるずいうこずです。 䟿利そうに芋えたすが、耇雑です。
私たちの同僚の゚ンゞニアはそれを扱った経隓がないずいう意味で耇雑です。 たたはネガティブな経隓がありたす。 あるいは、これはただニュアンスや生々しさを䌎うかなり新しいテクノロゞヌであるこずも理解しおいたす。 私たちは考えたす...くそヌ、゚ラスティックも健党です、バックアップから埩元するのにも長い時間がかかりたす、どうすればよいでしょうか? この堎合、elastic は怜玢に䜿甚されるこずを理解しおいたす。 私たちのオンラむンストアはどのように販売されおいたすか? 私たちはマヌケタヌのずころに行き、人々がどこから来たのかを尋ねたす。 圌らはこう答えたす。「Yandex Market からの 90% が補品カヌドに盎接送られおきたす。」 そしお、圌らはそれを買うか買わないかのどちらかです。 したがっお、10% のナヌザヌが怜玢を必芁ずしおいたす。 そしお、特に異なるゟヌンの異なるデヌタセンタヌ間での柔軟なレプリケヌションの維持には、実際には倚くの埮劙な違いがありたす。 どの出口ですか 予玄サむトから゚ラスティックを取埗し、それに察しお䜕も行いたせん。 問題が長匕けば、い぀か匕き䞊げるだろうが、それは確実ではない。 実際、結論はプラスマむナスを問わず同じです。繰り返しになりたすが、お金に圱響を䞎えないサヌビスは予玄したせん。 図をより単玔にするため。

フェむルオヌバヌ: 完璧䞻矩ず怠惰が私たちをダメにしたす

䟋 XNUMX はさらに困難です

むンテグレヌタヌ: 花を売ったり、タクシヌを呌んだり、商品を売ったり、䞀般的には䜕でもしたす。 倚くのナヌザヌにずっお幎䞭無䌑で機胜する深刻な機胜です。 本栌的な興味深いスタックでは、興味深いベヌス、゜リュヌション、高負荷があり、そしお最も重芁なこずに、24分以䞊暪になるず痛いです。 人々が買わないだけでなく、これがうたくいかないずわかるず腹を立お、たったく戻っおこなくなる可胜性がありたす。

わかりたした。 五分。 これに぀いおはどうするのでしょうか この堎合、倧人ず同じように、私たちもすべおの資金を䜿っお実際のバックアップ サむトを構築し、すべおを耇補し、おそらくこのサむトぞの切り替えを可胜な限り自動化するこずさえありたす。 これに加えお、忘れずに重芁なこずを 53 ぀行う必芁がありたす。それは、実際にスむッチング芏則を䜜成するこずです。 すべおを自動化しおいる堎合でも、芏制は非垞にシンプルになる堎合がありたす。 䞀連の「これこれの Ansible スクリプトを実行する」、「ルヌト XNUMX でこれこれのチェックボックスをクリックする」などですが、これはある皮のアクションの正確なリストである必芁がありたす。

そしお、すべおが明確に芋えたす。 レプリケヌションの切り替えは簡単な䜜業であり、そうでない堎合は自動的に切り替えられたす。 DNS のドメむン名の曞き換えも同じシリヌズです。 問題は、そのようなプロゞェクトが倱敗するずパニックが始たり、最も屈匷なひげを生やした管理者でもパニックに陥りやすいこずです。 「タヌミナルを開いお、こちらに来おください。サヌバヌのアドレスはこのたたです」ずいう明確な指瀺がなければ、蘇生に割り圓おられた 5 分の制限時間を守るこずは困難です。 さらに、これらの芏制を䜿甚するず、たずえばむンフラストラクチャの倉曎を蚘録し、それに応じお芏制を倉曎するこずも簡単になりたす。
予玄システムが非垞に耇雑で、ある時点で間違いを犯した堎合、バックアップ サむトを砎壊し、さらに䞡方のサむトのデヌタをカボチャに倉える可胜性がありたす。これはたったく悲しいこずです。

フェむルオヌバヌ: 完璧䞻矩ず怠惰が私たちをダメにしたす

䟋そのXNUMX、完党なハヌドコア

䞖界䞭で䜕億人ものナヌザヌがいる囜際的なサヌビスです。 どの時間垯も最高速床で高負荷で、たったく暪になるこずはできたせん。 ちょっず埅っおください - そしおそれは悲しいでしょう。 䜕をするか もう䞀床、完党なプログラムに埓っお予玄しおください。 前の䟋で説明したこずはすべお実行したしたが、さらにもう少し実行したした。 理想的な䞖界、そしお私たちのむンフラストラクチャヌは IaaC Devops のすべおの抂念に埓っおいたす。 ぀たり、すべおが git にあり、ボタンを抌すだけです。

䜕が欠けおいる 53 - 挔習。 圌らなしでは䞍可胜です。 私たちにずっおすべおが完璧であるように思えたす。私たちは通垞、すべおを制埡䞋に眮いおいたす。 私たちがボタンを抌すず、すべおが起こりたす。 たずえそうであったずしおも、そしお私たちはそのようには起こらないこずを理解しおいたすが、私たちのシステムは他のいく぀かのシステムず察話したす。 たずえば、これはルヌト 3 からの DNS、SXNUMX ストレヌゞ、いく぀かの API ずの統合です。 この掚枬的な実隓ではすべおを予枬するこずはできたせん。 そしお、実際にスむッチを抌すたで、それが機胜するかどうかはわかりたせん。

フェむルオヌバヌ: 完璧䞻矩ず怠惰が私たちをダメにしたす

おそらくそれだけです。 怠けたり、やりすぎたりしないでください。 そしおアップタむムがあなたずずもにありたすように!

出所 habr.com

コメントを远加したす