ケース別に分けて紹介
性能向上は「システムをデータに近づける」「データをシステムに近づける」のいずれか
優れたアプリケーションパフォーマンスに対する欲求は尽きない。遅延を減らすためには、データの方をシステムに近づけるか、システムの方をデータに近づけるか、どちらが適切なのだろう。
時間は元に戻せないリソースだ。ひたすら前に進み続け、いったん消費したら取り返すことも巻き戻すこともできない。出来事や瞬間は、時間という概念で区別される。IT運用に関して言えば、常に時間が足りず誰もが時間を必要としている。毎秒すべきことがあるというプレッシャーは絶えることがない。
ハイパフォーマンスコンピューティング(HPC)またはスーパーコンピュータと呼ばれる分野では、実行する計算の数、つまり1秒当たりの浮動小数点演算の回数(FLOPS:Floating point number Operations Per Second)を向上させることを常に追求している。本稿執筆時点の2018年10月における測定値は数十~数百ペタFLOPS単位で、その1000倍高速なエクサFLOPSが次の目標になっている。
ストレージにも同様のプレッシャーが掛かっているのは明らかだ。ストレージインフラのパフォーマンスはIOPSと1秒当たりのスループットで計測され、毎秒MB、GBから毎秒TBに移っている。
1秒当たりのインフラパフォーマンスを向上させたいという果てなき欲求が背景にあることを前提にした場合、次の疑問が浮かび上がる。データとシステムの距離を近づけるとしたら、どちらをもう片方に近づけるのが合理的なのだろう。
一般的な見解
「システムをデータに近づける方が合理的だ」というのが一般的な見解であり、よくあるユースケースは実際その通りだ。たいていの場合簡単かつ高速になるのは、実行可能ファイルの方が入力データと比べ、ネットワーク間でやり取りするデータの割合が大幅に少ないためだ。データの移動にはネットワーク帯域幅、時間、そして熟練者の手作業が必要になる。手作業の必要がないというだけでも、IT管理者はシステムをデータに近づける方法を選ぶだろう。
こうした好例がApache Software Foundationのデータフレームワーク「Hadoop」だ。タスク管理ツール「Hadoop JobTracker」では、個別のタスク実行スケジュールを、必要なデータが存在するコンピューティングノードで設定できる。コンピューティングノードでジョブが設定できない場合は、同じラック内にあるコンピューティングノードにそのジョブの実行スケジュールを設定する。そのノードも利用できなければ、グリッドの他のノードにジョブの実行スケジュールを移す。Hadoop JobTrackerのスケジューリングアルゴリズムを支えているのは、入力データをコンピューティングノードに移動するのは時間がかかり過ぎるという考え方だ。データを移動することでジョブの遅延が増え、応答時間が長くなってしまう。
Hadoopの例は、システムをデータに近づけることに合理性がある一つの明確なユースケースにすぎない。システムとデータとの間の帯域幅が十分でない場合もこうした例の一つだ。だがシステムの方を移動するのが不可能なほどコストが高かったり、複雑化が進んでしまったりする状況もあるだろう。ワークフロー、コラボレーション、セキュリティ、インフラなどの観点から、データを移動する方が現実的な状況もある。
システムとデータのどちらを移動して双方の距離を縮めるかを、シナリオを細分化して考えてみる。そして、どちらを移動するのが合理的か、状況をはっきりさせてみよう。
システムを移動する方がよい場合
Hadoop JobTrackerの例で示したように、通常はデータを移動するよりもシステムを移動する方が単純かつ高速になる。往々にして、システムとデータが近いほどインフラパフォーマンスは向上する。距離が短くなるほど処理結果は即座にもたらされる。通信の遅延はインフラのパフォーマンスを低下させ、光の速度に影響を受ける。
光の速度と距離が遅延の問題の原因であることは今後も変わらないだろう。ワームホールなどのタイムワープできる技術が発明されれば話は別だが、近い将来実現することはない。遅延が時間当たりのパフォーマンスのボトルネックになっているならば、距離と遅延を減らせば毎秒のパフォーマンスは向上する。だがボトルネックがCPU、メモリ、ソフトウェア、ストレージインフラならば、改善手段は限られる。
システムをデータに近づけ、その距離を縮めることで最も大きなメリットを得るのは、遅延の影響を受ける可能性が高いアプリケーションだ。頻繁に取引をするなど大量のトランザクションを扱うアプリケーションがその例に当たる。こうした金融分野ではマイクロ秒が数百万ドルに相当するためだ。大量のトランザクションが発生するような、距離を近づけることでメリットが得られるアプリケーションとしてはHPC、オンライントランザクション処理、電子商取引、オンラインゲームなどがある。このようなアプリケーションではいずれも、システムをデータに近づけて遅延を削減するのが有効だ。
大量の送受データ
システムをデータに近づける価値は、ワイドエリアネットワーク(WAN)経由で送受するデータが大量にある場合に極めて明白になる。クラウドストレージに1P(ペタ)Bのデータがあり、ネットワーク経由でこのデータをオンプレミスに移さなければならないような状況がその例だ。アプライアンスやクラウドストレージゲートウェイがこのような仕組みで動作する。これらはデータの読み取り、処理、変更をするために、クラウドに移動したデータをいったんストレージに移し、元の状態に戻す必要がある。
帯域幅の理論性能が125Mbpsだとすると、1PBのデータの取得には非常に長い時間がかかる。TCP/IPではその理論性能は実現できないだろう。仮に実現するとしても、その回線で1PBを目的地まで送信するには93日以上掛かることになる。もっと現実的に考えれば、スループットの最高値は理論値の30%程度にとどまるだろう。そうなれば、移動時間は約309日、つまり10カ月間以上にまで延びる。お世辞にも適切な時間とは言えない。WAN最適化ツールを使用しても、必要な期間はせいぜい90日から300日の範囲内に落ち着く程度だ。やはり時間がかかり過ぎる。
こうしたシナリオでは、システムをデータに近づけると、必要な時間が大幅に短縮できる。これにより、アプリケーションを含むシステムのインスタンスをクラウドで稼働し、クラウドに保存されたデータを処理する、というプロセスを踏むことになる。処理が完了したらインスタンスは破棄されるため、使用した分以上に課金されることはない。データ処理はオンプレミスのデータがHadoop JobTrackerに移動するのを待つよりもはるかに迅速だ。クラウドストレージから取り出す際の多額のコストも節約できる。
並列処理システム
システムをデータに近づけることでメリットを得られるアプリケーションの種類はもう一つある。HPCエコシステムで使用されている並列入出力(I/O)だ。この場合、HPCは並列ファイルシステムを利用して大量のデータを並列処理する。こうした並列ファイルシステムには「Lustre」「Panasas」「Quobyte」「IBM Spectrum Scale」(旧「General Parallel File System」)「WekaIO」などがある。並列ファイルシステムのレイテンシ要件を満たすには、通常HPCの各ノードにある内蔵ストレージにデータを配置する必要がある。それによって、遅延の原因になる距離を縮められる。SSDストレージのプロトコル「NVMe over Fabrics」(NVMe-oF)やリモートダイレクトメモリアクセス(RDMA)により、こうした要件は変わってきている。ネットワーク遅延が減少し、距離による遅延の影響もある程度抑えられるためだ。
格納されたデータに比較的近い場所にシステムを配置すれば、ネットワーク遅延と距離による遅延の両方が削減される。この原理はHadoop JobTrackerや「Slurm Workload Manager」などのHPCジョブスケジューラーでも利用されている。Slurm Workload Managerはオープンソースのスケジューラーだ。利用可能なリソースが豊富で、最もデータから近いノードに各ジョブを巧みにスケジューリングし、パフォーマンスを最大限に引き出す。新しい共有ラックスケールフラッシュストレージではジョブのスケジューリングが単純化され、増える遅延は5~10マイクロ秒とごくわずかだ。
リレーショナルデータベース
リレーショナルデータベースのうち「Oracle Database」や「SAP HANA」などは、処理対象の全データをメモリ内に保持するバージョンを用意している。こうしたユースケースでは、低遅延かつ高パフォーマンスのDRAM(Dynamic Random Access Memory)を利用できることに加え、システムに極めて近づけることで遅延が減少するという両方のアプローチが生かされる。その結果、データベースパフォーマンスが大幅に向上する。ただしコストが高いため、最もI/Oパフォーマンスの要求レベルが高いアプリケーションに限って使用すべきだ。
ハイパフォーマンスストレージ
システムをデータに近づけると、パフォーマンスが高い一部のストレージアーキテクチャで処理速度が大幅に短縮される可能性もある。一般的に、ストレージソフトウェアサービスではCPUとメモリの負荷が高くなる。システムをデータに近づけることで、ストレージコントローラーからプロセスをオフロードでき、それによって読み書きに余裕が生まれる。このような考え方が、SSDのニアライン(オンラインとオフラインの中間)コントローラーによる共同処理を支えている。こうしたコントローラーは、パフォーマンスを下げる冗長タスクをメインストレージコントローラーのCPUからオフロードする。しかしこの操作によって必ずしもストレージパフォーマンスが改善するわけではなく、コストが増加しパフォーマンスが低下してしまう恐れもある。
データを移動する方がよい場合
データをシステムに近づけることは通常、インフラのパフォーマンスが最も重要な懸念事項ではないことを意味する。この場合の主な懸念事項は、コスト、セキュリティ、便利さ、単純さである可能性が高い。
共同作業
ユースケースとして共同作業を考える。共同作業者がそれぞれ属する組織、企業、地域がさまざまで、使用するアプリケーションが異なる場合、システムをデータに近づけることはほぼ不可能だ。セキュリティ対策を破って自社のシステムにアクセスし、承認されていないアプリケーションを導入することを、社外の共同作業者に許可する企業はほとんどないだろう。そのため、異なる企業間の共同作業におけるワークフローでは一般に、データをシステムに近づけざるを得ない。共同作業用のアプリケーションの例としては「Box」「Confluence」「Jira」「Dropbox」「Google Drive」「OneDrive」などがある。これらはいずれもデータをシステムに近づける。
クラウドバースト
オンプレミスのリソースに負荷がかかって利用できなくなると、クラウドリソースに作業が自動で割り振られるクラウドバーストも、データをシステムに近づける必要のあるユースケースの一つだ。クラウドバーストは、クラウドコンピューティングの伸縮性を生かすために利用される。オンプレミスのリソースにかかる負荷が増すと、アプリケーションはデータをコピーしてクラウドに送り込む。そのクラウドで、アプリケーションを含むクラウドコンピューティングインスタンスを稼働し、データを処理する。その後、結果をオンプレミスに戻し、クラウドのデータコピーを削除してから、クラウドインスタンスを破棄する。これは、予期しない一時的な需要や季節ごとの需要によってオンプレミスコンピューティングが一時的に不足する場合のユースケースで、コスト効率に優れている。
データ分析
分析は、システムをデータに近づけるユースケースに当たる。一方でデータを頻繁にシステムへ近づけなければならないユースケースでもある。分析エンジンはデータを読み取って分析しなければならない。効果的な分析を実現するには、たいていの場合分析エンジンにデータを近づける必要がある。
Apache Software Foundationの「Apache Spark」はHadoop用の分析エンジンだ。Apache Sparkで優れたパフォーマンスを実現するには、Hadoopの分散ファイルシステム「Hadoop Distributed File System」(HDFS)における複数のノードにデータを配置する必要がある。常駐ファイルやオブジェクトデータをHDFSとして表示できるファイルシステムやオブジェクトストレージシステムもある。だがこれらのファイルシステムは、常に適切なパフォーマンスを提供するとは限らない。従ってデータをHadoopストレージに移動させる操作が欠かせない。NoSQLデータベースでも、一般的にはデータの移動が必要になる。NoSQLデータベースの例としては「Apache Cassandra」「Apache HBase」「Couchbase Server」「DataStax」「MemcacheDB」「MongoDB」「Neo4j」「OrientDB」「Redis」などがある。
データ収集
収集もまた、データをシステムに近づけるユースケースの一つだ。例えばIoT(モノのインターネット)では、数千、数百万、数十億という数のデバイスから生成されるデータを、リアルタイム分析や長期にわたるバッチ検出のために収集する。こうした機械データ収集とリアルタイム分析の一例には、「AIOps」(Artificial Intelligence for IT Operations:人工知能を使った運用)がある。AIOps製品は、BMC Software、Correlsense、Corvil、Hewlett Packard Enterprise、IBM、ITRS Group、Moogsoft、SAP、Splunk、StrongBox Data Solutionsなど、さまざまなベンダーが提供している。
分散ストレージ
分散マルチノードストレージシステムも、データをシステムに近づける方が合理的なユースケースとなる。複数の分散ストレージシステムが、異なるストレージノード間で常に負荷を分散し、データを移動することで、パフォーマンスを最適化する。
結局どちらが適切なのか
インフラのパフォーマンスを改善して時間を短縮するには、システムをデータに近づけるべきか、それともデータをシステムに近づけるべきか。それはユースケースに応じて異なる。絶対的なものではなく、ユースケースの異なる側面に両方が当てはまるような場合もある。結局のところ「データとシステムのどちらを移動する方が合理的か」という問いへの答えは何になるのか。パフォーマンス、機能、コスト、セキュリティ、実用性、使いやすさという観点のアプリケーション要件に対し、いかにバランスを取るかが答えとなるだろう。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
関連記事
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
2
取手市がVDIと決別した理由 更改費用「4倍超」を約1.7倍に圧縮
-
3
「データストレージの活用方法」に関するアンケート
-
4
自宅のWi-Fiが「遅い」「途切れる」本当の原因は? Dellが推奨する鉄則
-
5
本当に安いPCで十分か? “すぐ重くなる”を防ぐノートPC選びの絶対条件
-
6
Claudeの不可視透かしに批判殺到 著作権消失や誤判定に潜む企業リスク
-
7
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
8
221人調査で分かった「情シス最大のストレス」は?
-
9
LLMの「過学習」、正しく説明している文章はどれ?
-
10
レガシー基幹システムをSAPに統合 山善が突き止めた「標準化と個別最適」の境界線
ホワイトペーパーランキング PR
-
1
年収2000万「クラウドセキュリティのプロ」になれる資格とは
-
2
セキュリティソフトをすり抜ける標的型攻撃メール、不審メールの見破り方とは?
-
3
Windows Updateの通信集中で回線が逼迫、ネットワーク刷新事例に学ぶ解決策
-
4
財務を戦略的組織へ進化させるAI活用術、4つの主要な障壁と解消方法
-
5
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
-
6
“あのファイル転送”で暗躍するノーウェアランサム
-
7
標的型攻撃メールを見破るには? サンプル文面を例に傾向を解説
-
8
商用利用の安全性を確保し大量のコンテンツを高速で生成する、AI活用の秘訣
-
9
マンガで解説、1日で生成AI環境を構築できるワークショップの中身とは?
-
10
Dark AIが台頭する時代の新発想、「より高度なAIで対抗する」具体的方法とは?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー