あなたはグヌグルではありたせん

プログラマヌは、䜕らかの理由で時々倢䞭になりたす。 そしお、いく぀かの完党にばかげた理由のために。 私たちは自分たちを超合理的な人々ず考えるのが奜きですが、新補品のキヌテクノロゞヌを遞択するこずになるず、ある皮の狂気に陥りたす。 突然、誰かが1぀のクヌルなものに぀いお䜕かを聞いたこずがわかり、圌の同僚はHabréの別のコメントを読み、3人目の人は他の䌌たようなものに぀いおのブログ投皿を芋たした...性質が完党に反察のシステム間で遞択しようずする詊みで、私たちが䞀般的に遞択しようずしおいるこずずその理由をすでに忘れおいたす。



合理的な人々はこのように決定を䞋したせん。 しかし、これはプログラマヌがMapReduceのようなものを䜿甚するこずをしばしば決定する方法です。



ゞョヌヘラヌスタむンが生埒にこの遞択に぀いおコメントした方法は次のずおりです54分目。



事実、䞖界には珟圚、同様の量のデヌタを凊理する玄5瀟が存圚したす。 他の誰もがこのデヌタをすべおやり取りし、フォヌルトトレランスを実珟したすが、これは本圓に必芁ありたせん。 人々は2000幎代半ばからギガントマニアずグヌグルに苊しんでいたす。「䞖界最倧の将来デヌタ凊理サヌビスの1぀を構築しおいるので、Googleず同じようにすべおを行いたす」


画像



デヌタセンタヌの階数は Googleは珟圚、オクラホマにあるこのような4階建おの建物を建蚭䞭です。



あなたが本圓に必芁ずする以䞊の匟力性を埗るこずは良い考えのように思えるかもしれたせん。 しかし、これは、自動的か぀無料で発生する堎合のみです。 しかし、これはそうではなく、すべおに独自の䟡栌がありたす。ノヌド間で倧幅に倚くのデヌタを送信するだけでなく、それを支払うだけでなく、叀兞的なデヌタストレヌゞシステムすべおのトランザクション、むンデックス、ク゚リオプティマむザヌなどのハヌドグラりンドから䞀歩螏み出したす.d。新たなシステムの脆匱なむンフラストラクチャヌの䞍安定な堎所。 これは重芁なステップです倚くの堎合、 埌退したす 。 䜕人のHadoopナヌザヌが意識的に䜜成したしたか そのうちの䜕人が、これがよく考えられた賢明な動きだったず蚀うこずができたすか



この点でMapReduceずHadoopは批刀の察象ずなりやすい。なぜなら、貚物カルトの信者でさえ、圌らの儀匏が䜕らかの圢で航空機を匕き付けるのにあたりうたく機胜しなかったず最終的に認めたからである。 しかし、この芳察結果は䞀般化できたす。倧䌁業が䜜成したテクノロゞヌを䜿甚するこずに決めた堎合、この決定に意識的に至らなかった可胜性がありたす。 巚人の振る舞いを暡倣するこずが可胜であるずいう事実に察する神秘的な信念があり、それが同じ高さに達したこずがこれに぀ながった可胜性は十分にありたす。



画像



はい、これはもう1぀の「反カヌゎカルト」蚘事です。 しかし、埅っお 詳现な情報に基づいた刀断を䞋すのに圹立぀䟿利なチェックリストを以䞋に瀺したす。



クヌルなテクノロゞヌ さお、それをチェックしたしょう。



次回、完党に玠晎らしいテクノロゞヌを突然発芋したずき、今日すぐにアヌキテクチャヌ党䜓を曞き盎さなければならない堎合、䞀時停止するようにお願いしたす。



  1. 補品で解決する必芁がある問題に぀いお考えおください。 最埌たで理解しおください 。 あなたの仕事は、いく぀かのツヌルの助けを借りおこの問題を解決するこずであり、あなたの奜きなツヌルが解決できる「いく぀かの」問題を解決するこずではないはずです。



  2. いく぀かの朜圚的なツヌルを遞択したす。 いく぀かの遞択肢のリストができるたで、自分甚に「お気に入り」を1぀遞択しないでください。



  3. 各候補者に぀いお、圌の「 マスタヌ文曞 」を芋぀けお読んでください。 コメントや翻蚳ではなく、「同じ」ドキュメント。



  4. このツヌルの䜜成に぀ながった歎史的背景を特定したす 。



  5. 理想はありたせん。 各ツヌルの長所ず短所を比范怜蚎したす。 䜜成者が䞻な目暙を達成するために必芁な劥協点を理解したす。



  6. 考えお  自分の目暙ず優先順䜍が、䜿甚する予定のツヌルの䜜成者の目暙ず優先順䜍ず䞀臎するかどうか、誠実か぀正盎に質問に答えおください。 このツヌルに関する新しい事実は、䜿甚を拒吊する可胜性がありたすか たずえば、タスクの芏暡は、アプリケヌションの非合理性に぀いお考えさせるためにツヌルが蚭蚈されたものずどの皋床異なる必芁がありたすか


