世界中で生成される膨大かつ増え続けるデータに直面し、ソフトウェアアーキテクトはソリューションのスケーラビリティに特別な注意を払う必要があります。 必要に応じ、何千人もの同時ユーザーを処理できるシステムを設計しなければならなりません。 簡単なことではありませんが、大規模なスケーラビリティを設計することは今日ほとんどの組織にとって絶対に必要です。 リアルタイム分析、機械学習、大規模言語モデル、検索拡張世代(RAG)、ネットワーク化されたアプリケーションの、いずれをサポートする場合でも、データシステムは増大するボリューム、速度、複雑さに対応しなければなりません。
ソフトウェア・アーキテクトは、複数の方法でスケーラブルなシステムを設計することができます。 何十ものコアを持つより大きなマシンを使うことで、垂直方向に拡張することが可能です。 データ分散(レプリケーション)技術を使って、ユーザー数の増加に合わせて水平方向に拡張することができまます。 またデータをパーティショニングすることで、データ量を水平方向に拡張することができます。 実際には、ソフトウェア・アーキテクトは、こうしたテクニックのいくつかを同時に採用し、特定のニーズに合わせて、ハードウェアのコスト、コードの複雑さ、実装しやすさを相殺します。
このガイドではパフォーマンス、コスト、アーキテクチャを考慮しながら、ユーザーとデータの両方のボリュームの垂直方向と水平方向のスケーリングの仕組みに焦点を当てています。 データおよび/またはユーザー・ボリュームの分散とパーティショニングのための、オプションについて概説し、各オプションが特に有用であるシナリオを示します。 このガイドでは、クリエイティブ・データテクノロジーのグローバルリーダーであるインターシステムズのInterSystems IRIS®が、スケーリングによって分散システムの構成、プロビジョニング、運用をどのように簡素化できるかを説明しています。
垂直スケーリング
規模を拡大する最も単純な方法は「垂直方向」に規模を拡大することです。より多くのCPUコアとメモリを備えたより大きなマシンに実装する「規模の拡大」です。 最新のデータプラットフォームのほとんどは、重要なアプリケーション(SQLなど)の並列処理をサポートし、マルチコアマシンのCPU使用を最適化する技術を備えています。 垂直スケーリングは、コンピューティング・アーキテクチャを変更することなく、既存のインフラを拡張します。
しかし垂直スケーリングだけで達成できることには、現実的に限界があります。 ひとつは、利用可能な最大のマシンでさえ、最新アプリケーションで必要な膨大なデータ量とワークロードを処理できない可能性があり、最終的にはアップグレードの難しい限界に直面することになります。 また、"big iron(高速なコンピュータ) "は法外に高価な場合もあります。 多くの組織では、64コアのマシンを1台購入するよりも、16コアのサーバーを4台購入する方がコスト効率が良いと考えています。
シングルサーバー・アーキテクチャのキャパシティプランニングは、特にワークロードが大きく変化する可能性が高いソリューションでは困難です。 ピーク負荷に対応する能力を持つことは、時間外に無駄な利用不足を招く可能性があります。 一方、コア数が少なすぎると、使用量の多い時間帯にパフォーマンスが低下する可能性があります。 さらに、1台のサーバー・アーキテクチャーの容量を増やすには、マシン全体を買い換える必要です。 その場で容量を追加することは不可能です。
要するにソフトウェアにとって、実装されるハードウェアの可能性をフルに活用することは重要ですが、垂直スケーリングだけでは静的なワークロード以外を満たすには不十分です。

