「スケールアウト」ではなく「スケールアップ」する必要があるシステムのタイプは何ですか?


12

多くの小さなサーバーに分割して「スケールアウト」するのではなく、「より強力で高価なサーバーに」「スケールアップ」しなければならないシステムがあるのではないかと長い間思っていました。

そのようなシステムは存在しますか?存在する場合、特にシステムをスケールアウトするのではなくスケールアップする必要がある傾向がありますか?(たとえば、ACID苦情データベーストランザクション、またはその他の強力なデータ整合性要件がこのニーズを作成する可能性があります。)

スケールアップはスケールアウトよりもはるかに高いハードウェアコストをもたらすように見えるため、可能であれば回避したいように見えますが、常に回避可能かどうかはわかりません。

それでは、スケールアウトできないシステムがあり、代わりにスケールアップする必要がありますか?これを引き起こす原因は何ですか?また、そのようなシステムをどのように識別しますか?(それらは一般に、それらをより簡単に識別できるようにするいくつかの特徴を共有していますか?)



7
ソフトウェアがスケールアウトするように設計されていない場合、多くの場合、スケールアップははるかに簡単です。ソフトウェアの再設計は高価であるか、ソースを所有していない場合や開発者に影響を与える場合は不可能です。
ゾレダチェ14年

そのようなシステムを書くことは非常に難しい問題です。特に、複数のマスターが同じレコードに同時に書き込む場所を行き来できるマスター/マスター設計。書き込みの勝者は誰ですか?
マット14

3
CAP定理に興味があるかもしれません。基本的に、定理で定義されている一貫性と可用性の両方を必要とするサービスは、パーティション化を許容しません。ほとんどの実世界の要件は、結果整合性のために整合性を犠牲にする(事後の不整合を手動または自動で処理する)か、参加者の一部が利用できない場合に要求の処理を拒否することで可用性を犠牲にします。したがって、絶対的な一貫性と絶対的な可用性の両方を必要とするシステムは、本質的にスケールアップを余儀なくされます。
ライライアン14

1
「信頼性の高いLAN」で「障害が発生しない」ことを意味する場合、現実の世界に合わせて設計しているわけではありません。
mfinni 14

回答:


18

私は主に、水平スケーリングの可能性ゼロのアプリケーションを使用しています。Linux上で実行されますが、アプリケーション、データ構造、およびI / O要件により、ユーザーのワークロードの増加に対応するために、徐々に大規模なシステムに「スケールアップ」する必要があります。

多くのレガシーの基幹業務アプリケーションおよびトランザクションアプリケーションには、これらのタイプの制約があります。業界がクラウドソリューションに焦点を当てており、DevOps主導のWebスケールアーキテクチャがコンピューティングの世界のかなりの割合を無視していることを強調する理由の1つです。

残念ながら、私が説明するスケールアップシステムは本当に魅力的ではないため、業界はその価値を無視するか、大規模で重要なシステム(たとえば、牛対ペット)に対処するために必要なスキルを重視しない傾向があります。


1
「最も簡単なことは、問題にハードウェアを投げることです。」ムーアの法則、動作を停止しないでください!
cjc 14年

2
@Demetri-Microsoft SQL Serverは、「スケールアウト」ではなく典型的な「スケールアップ」であると考えることができる最も「注目度の高い」製品です。マージレプリケーションの非常に具体的な一連の基準を満たさない限り、スケールアウトすることはほぼ不可能です。
マークヘンダーソン

3
または、ソリューションを複数の問題に分解できる場合。たとえば、トランザクションデータベースに対してレポートを実行しないでください。他のハードウェアで実行されるレプリカをヒットします。\
mfinni 14

1
-1。あなたはこの問題の核心にぶつかったと思います。システムをスケールアウトシステムに書き換えることができれば、問題がスケールアウトされることはありません。問題領域がゼロから設計された場合でもスケールアウトがまったく不可能であるようなシステムに関するこの質問。
ライライアン14

1
@LieRyan内包表記。サポートしているアプリケーションは、アーキテクチャ上の制約のために再設計しても、スケールアウトすることはできません(データベースのようなシステムです)。
ewwhite 14

8

開発者の観点から言えば、そこにあるほぼすべての従来の主流のデータベースエンジンは、スケールアップすることしかできず、スケールアウトは非常に後の考えです。