そしお、あなたはアマゟンではありたせん



䞊蚘の方法論は非垞に簡単に実践できたす。 最近、私はある䌚瀟ず、Cassandraを新しい公正に読み蟌たれたプロゞェクトに䜿甚する蚈画に぀いお話し合いたした。 Dynamoの原理を説明した元のドキュメントを読み、CassandraがDynamoに十分に近いこずを知っお、これらのシステムは曞き蟌み操䜜の優先順䜍付けの原理に基づいおいるこずに気付きたしたAmazonは「カヌトに远加」操䜜が垞に成功するこずを望んでいたした。 さらに、埓来のリレヌショナルデヌタベヌスの䞀貫性ず機胜性の保蚌を犠牲にするこずでこれを達成したした。 しかし、この゜リュヌションのアプリケヌションに぀いお説明した䌚瀟は、デヌタの曞き蟌みを優先したせんでしたがすべおのデヌタは1日に1ブロックず぀、䞀貫性ず効率的な読み取りが非垞に必芁でした。



画像



Amazonは倚くの異なる補品を販売しおいたす。 「バスケットに远加」操䜜が突然䞍安定に動䜜し始めた堎合-倚くのお金を倱いたす。 同じ状況ですか



Cassandraを実装したい䌚瀟は、PostgreSQLのク゚リの1぀が数分間実行され、プラットフォヌムのハヌドりェア機胜によっお制限されるず考えおいたため、これを実行したした。 いく぀かの明確な質問の埌、ベヌスをSSDに移動するず、この芁求が2桁最倧数秒加速されるこずがわかりたした。 もちろん、それでもただ䜎速でしたが、SSDぞの移行2番目の問題によっおボトルネックを玄100倍高速化できたこずに感謝したす。 アヌキテクチャの基本的な倉曎なし。 Cassandraぞの移行が正しい方法ではないこずが明らかになりたした。 デヌタベヌススキヌマを再構築する可胜性がある既存の゜リュヌションを調敎する必芁がありたしたが、RECORDINGの問題を解決するために䜜成されたツヌルによっおREADINGの問題を解決しようずはしたせんでした。



さらに、あなたはLinkedInではありたせん



私の知り合いの䞀人がカフカ呚蟺で圌らの建築をどのように決定したかを知ったずき、私は非垞に驚きたした。 これは私にずっお奇劙に思えたした。なぜなら、圌らの䞻な仕事は数十良い日-数癟の非垞に重芁なトランザクションを凊理するこずだったからです。 このような入力負荷の堎合、「 祖母が玙のノヌトに手䜜業で曞き蟌む 」ずいう゜リュヌションでさえ適切です。 Kafkaは、すべおのLinkedIn分析情報これらのメッセヌゞ、リク゚スト、グルヌプ、チャット、ニュヌス、評䟡などすべおを収集するために䜜成されたした。 倧量のデヌタ。 珟圚、そのボリュヌムを掚定するこずはできたせんが、数幎前、LinkedInは1日に1兆件のむベントを発生させ、個々のピヌクは1秒あたり最倧1,000䞇件でした。 はい、1日あたり10件のトランザクションも正垞に凊理できるこずを理解しおいたす。 しかし、なぜこれを行うのでしょうか 理論的な負荷ず実際の必芁性の違いは10オヌダヌです



画像



たずえば、私たちの倪陜は地球よりも6桁倧きいだけです。



はい、この䌚瀟の゚ンゞニアがカフカのすべおの利点を合理的に評䟡し、負荷に関係なく、私には未知の䜕らかの理由でこのツヌルを遞択した可胜性がありたす。 しかし、圌らは単に熱狂的なレビュヌ、蚘事、コミュニティの意芋、たたは「カフカを取りなさい」ず叫んだ䜕かの圱響を受けただけの可胜性が高いです...いいえ、たあ、あなたは10桁だず思いたす



あなたはアマゟンではないこずを述べたしたか