水平スケーリング
以上の理由から、大規模なスケーラビリティを求める多くの組織は、ネットワーク化されたシステムに導入し、複数のサーバーに作業を分散することで、ワークロードやデータボリュームを「水平方向」に「スケールアウト」します。 通常、ネットワーク内の各サーバーは手頃な価格のマシンを使用しますが、必要に応じてより大型のサーバーを使用し、垂直方向のスケーラビリティも活用することができます(後述の「垂直-水平方向のハイブリッド・スケーリング」を参照)。
水平方向のスケーリングは、最新の大規模データアプリケーションではほぼ避けられない複数の利点を提供します。 このような柔軟なシステムは、コモディティ・ハードウェアとクラウド・リソースを必要に応じて拡張することで、変動する需要に合わせてダイナミックかつ経済的に成長または縮小することができます。 また水平スケーリングは耐障害性を高めます。マルチノードシステムは、1つのノードがダウンしても故障しません。 水平スケーリングは、クラウドネイティブシステムや分散システムの基盤であり、大規模なスケーリングと障害体制を実現します。
ビッグデータの時代には不可欠ですが、それでも水平スケーリングに課題がないわけではありません。 そのためには入念なオーケストレーション、負荷分散、データ分散が必要です。 ノード間のデータの一貫性を維持し、ネットワークの待ち時間を最小化することは、特にリアルタイム・システムにおいて、並外れた困難をもたらす可能性があります。 水平分散アーキテクチャは、CAP(Consistency-Availability-Partitioning)の定理によって制約されています。 相殺は不可避で、主要な目標と従属的な目標を注意深く検討する必要があります。
ソフトウェア・アーキテクトは、2つとして同じワークロードはないことを認識します。 最新アプリケーションの中には、数十万人のユーザーが同時にアクセスし、1秒間に非常に多くの小さなトランザクションを積み重ねるものもあります。 また、ユーザー数はほんの一握りだが、ペタバイト級のデータを照会する企業もあります。 どちらも非常に負荷の高いワークロードで、スケーリングには異なるアプローチが必要です。 我々は各シナリオを別個のものと考えています。
ユーザーボリュームによる水平スケーリング:キャッシング
スケーリング中に高速化するため、データベースはキャッシュを頻繁に利用し、頻繁にアクセスされるデータのために高速で一時的なレイヤーを追加し、同じデータに対して繰り返しデータベースをクエリすることを避けます。 膨大な数の同時ユーザーやトランザクションをサポートし、ユーザー量に応じて拡張するため、インターシステムズは、エンタープライズ・キャッシュ・プロトコル(ECP)と呼ばれる独自の実装を導入しました。
サーバーのネットワーク内で、1 つはデータが永続化されるデータサーバーとして構成されます。 他はアプリケーションサーバーとして構成されます。 各アプリケーション・サーバは、InterSystems IRIS のインスタンスを実行し、ローカル・データベースのようにデータをアプリケーションに提示します。 データはアプリケーション・サーバーに永続化されません。 その代わり、これらのサーバーはキャッシュと CPU 処理能力を提供します。
ユーザーセッションは、通常ロードバランサーを介して、アプリケーションサーバー間で分散され、クエリは可能であればローカルのアプリケーションサーバーキャッシュから満たされます。 アプリケーションサーバーは、必要な場合にのみデータサーバーからデータを取得します。 ECPはすべてのクラスタ参加者間でデータを自動的に同期します。
計算作業はアプリケーションサーバーが処理するため、データサーバーは主にトランザクション結果の永続化に専念できます。 アプリケーションサーバーは、ワークロードの変化に応じてクラスタに簡単に追加したり、クラスタから削除したりできます。 例えば、小売業のユースケースでは、ブラックフライデー商戦の例外的な負荷に対応するために。アプリケーションサーバーを追加し、ホリデーシーズンが終了した後に再びオフにすることが考えられます。 アプリケーションサーバーは、大量のトランザクションを実行しなりませんが、各トランザクションはデータセット全体の比較的小さな部分にしか影響しないようなアプリケーションに、最も有効です。

InterSystems IRISとIRIS for Healthは、データアーキテクチャの不可欠な要素としてECPを導入しています。 ECP を搭載したアプリケーション・サーバーを使用した導入は、さまざまな業界で何千人もの同時ユーザーをサポートすることが示されています。
データ量による水平スケーリング:シャーディング
クエリ(通常は分析クエリ)が大量のデータにアクセスしなければならない場合、クエリワークロードを効率的にサポートするためにキャッシュする必要がある「作業データセット」は、1台のマシンのメモリ容量を超えることがあります。 このような大規模なデータセットに対処するための強力なテクニックがシャーディングであり、大規模なデータベーステーブルを複数のサーバーインスタンスに物理的に分割します。 アプリケーションは依然として、シャード・マスターとして指定されたインスタンス上の単一の論理テーブルにアクセスします。 シャード・マスターは受信したクエリを分解し、シャード・サーバーに送信します。シャード・サーバーはそれぞれ、テーブル・データの別個の部分と関連するインデックスを保持します。 シャード・サーバーは、シャード・ローカルクエリーを並行して処理し、その結果をシャード・サーバーに返送して集約します。