近年、スケーラビリティと可用性の高いシステムの必要性に伴い、既存のデータベースをスケールアウトする努力が行われています。しかし、設計はレガシーコードによって妨げられているため、設計の基本ではなく、単にボルトで固定されています。よく知られているほとんどのデータベースエンジンを拡張しようとすると、この問題が発生します。スレーブサーバーの追加は設定が非常に困難な場合がありますが、それには重大な制限があり、その中にはデータベーステーブルの再ジギングが必要なものもあります。

たとえば、それらのほとんどは、マルチマスター設計ではなく、マスター/(マルチ)スレーブです。つまり、サーバー全体がそこに座っているだけで、クエリを処理できない場合があります。いくつかありますが、制限があります。たとえば、読み取り専用のマルチスレーブ設計です。したがって、1つのサーバーが書き込みを行い、他のすべてが読み取り専用データを提供する場合があります。これらのシステムをセットアップすると、必ずしも簡単なプロセスではなく、うまく機能するのが難しいことに気付くでしょう。多くの場合、それは非常に追加されているように感じます。

一方、最初から並行性とマルチマスター設計で開発されている新しいデータベースエンジンがいくつかあります。 NOSQLおよびNewSQLは新しい設計クラスです。

したがって、従来のSQLサーバーからパフォーマンスを向上させる最善の方法は、スケールアップすることです。NOSQLとNewSQLでは、スケールアップとスケールアウトの両方が可能です。

従来のRDBMSシステムが密結合されている理由は、すべて同じデータの一貫したビューが必要だからです。異なるクライアントから同じデータへの更新を受け入れる複数のサーバーがある場合、どれを信頼しますか?何らかのロックメカニズムを介してデータの一貫性を確保しようとする方法では、クライアントから読み取ったデータが古くなる可能性があるため、パフォーマンスを低下させたりデータ品質に影響を与える他のサーバーとの連携が必要です。また、サーバーは、同じレコードに書き込むときに、どのデータが最新であるかをサーバー間で決定する必要があります。ご覧のとおり、データへのアクセスが依然として非常に高速なプロセスやスレッド間だけでなく、ワークロードがサーバー全体に分散しているという事実によって、複雑な問題がより複雑になっています。


Oracle RACは10g以降スケールアウトを提供していませんでしたか?
Dani_l 14

あります。ただし、RACを使用することとRACを問題なく動作させることは2つの異なることです。これを実行するには、本当に特別な注意が必要です。しかし、それは素晴らしいデザインです。あなたがそれを必要とするならば、あなたはたぶん代価を払うことをいとわないでしょう。
トムトム14

また、Oracle RACに必要な共有ストレージシステムに注意してください。実装方法によっては、スケーリングの問題が発生する可能性があります。
マット14

7

私の意見では、スケールアップ/アウトの境界は、ワークフローの並列性と、並列スレッドが互いにどの程度緊密に調整する必要があるかによって決まります。

シングルスレッド
何らかの理由で、このワークフローはシングルスレッドでのみ機能します。

1つのスレッドは、1つのシステムがスケールアップして高速化することを意味します。

密結合並列処理
これは、スレッドを相互に密結合する必要があるマルチスレッドシステムです。おそらく、プロセス間通信は非常に高速である必要があるか、またはすべてを単一のメモリマネージャで管理する必要があります。ほとんどのRDBMSシステムは、この種の並列コンピューティングです。

ほとんどの場合、これらのシステムは、例外はありますが、スケールアウトよりもスケールアップが優れいます。たとえば、単一システムイメージスタイルのクラスターで動作するワークフロー、単一のメモリ領域であるがスレッド間の遅延が大きいと、スケールアウトが容易になります。しかし、そのようなSSIシステムは非常に扱いにくいため、ほとんどのエンジニアはより大きな箱を作るだけです。

疎結合並列性
これは、スレッド間の遅延が大きくても問題のないマルチスレッド/プロセスシステムです。または、お互いに話す必要はありません。スケールアウトされたWebサービングファームとレンダーファームは、この種のシステムの典型的な例です。このようなシステムは、密結合並列処理よりも簡単に大きくすることができるため、このスタイルのシステムには多くの興奮があります。

これは、スケールアウトがはるかに簡単なスタイルです。


RDBMSが密結合されている理由は、RDBMSがデータに密結合されているためです。つまり、同じリソースにアクセスする複数のサーバー。
マット14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.