用語集
スケールアップ/スケールアウトとは
ビジネスの規模が大きくなったり、サービスの知名度が上がってユーザー数が増えたりといった理由により、システムに対して、構築時の想定よりも大きな負荷がかかるようになるケースがあります。システムの許容量を超える負荷がかかると、サービスのレスポンスが低下したり、最悪の場合はサービスが停止する可能性も考えられます。そのため、このようなケースでは、サーバーの処理能力を負荷に見合うよう増強しなければなりません。
サーバーの増強方法には、大きく「スケールアップ」と「スケールアウト」の2つがあります。本記事では、「スケールアップ」「スケールアウト」の基本について、解説します。
サーバーのスペックを増強させるか、台数を増加させるかが両者の違い
サーバーの「スケールアップ」とは、一言で言えばサーバーのスペックそのものを上げることです。サーバーのスペックとは、具体的には搭載しているCPUのコア数・メモリ容量・ストレージ容量・ネットワーク転送速度といった性能で表されます。つまり、スケールアップとは、よりコア数の多いCPUを搭載したサーバーに入れ替えたり、メモリ容量を増やすことで、より大きな負荷に耐えられるようにする方式です。クラウドであれば、サーバーのインスタンスタイプをより大きいものに変更し、必要に応じて再起動するだけでスケールアップが可能です。
これに対して「スケールアウト」とは、サーバーの台数を増やして処理を分担させることです。例えば、同じサーバーを2台用意して、ロードバランサーでアクセスを2台に振り分ければ、サーバー1台で運用していた時に比べて、理論上は2倍のアクセスを処理することが可能になります。
スケールアップとスケールアウトのどちらが適しているかは、そのサーバーが行っている処理の内容によって異なります。具体的な例として、データベースサーバーを増強することを考えてみましょう。
ECサイトの商品検索のような処理でデータの更新が行われない時にサーバー間のデータの整合性や実行順序を気にせず、複数のサーバーで並列に実行しても問題ない場合があります。こうした並列で読み取り専用の処理を行うサーバーでは、単純にサーバー台数を増やすだけで処理量を増やせる、スケールアウトが向いています。
一方、リアルタイムに複数のユーザーに影響が発生するソーシャルゲームのデータの管理などは、ユーザーに不利益が発生しないようにデータの整合性が必要となります。ゲームデータの書き込み処理を行うサーバーが複数にまたがると、サーバー間のデータの整合性や同時更新、シャーディングなどの難しい問題を考慮する必要があります。必要な性能が賄えるのであれば、シンプルに1台のサーバーに処理を任せて、そのスペックを増強するスケールアップが向いています。
スケールアップ/スケールアウトに迅速に対応できるのがクラウドのメリット
オンプレミスの場合は、スケールアップ・スケールアウトのどちらを行うにせよ、自社でハードウェアを新たに確保する必要があります。そのため、どうしてもハードウェアの調達やキッティングといった作業に数日から数週間という単位で時間がかかってしまいます。システムに対する負荷が長期間にわたって緩やかに増加しているのであれば、計画的なスケールを行うことで対処できるでしょう。しかし、突発的に負荷が増加した場合は、スケールが間に合わないことが考えられます。結果として、十分なサービスが提供できず機会損失が発生したり、最悪の場合は業務が滞ってしまう可能性もあります。もし万が一、頻繁にサービスがダウンするようなことになれば、ブランドイメージや企業の株価への影響なども無視できなくなるでしょう。
そのため、スケールに時間のかかるオンプレミスでは、想定されるピークを見越してシステムがダウンしないようにあらかじめ余裕を持ったサイジングを行う必要があります。しかし、余裕を持ったサイジングを行うということは、平常時は利用しないリソースに対して、コストを支払うということでもあります。余裕を持ってサーバーを調達したものの結果的には使われず、無駄な投資に終わってしまうということも十分に考えられます。
それに対してクラウドであれば、ハードウェアを自社で調達する必要がなく、キッティングなどの作業も必要ありません。追加のリソースが必要になった時にオンデマンドでサーバーの台数の追加やスペックの変更が可能なため、「必要になってからリソースを確保する」という戦略を取ることができます。結果として、オンプレミスのような事前のサイジングが不要になり、リソースへの過剰な投資を避けることができます。
また、多くのクラウドベンダーでは、あらかじめ設定した閾値を超える負荷がかかった際に自動的にサーバーの台数を追加・削除する「オートスケール」機能を提供しています。現在では、SNSによる口コミなどにより、突然サービスに対してアクセスが集中するといったことも起こりやすくなっています。こうした予測できない負荷の増加には、計画的なスケールでは対応し切れません。しかし、オートスケール機能を利用すれば、自動的にサーバー数を増減し、かかっている負荷に適した状態にスケールさせることができます。これによって、アクセス数の急増によるサーバーダウンや応答の遅延といった機会損失のリスクを回避しやすくなっています。また、ピークを過ぎて負荷が下がれば、スケールアウトで増やしたサーバーは自動的に削除されるため、サーバーにかかる費用も最小に抑えることができます。
もちろんFJcloud-V(旧ニフクラ)でも「オートスケール」機能を利用可能です。