BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース スケーラビリティを知っていると思いこんでないか?

スケーラビリティを知っていると思いこんでないか?

「スケーラビリティ」という言葉は、ソフトウェアベンダのプレスリリースにたびたび登場(したり、冷水器に関する話題にのぼったり)するが、誤解されていることが多い。たとえば、スケーラビリティの話をしているときに、パフォーマンスや高可用性を推論する人が多い。「What is scalability?(source)」(スケーラビリティとは何か)という質問への回答を試みてRoyans K Tharakan氏は次のように述べている。
スケーラビリティとは単にやっていることを大きな規模で行うことです。Webアプリケーションのスケーリングとは、そのアプリケーションをより多くの人が使えるようにすることです。スケールアウトしている間、パフォーマンスの改善方法はわからなくてもいいのです。そして、より多数のユーザーを扱えるようにスケール(調整)できるのであれば、個別の故障が複数あっても構わないのです。
Royansが特に言及しているのは、スケーリングに関して現在選択肢が2つあることだ。
  • 垂直スケーラビリティ - 同一論理ユニット内で資源を追加して処理能力を向上させること。例としては、既存のサーバにCPUを追加したり、既存のRAID/SAN記憶装置にハードドライブを追加することにより、記憶領域を拡大したりすることが挙げられます。
  • 水平スケーラビリティ - 資源の論理ユニットを複数追加して、単一ユニットとして動作させること。大部分のクラスタ化ソリューションや分散ファイルシステム、ロードバランサは、水平スケーラビリティに役立ちます。
アーキテクトはリニア・スケーラビリティの達成に努力するが、リニア・スケーラビリティとは、システムへの資源追加に比例して、一貫したスループット率を維持する能力を指す。しかし、資源を追加すればオーバーヘッドの増加も招くため、達成は困難である。Royansはこれを「スケーラビリティ要因」と呼び、スケーラビリティの種別分類を行う目安としている。
  • スケールアップを行っても、スケーラビリティ要因が一定である場合。リニア・スケーラビリティと呼びます。
  • しかし、コンポーネントによっては、他のコンポーネントほど上手くスケールしないものがあります。スケーラビリティ要因が1,0未満のものをサブ・リニア・スケーラビリティと呼びます。
  • まれなケースですが、コンポーネントを単に追加するだけでパフォーマンス(スケーラビリティ要因)が良くなる可能性もあります(ディスクスピンドルが増えると、一つのRAID内の複数ディスクスピンドル全体のI/Oが改善します)。これをスープラ(超)・リニア・スケーラビリティと呼びます。
  • アプリケーションがスケーラビリティを考えて設計されていない場合、スケールアップするに従って、実際に事態が悪化する可能性もあります。これをネガティブ・スケーラビリティと呼びます。
ソフトウェア開発では万能の規範アプローチが存在しないことが多々あるが、スケーラビリティの問題を解決する万能アプローチもない。Royansは「緊急にスケーラビリティが必要な場合は、垂直にスケールするのが一番手っ取り早い方法」と提案しているが、「垂直スケーリングは発展するに従ってどんどん費用がかさみ」、そして「無限の水平リニア・スケーラビリティ達成は難しいが、無限の垂直スケーラビリティは不可能」と警告している。Royansは続けて次のように述べている。
一方、水平スケーラビリティでは、高価なサーバを次々に増設する必要はありません。水平スケーラビリティとは、既存のストレージとサーバ・ソリューションを用いて実施されるものです。けれども、水平スケーラビリティが安上がりというわけでもありません。アプリケーションをゼロから構築して、単一アプリケーションとして複数のサーバ上で動作するようにしなければなりません。
Royansはスタック全体のスケーラビリティに取り組む上でのアドバイスを記事の最後に記し、次のように締めくくっている。
スケーラブルなWebアプリケーションが上手く動作するようにするには、全レイヤーを均等にスケールしなければなりません。その中にはストレージ・レイヤ(クラスタ化ファイルシステム、s3など)、データベース・レイヤ(パーティショニング、フェデレーション)、アプリケーション・レイヤ(memcached、スケールアウト、terracota、tomcatクラスタなど)、Webレイヤ、ロードバランサ、ファイヤーウォールなどが含まれます。たとえば、将来のWebトラフィックを処理するために必要な複数のロードバランサが導入できない場合、Webレイヤの水平スケーラビリティにどれほどの金銭と労力をつぎ込もうとも、何の効果ももたらしません。Webトラフィックは、ロードバランサで処理できる量に制限されることになるのです。
原文はこちらです:http://www.infoq.com/news/2007/10/whatisscalability

この記事に星をつける

おすすめ度
スタイル

BT