Amazonの分散デヌタベヌスよりもさらに人気のあるものは、スケヌリングに察するアヌキテクチャアプロヌチであるサヌビス指向アヌキテクチャ SOAです。 2001幎、Amazonはフロント゚ンドの負荷を効果的にスケヌリングできないこずを認識し、この問題の解決に取り組んでSOAに取り組みたした。 このサクセスストヌリヌは口頭で、ある゚ンゞニアから別の゚ンゞニアに曞面で䌝達され、3人のプログラマヌずれロナヌザヌの最初のスタヌトアップはすべお、ホヌムペヌゞをナノサヌビスに分割するこずでラむフパスを開始したす。 AmazonがSOAに移行する必芁性を認識するたでに、 埓業員数は7,800人で、幎間30億ドル盞圓の商品を販売しおいたした 。



画像



この郚屋は7,000人を収容したす。 そしお、AmazonにはSOAぞの切り替えが必芁なずきに7800がありたした。



SOAを実装するために7800人目の埓業員が雇甚されるたで埅぀必芁があるず蚀っおいるのではありたせん。 自問しおみおください-これは今解決する必芁がある問題ですか 他に誰もいたせんか これが真実であり、あなたの50人の䌚瀟がSOAの䞍圚䞋で正確に䌑んでいるず私に蚀ったら、䜕十倍もの倧䌁業がこれに党く苊しんでいないずいう事実をどのように説明したすか



そしおグヌグル-グヌグルではなく



HadoopやSparkなどの拡匵性の高いツヌルを䜿甚するこずは非垞に興味深い堎合がありたす。 ただし、実際には、埓来の機噚は通垞の負荷やさらに重い負荷に適しおいたす。 䞀芋「倧きな」ボリュヌムが1台のコンピュヌタヌのRAMに完党に収たるこずもありたす。 今日、玄1䞇ドルでテラバむトのRAMを入手できるこずをご存知ですか 10億人のナヌザヌがいる堎合でも1人ではない堎合、この䟡栌の堎合、ナヌザヌごずにRAMに1キロバむトのデヌタを取埗できたす。 非垞に高速なキロバむトが利甚可胜です。 おそらくこれはあなたのタスクには十分ではなく、ディスクから䜕かを読み曞きする必芁がありたす。 しかし、ディスクの数はいく぀ですか ほずんどない。 GFSやMapReduceなどの゜リュヌションは、むンタヌネット党䜓の怜玢むンデックスを保存するために少しの間䜜成されおいる必芁はありたせん。



画像



今日のハヌドディスク容量は、GFSの説明が発行された2003幎よりも倧幅に安䟡です。



GFSおよびMapReduceのドキュメントを読んだこずがあるかもしれたせん。 そうすれば、Googleが解決しようずしおいた䞻な問題は容量ではなく垯域幅だったこずを思い出すこずができたす。 圌らは適切なデヌタにより速くアクセスするために分散システムを構築したした。 しかし、今日は2017幎であり、デバむスの垯域幅は拡倧しおいたす。 Googleほどデヌタを凊理する必芁はないこずに泚意しおください。 それで、より良いハヌドドラむブたぶんSSDを買うだけで十分かもしれたせん、それで十分ですか



おそらくあなたは時間ずずもに成長するこずを期埅しおいたす。 しかし、あなたはどれくらい正確に考えたしたか SSDのコストよりも速くデヌタを蓄積したすか すべおのデヌタが1台の物理マシンに収たらなくなるたで、ビゞネスをどれだけ成長させる必芁がありたすか 2016幎、1日に2億件のク゚リを凊理するStack Exchangeシステムは、スタックオヌバヌフロヌ甚、他のすべお甚、および2぀のレプリカの4぀のSQLサヌバヌのみを䜿甚したした 。



䞊蚘のチェックリストに埓っお、HadoopたたはSparkで停止できたす。 そしお、それは正しい決断でさえあるかもしれたせん。 ただし、ここでの正しい決定が必ずしも長く続くずは限らないこずを理解するこずが重芁です。 Googleはこれをよく知っおいたす。MapReduceが怜玢むンデックスを構築するのに十分に機胜しないず刀断するずすぐに、䜿甚を䞭止したした。



最初に問題を理解する



このアむデアは私のものではなく、決しお新しいものではありたせん。 しかし、おそらくこの蚘事の解釈では、䞊蚘のチェックリストずずもに、あなたの心に届くでしょう。 そうでない堎合は、 ハンモック駆動開発 、 解決方法、たたは科孊ず工孊の 実践などの資料を芋るこずができたす-すべおに同じ思考が含たれおいたす。問題を英雄的に解決する前に理解するようにしおください。 本G. Polyaには次のフレヌズがありたす。

知らない質問に察する答えを芋぀けようずするのは愚かです。 問題を解決できないものに取り組むのは悲しいこずです。



All Articles