データは、シャード・キーに従ってシャード・サーバー間で分割されます。シャード・キーは、システムによって自動的に管理されるか、選択したテーブル・カラムに基づいてソフトウェア・アーキテクトによって定義されます。 シャード・キーを注意深く選択することで、頻繁に結合されるテーブルの行を同じシャード・サーバーに格納することができます。 このコロケーションによって、各シャード・サーバー上でテーブルをローカルに結合できるようになり、並列化とパフォーマンスが最大化されるのです。 データ量が増えてもシャードを簡単に追加できます。
すべてのテーブルをシャーディングする必要はありません。 例えば、分析アプリケーションでは、ファクトテーブル(例:小売シナリオにおける注文)は通常、非常に大きく、シャーディングされます。 はるかに小さいディメンションテーブル(製品、POSなど)はそうではありません。 非シャード・テーブルはシャード・マスターに永続化されます。 クエリが、シャード化されたテーブルとシャード化されていないテーブルとの間の結合を必要とする場合、または 2 つの異なるシャードからのデータを結合する必要がある場合、インターシステムズのテクノロジーは、非常に効率的な ECP ベースのメカニズムを使用して、正しく効率的に要求を満たします。 このような場合、他の多くの技術のようにテーブル全体をネットワークに流すのではなく、必要な行だけがシャード間で共有されます。
InterSystems のアーキテクチャーは、分散され、パーティショニングされたデータセットにクエリを実行する際、複雑なマルチテーブルジョインを可能にします。

ユーザーボリュームとデータボリュームの両方によるハイブリッド水平スケーリング
最新のデータソリューションは、大抵、高いトランザクションレート(ユーザー量)と大量のデータに対する分析の両方を同時にサポートしなければなりません。 例えば、顧客のポートフォリオとリスクを要約したダッシュボードを、現在の市場データに基づいてリアルタイムで提供するプライベート・ウェルスマネジメント・アプリケーションでは、
インターシステムズのテクノロジーは、分析クエリーとインジェスト・トランザクションを同時に行えるという点で珍しいと言えます。 アプリケーションサーバーとシャーディングを組み合わせて使用できるようにすることで、 ハイブリッド・トランザクション・アンド・アナリティカル・プロセッシング(HTAP)、すなわちトランスライティカル・アプリケーションが実現します。 アプリケーション・サーバーをアーキテクチャ(図2)に追加して、シャードマスターの作業負荷を分散することができます。
アプリケーションが究極のスケーラビリティを必要とする場合(例えば予測モデルが、新しいレ コードの取り込みとクエリを同時に行いながら、大規模なテーブルのすべてのレコードをスコアリングしなけ ればならない場合)、個々のデータシャードは、ECP モデルのデータサーバーとして機能します。 データシャード上でワークロードを共有するアプリケーションサーバーをクエリーシャードと呼びます。 これとInterSystems IRIS クラスタの高可用性を保証する透過的なメカニズムを組み合わせることで、ソリューション・アーキテクトは、ソリューション固有のスケーラビリティと信頼性の要件を満たすために必要なすべてを得ることができます。

