Stack Overflowは10台以上のサーバーを使用してStack Overflowサイトにサービスを提供していることを読みました。サーバーが異なれば、リバースプロキシ、データベースサーバー、HTTPサーバーなどの機能も異なります。
これらの仕様を持つ強力なスタンドアロンの単一サーバーを見てきました。
768GB RAM、20TBTB + HDD、4 + x Xeonなど、より高い仕様の単一サーバーを使用してみませんか?多くのサーバーを使用する利点、または単一の高仕様サーバーを使用することの欠点は何ですか?
これまでのところ、単一の強力なサーバーのみをアップグレードできます。最も強力なサーバーを使用できるようにすると、サイトをサーバー間で分割したり、より効率的にしたりせずにサイトを拡大することはできません。
コスト要因もあります。非常に強力な単一サーバーは、半分の強力な2台のサーバーの10倍のコストがかかる場合があります。最も安価な価格でハードウェアを購入し、それが機能する唯一の物であるため、より高い価格に固定されることを望んでいません。
稼働時間と信頼性も関係します。 2台以上のサーバーを使用すると、1台が故障したり、メンテナンスのためにオフラインになったり、サイトが稼働し続けることがあります。単一のサーバーでそれを行うことはできません。
ほとんどの大規模なWebサイトでは、ロードバランサーと複数のサーバーを使用しています。私はトリップアドバイザーで働いていました。彼らは トリップアドバイザーアーキテクチャに関する素晴らしい記事 と、複数のサーバーで非常にスケーラブルにする方法を公開しました。
単一のサーバーで高度なサービスを実行することはpossibleです。私が知っている1つの例は、Mailinatorです。著者は Mailinatorのアーキテクチャに関する記事 を公開しました。彼は、新しいサーバーを購入するのではなく、コードをより効率的にすることに重点を置いています。これは結局、彼のサービスがどのように機能するかを決定する制限になります。単一のマシンがメールを削除するまで数時間しかメールを保持せず、さらに多くのスペースを確保します。
単一サーバーのアップグレードは、垂直スケーリングと呼ばれます。サーバーを追加することは、水平スケーリングと呼ばれます。このトピックの詳細については、2つを比較するいくつかの記事があります。
グレース・ホッパー少将から:
大きなコンピューターの構築について:「パイオニア時代、彼らは牛を強く引っ張るために使用し、1匹の雄牛が丸太を動かせなかったとき、彼らは大きな雄牛を成長させようとしませんでした。しかし、より多くのコンピューターのシステムのために。」
Stephenは、システムアーキテクチャを決定する際に考慮すべき主要な考慮事項である、垂直スケーリングと水平スケーリングのトレードオフについて説明します。他のいくつかの考慮事項を追加します。
実際には、別のレベルに垂直スケーリングを行うサーバークラス全体があります。メインフレームです。これらにはさまざまな利点(速度、信頼性)と欠点(コスト)がありますが、通常は、大量のデータを入出力処理で処理する必要がある場合に使用されます トランザクション処理 (クレジットカードの購入、銀行、選挙、国勢調査のデータを考えてください)。たとえば、銀行は、バックエンドがメインフレームを介してトランザクションを処理する一方で、垂直にスケーリングされたWebサーバーからサイトにサービスを提供します。
興味深いことに、PaypalやVisaなどの企業は、メインフレームから数千の水平スケールシステムのクラスター化システムに移行しています。急速に進化するデジタルの世界では、メインフレームでさえ水平スケーリングの上限に達しています。
「可用性とパフォーマンスのすべての要件があるため、メインフレームで支払いの処理を続けることができませんでした。
出典:Adam Banks、 ComputerWorldUK (
サイズ制限。複数のプロセッサ、メモリチップ、およびディスクを備えた単一のボックスが均一であると想定します。これは完全に真実ではありませんが、数値が大きくなりすぎないのであれば十分です。熱、エネルギー、近接性などには技術的な制限があります。つまり、1台のサーバーの大きさには常に実用的な制限があります。
スケーラビリティ-IPCに共有メモリを使用する単一サーバーシステムと、ネットワーキングまたはクラスタリングを使用するマルチサーバーシステムには大きな違いがあります。ただし、2台のサーバーと200台の違いはかなり小さくなります。スケーリングするシステムを構築した場合、問題が発生する前にそれを大幅にスケーリングできます。もしあれば、巨大な単一サーバーは必要ありません。そもそも。
復元力-1つのサーバーは、1人の管理者が「おっと」する場所です。または、その錫全体へのサービスが中断されることを意味する物理的な問題があります。 (データセンターの水漏れ、誰かがラックに衝突して倒す、そのようなこと)。複数のサーバーをデータセンター内に分散することも、地理的に分散させることもできます。また、既にアプリを配布している場合、「中」サイズのマシンでのスケーリングは、少数の大型マシンでの同じ量のCPU /メモリ/ IOよりもほとんど常に安価です。
更新-サーバーにパッチを適用すると、サービスが不安定になったり、再起動が必要になったり、ダウンタイムが必要になります。同じことを実行している4つのサーバーがある場合、これを行うためにしばらくの間、1つを停止することができます。また、パッチ適用/更新サイクルがうまくいかない場合は、サービスを停止します。
小規模で問題を取り上げましょう。メール、ActiveDirectory、ファイル共有、および会社のWebサイトを実行する1つのサーバーを備えた小さなオフィス。
IISが台無しになっているため、ハッカーがヒットし、再起動する必要があります。または、Exchangeには更新と再起動が必要です。または、Active Directoryが破損しました。
これらの孤立した「1つのサービスがダウンしている」問題はサーバー全体に影響を与えるため、そのサーバーで共有しているものはすべて、リブートなどの理由でそれらに影響を与えます。
実際のIT担当者がそのサーバーを見つけて見たら、それらを別々のサーバーに分割することをお勧めします(そしてバックアップドメインコントローラーサーバーを持つこと)。
「すべての卵を1つのバスケットに入れないでください」という古い格言です。
その哲学はウェブサーバーに適用されています。 Webサーバーが1つしかなく、Webアプリ(新しいMyFaceLink.com)を公開し、それが非常に人気を博した場合、新しいトラブルが発生します。ユーザーがサイトにいる間、サイトをメンテナンスのためにダウンさせることはできません。クラッシュしたり、ユーザーが多すぎたりすると、うんざりします。世界最大の単一サーバーでさえ、10億のFB変換者がやってくることに圧倒されます。
したがって、同じ「バスケット内の卵」の理由で、負荷分散が作用します。サイトを3台のサーバーに分散し、1台がダウンした場合、残りの2台が容量を処理します。パッチを適用する必要がある場合は、一度に1つずつ行うだけで、誰も気づきません。
一番簡単なのは、メガサーバーの価格や、本当に負荷を処理できるかどうかではありません(可能ですが)。単一障害点についてです。ビジネスが十分に忙しくなり、8〜5人で作業する5人のユーザーではなく24時間365日稼働すると、ダウンタイムは許容されません。スケジュールされた停止は、スケジュールするのが困難です。したがって、負荷を分散します。
1台のマシンに2台の作業を行わせようとすると、マシンの一部はより大きくする必要がありますが同じ速度で動作し、一部は同じサイズのままで、より高速に実行する必要があり、一部はより大きくする必要がありますおよび高速。小さいマシンの役割を大きいものに結合すること、または大きいマシンの役割を小さいものに分割することが理にかなっている範囲は、マシンの最も高価な部分に適用されるスケーリングの種類に大きく依存します。あまりにも多くのマシンのワークロードが1つの巨大な巨像に結合される場合、コストは、ワークロードの増加に対応するために、より大きくand速くする必要があるものに支配されます。そのようなもののコストが速度とサイズに関して線形であったとしても、作業負荷を2倍にすると、処理するマシンのコストが2倍以上になります。速度が特定のポイントを超えて増加するという事実により、(はるかに)線形よりも大きいコスト増加が効果を拡大します。
実際には、実用性が労働の細分化を余儀なくする不動点はありません。実行する作業の種類に応じて、2つのワークロードを組み合わせたマシンは、2倍未満のメモリで処理できるか、2倍未満の速度で実行されます。一方、マシンに与えられるタスクが多いほど、メモリと速度の要件がワークロードに比例してスケーリングを開始する範囲が大きくなります。さらにそれを超えると、ワークロードが2倍になるたびに相対コストが大きく増加します。