本記事は「レンタルサーバー」について、”なんとなくわかっているけど実は細かいところがよくわかっていない”という人向けの内容となります。
そもそもサーバとは?
そもそもサーバとは、クライアントからのリクエスト(画像やテキスト)に応じてレスポンスを返す機械のことを指します。インターネットにおいてはブラウザからのリクエストに対しWebサーバ(Webサイトを公開するためのサーバ)が答える形となります。
このサーバ自体は特別特殊な機械というわけではく、一般的なPCとそう構造は変わりません。ただ、サーバは専用のソフトウェアで動いており、ソフトウェアの種類には「Apache HTTP Server(通称:Apache)」や「nginx」などがあります。
また、Webサイトが公開される仕組みとしてHTTPというプロトコルが存在しており、Webサイトを表示するにはこのHTTPを通してブラウザとサーバがリクエストとレスポンスのやり取りを行ないます。
レンタルサーバーとは?
さて、本題のレンタルサーバーについてです。
サーバと聞くと一番に思い浮かべるのはやはりAWSでしょうか?Amazonが運営するクラウドサーバ(IaaS)ですが、大規模システムなどにはだいたいこのAWSが使用されています。AWSは従量課制でデータの転送量や細かいスペックなどにより料金が変動しますがレンタルサーバーは一定で安価です。
また、AWSはroot権限(管理者権限)がありますが、レンタルサーバーにはroot権限がありません。このroot権限があると自由にサーバ環境を構築することが可能ですがサーバの保守(脆弱性対応など)を自分たちでする必要があります。
逆にレンタルサーバーはroot権限がない分、サービス提供元がサーバ環境を最初から用意してくれているので自分たちでサーバ環境を構築する必要がありません。
つまり、この2つを簡単に比較すると
自由度は高いが高価:AWS
自由度は低いが安価:レンタルサーバー
セキュリティコストが高め:AWS
セキュリティコストが低め:レンタルサーバー
と、なります。
また、補足としてroot権限のあるなしについては、
root権限のメリット:自由なシステム環境の構築や高速化
root権限のデメリット:脆弱性対応などの保守業務、セキュリティリスク
などがあります。
では、ここでもう少しレンタルサーバーについて説明をしますが、レンタルサーバーは1つのサーバ領域を沢山のユーザーで分け合うようなイメージとなります。
上記の図ですと「ユーザーD」の範囲が大きいですが、これはサーバ領域を複数のユーザーで分け合っていため1人のユーザーが負荷のかかるサイトを運用してリソースを沢山使っていると他のユーザーに影響が出る可能性を表しています。
ただし、図に記載されている通りサーバの管理者はサーバの提供元(事業者)となっているため、サーバの保守をする必要がありません。これは昨今のセキュリティリスクが高くなっているインターネット界隈においては非常にメリットある特徴です。
また、レンタルサーバを利用するにはあたってサーバの速度は気になるところだと思いますが、サーバの速度を左右するものとして以下の要素があります。
・CPU
・メモリ
・ディスク性能
・ネットワーク帯域幅
CPUは、人間にとっての「頭脳」にあたり、サーバの全体的なパフォーマンスに大きく影響します。
また、メモリは人間の「短期記憶」に例えることができ、データを一時的に記憶しメモリの容量が多ければ多いほど同時に複数のタスクを処理することが可能です。ネットワーク帯域はサーバが外部とどれだけ効率よく情報をやり取りできるかを左右しますので、こちらも重要な要素となっています。
レンタルサーバーの向き不向きについて
レンタルサーバーは可用性を求めるサイトには向いていません。24時間365日絶対に停止しないことが求められる場合はレンタルサーバー以外のサーバ(AWSなど)を利用する方が良いでしょう。
また、チケット販売サイトやイベントのエントリーサイトなどはレンタルサーバーには向いていません。これらのサイトはチケット販売のタイミングやイベントの受付開始の際に大量のアクセスが集中しますのでレンタルサーバーでは処理しきれない可能性が高いです。
更にクレジット決済が発生するようなECサイトもどちらかというと不向きです。
決済が発生するようなサイトは安定稼働が求められますので、レンタルサーバーは他ユーザーの影響を受け動作が不安定になる恐れがあるのでVPSサーバやクラウドサーバのほうが適しています。また、複雑な機能の実装(レンタルサーバーはroot権限(管理者権限)がないため、実行したくても実行できないプログラムが存在します)やキャンペーン時のアクセス急増の可能性があるECサイトの場合はなおさら向いていないでしょう。
そのため、レンタルサーバーに向いているものとしては「企業サイト」や「ブログ」、「そこまで負荷が発生しないWEBシステム」あたりとなります。
サーバの冗長化について
「サーバの冗長化」という言葉自体はいろいろなところで聞くのではないでしょうか?冗長化とはシステムトラブルに対して複数のシステムを用意おきトラブルが起こっても安定稼働させるための構成のことを指します。
システムトラブルに対して準備をしてくことは素晴らしいのですが、実際にサーバを冗長化するには多くのコストがかかるので安価なレンタルサーバにはハードウェア的な冗長化はされていません。
(実際には「冗長化していない」とまでは言い切れず、その理由としては冗長化というワードの曖昧さにあります。どのレンタルサーバーもある程度の冗長化が施されていますがAWSなどのクラウドサーバほどは冗長化されていない、というようなニュアンスが正しいでしょうか?)
多くのレンタルサーバはRAID10(ストレージを冗長化する仕組み)によってストレージが冗長化されていますがサーバ全体が冗長化されているわけではないためサーバ自体にトラブルが起こるとその上に乗っかているサイトは停止してしまいます。
また、ハードウェアレベルの冗長化とアプリケーションレベルの冗長化と2つの区分に分けることができます。例えば1つのサーバが故障しても他のサーバが動作を自動的に引き継いでダウンタイムを回避するような冗長化はハードウェアレベルの冗長化と言えますし、ロードバランサーで負荷分散するような冗長化はアプリケーションレベルの冗長化と言えます。
どちらもAWSのほうが冗長化はされている(しやすい)ためこの点はレンタルサーバが劣る部分となります。
まとめ
レンタルサーバーにはメリット・デメリットがあり、要件に応じてVPSサーバやクラウドサーバと使い分けるようにしましょう