垂直-水平ハイブリッドスケーリング
最近のシステムの多くは、垂直方向と水平方向のスケーリングを組み合わせています。 例えばデータベースは垂直方向にスケーリングされた強力なノードで実行され、クエリーは水平方向にスケーリングされたアプリケーションサーバーに分散されます。 ハイブリッドモデルは柔軟性と回復力を提供し、特定のワークロードや要件に合わせることができます。
アーキテクチャーの影響
効果的なスケーリングには、スケーリングに影響を与え/影響を受ける、思慮深いアーキテクチャ設計が必要です:
- データパーティショニング(主にシャーディングとレプリケーション戦略)は、大規模データセットの管理に役立ちます(上記の「データボリュームによる水平スケーリング:シャーディング」を参照)。
- ステートレスとステートフルサービスの選択は、スケーリングの決定を形作ります。 ステートレス・サービスは水平方向に拡張しやすい
- ロードバランシングは、ノード間でトラフィックを均等に分散し、1つのノードが圧倒されないようにします。
- テナント戦略は、各ユーザーのデータの論理的分離を維持しながら、異なるユーザーがデータプラットフォームと場合によってはそのインフラへのアクセスを共有する方法を形作ります。
- CAP定理(一貫性、可用性、分割耐性)に制約された一貫性モデルは、分散システムにおけるトレードオフの指針となります。

アプリケーションとトレンド
スケーラブルなデータプラットフォームは、インターシステムズが顧客の問題解決に取り組んできた業界で成功するために不可欠です。 最も重要なのは医療データで、インターシステムズは、多くの医療情報学アプリケーションの中でも、患者記録、医用画像やその他の診断データ、リアルタイムモニターを管理し、非常に大規模な業務を行っています。
インターシステムズは、金融(取引の処理、不正行為の検出、規制目的の報告)、サプライチェーン(出荷の追跡、配送の最適化、在庫管理)など、その他のデータアプリケーションにも積極的に取り組んでいます。
インターシステムズは、これらすべての業界でデータソリューションを実現する役割を果たし、組織が大規模なデータ、パフォーマンス、信頼性の目標を達成できるよう支援しています。
スケーラブルなデータプラットフォームの状況は、新しいデータアプリケーションやシステムの導入に伴い、進化し続けています:
- Kubernetesやサーバーレスモデルのようなクラウドネイティブなアーキテクチャは、水平スケーリングを簡素化します。
- 予測アルゴリズムによるAI主導のスケーリングは、リソースの割り当てを最適化します。
- エッジコンピューティングは、データソースにより近い場所で処理を分散し、待ち時間を短縮します。
- データメッシュとフェデレーテッド・アーキテクチャは、データの所有権とスケーラビリティの分散化を促進します。
- データファブリック・アーキテクチャは、データのサイロ化と断片化を克服します。
インターシステムズによる大規模スケーリング
大規模なスケーラビリティはもはやオプションではありません。 スケーリングは、特に ハイブリッド・トランザクション・アンド・アナリティカル・プロセッシング(HTAP)アプリケーションの要件です。HTAPアプリケーションは、大規模なワークロードと大容量のデータを同時に処理する必要があり、場合によっては多数のユーザーを同時に処理する必要があります。
垂直スケーリングは、小規模なシステムにシンプルさとパフォーマンスを提供し、水平スケーリングは、大規模なアプリケーションに不可欠な弾力性と回復力を提供します。 専門化されたアーキテクチャは、さまざまな要件と優先順位の組み合わせに対して、システムの運用を調整することができます。 各アプローチの長所と限界を理解することで、組織は現在のニーズを満たし、将来の成長に適応するデータアーキテクチャを設計することができます。
InterSystems IRISについて
InterSystems IRIS は、ソフトウェア・アーキテクトがアプリケーションを効率的に拡張し、ガイドに概説されている戦略を効果的に活用するためのオプションを提供するデータプラットフォームです。 垂直スケーリング、ユーザーボリュームによる水平スケーリングのためのアプリケーションサーバー、ネットワークブロードキャストの必要性を排除した、データボリュームによる水平スケーリングのためのシャーディングへの高効率アプローチ(ECP)をサポートします。 これらのテクノロジーは、アプリケーションの特定の要件に合わせてスケーリングされたアーキテクチャをカスタマイズするために、独立して使用することも、一緒に使用することもできます。
InterSystems IRIS は、大規模なスケーラビリティ、非常に効率的な並行トランザクション分析処理、コピーや移動のない単一ストアでのマルチモデル・データ表現、柔軟なテナントモード、カスタマイズ可能なローカルクラウド展開のユニークな融合を実現しています。
























