ベアメタルが変えるスケールアウト/スケールアップの選択
IaaSの普及と分散処理技術の進化で広まったスケールアウト
サーバの処理能力を増強するための代表的なアプローチとしては、サーバの数を増やす「スケールアウト」と、サーバを高性能化する「スケールアップ」の2つの方法があります。昨今選ばれることが多いのはスケールアウトですが、一方でサーバを追加しても思うようにスループットが向上しない、あるいは管理すべきサーバ台数が増えるといったデメリットから、スケールアップを前提にサーバインフラを見直すユーザも少なくありません。サーバインフラを取り巻く現状を踏まえつつ、この2つの方法のメリットとデメリットを改めて考えてみましょう。
スケールアウトの考え方が広まった理由の1つとして、“必要なときに、必要な分だけ”仮想サーバが使えるIaaSの普及が挙げられます。このIaaSを使えば、監視プログラムを使ってサーバの負荷をチェックし、高負荷状態を検知するとAPI経由で自動的に仮想サーバを追加、それぞれのサーバに処理を分散することで全体のスループットを高めるなどといったことが可能であることから、柔軟に性能を高められるソリューションとして広まりました。さらにIaaSであれば、利用した分だけ支払えばよいという料金体系のため、スケールアウトを前提にシステムを構築することでコスト負担を抑えられるメリットもあります。
分散処理技術の進化も大きなポイントでしょう。たとえば分散KVSは、従来のRDBMSが苦手としていた分散処理を容易に実現できるデータストアとして注目を集め、多くのWebサービスで活用されるようになりました。また分散処理技術によってビッグデータを高速に処理するHadoopなど、分散処理に強みを持つプロダクトも続々と登場しています。
こうした時代背景、また一般的にスケールアップよりも低コストで処理能力を増強できることから、スケーラビリティを確保するための手段としてスケールアウトは浸透しましたが、適用しづらい分野があるのも事実です。その代表例が排他制御の発生するOLTP(Online Transaction Processing)処理であり、サーバ台数を増やせば増やすほど排他制御のオーバーヘッドが大きくなるため、いずれかのタイミングで性能は頭打ちになってしまいます。同様に並列性が高められない処理では、スケールアウトによる性能向上には限界があります。
管理すべきサーバの台数が増えてしまうこともスケールアウトの大きな問題です。確かにIaaSを使えば物理的な管理の手間は省けますが、状態監視や障害時の対応の負担まで軽減されるわけではありません。特に最初から複数のサーバで分散処理することを前提にシステムを構築した場合、こうした管理の手間は決して無視できません。
物理サーバへの集約で2つのオーバーヘッドを解消
これらの課題の解決策となり得るのがスケールアップによる性能向上です。高性能なサーバへのリプレースなら、分散処理のオーバーヘッドの影響を受けずにパフォーマンスを高められるほか、管理対象のサーバをいたずらに増やすこともありません。
さらに昨今では、物理サーバをクラウドサービスとして提供するベアメタルクラウドが登場したことで、コスト負担を抑えてスケールアップできる環境が整いつつあります。仮想サーバを提供するIaaSと同様、ベアメタルクラウドも物理サーバを“必要なときに、必要な分だけ”使えるため、導入におけるコスト負担を低く抑えられます。もちろん、ハードウェアの運用はサービス提供者側で行われるため、運用負荷を軽減できることもIaaSと同じです。
物理サーバを使うベアメタルクラウドならではのメリットとして、仮想化によるオーバーヘッドの影響を受けないことがあります。仮想サーバの場合、必然的に仮想化レイヤーでの処理が生じるため、思ったような性能が出ないというケースが少なくありません。しかし仮想化レイヤーのない物理サーバなら、スペックどおりのパフォーマンスを得られます。
たとえば複数台の仮想サーバで行っていた処理を1台の物理サーバで集約した場合、仮想化レイヤーによるオーバーヘッドの影響を排除できる上、分散処理のオーバーヘッドもなくなることから、大きなパフォーマンスの向上が見込めます。また管理対象となるサーバ台数も削減できるため、運用管理の負担軽減の効果も無視できないでしょう。
フロントエンドのWebサーバによるステートレスな処理など、スケールアウトが有効な領域があるのは事実ですが、すべての処理で効果が得られるとは限りません。改めて現状のシステムを見直し、物理サーバに集約することで効率化できる処理はないかといった視点でスケールアップを検討してみてはいかがでしょうか。