独身SEのすべて

システム開発の実態とか趣味とかITとかマンションポエムとか。

お金じゃない、失敗しないレンタルサーバー選び[1]サービス形態別の特徴

仕事柄、Webサイトを作りたいとか、簡単なシステムを作りたいとかでレンタルサーバーについて相談を受けることがしばしばあります。
大企業の傘の下で仕事をしていると、サーバーは1から構築することが多いのであまり詳しくなく、明確に答えることができないので勉強がてらまとめて行きたいと思います。シリーズ化すると良いなあ。

f:id:arata32:20151213225755j:plain

料金と機能以外で何が違うの?

レンタルサーバーの比較サイトを見ていると、比較の主軸は料金と機能です。
求める最低限の機能を持っていないとそもそもサービスインができませんし、料金が合わないとビジネスとして成り立ちません。
しかし、見落とされがちなのがサーバーの"保守性"という観点です。

保守性(ほしゅせい、英:maintainability または serviceability)は、 指定された条件下で規定された手順および資源(材料・設備・治工具・ソフトウェア等)を使用してアイテムの保守が行われた場合、与えられた使用条件において、要求された機能が保持される、または修復される能力をいう。

保守性 - Wikipedia

  例えば、

  • プログラムに不具合があってダウンしてしまった場合、復旧できるか
  • 悪意のあるアタックを受けてしまった場合の対処法はあるか
  • ハードウェア故障が発生した場合にサービスを継続できるか

等々です。

この観点で、レンタルサーバーを比較していってみたいと思います。

共有型と占有型

レンタルサーバーの中で最も大きな違いを持つのは「共有型」と「占有型」です。ここで"共有"とか"占有"とか言ってるのは、"サーバー"という物体(CPUとメモリがあって、HDD上にOSがインストールされている物理的な存在)を一人で占有しているか、みんなで共有しているかということです。
価格面、機能面の自由度で大きな差が出ますが、外的要因によるリスクにも大きな差が出ます。

占有型の特徴

占有型は、物理的なサーバーを一人で独占するので、月額利用料も高いですが、自由に機能を追加できます。
月額が数万円~数十万円と割高ですので、小さなサービスを始めるのには適していないかもしれません。
しかし、データベースを自由に構築できたりとか、好きなプログラム言語でサービスを開発したりといった自由度の高さが共有サーバーにはないポイントです。

共有型の特徴

共有サーバーは、物理的なサーバーを複数人でシェアします。
利用者ごとに割り振られたデータスペース内でのみの自由が認められています。
イメージとしては、一台のPCに対して、一部のディレクトリのみを借りている状態です。
占有サーバーとは異なり、ディレクトリ内での自由しか与えられていませんので、新しいソフトウェアをインストールしたりだとか、データベースを使った独自システムの構築なんかは難しくなります。
料金も数百円~数千円と、占有型の1/100になりますので、一つのサーバーを100人くらいでシェアしているイメージになるでしょうか。
また、一つのサーバーを複数人でシェアしているというのが曲者で、サーバーに同居している別のサービスの不具合に巻き込まれる(CPUが100%になっちゃって自分のサービスもとまっちゃう)等のリスクを潜在的にはらんでいます。(ある程度の対策はされているでしょうか)
ですので、絶対に止まっちゃダメなサービスを顧客から求められている場合、安易に共有型レンタルサーバーを薦めることは避けるべきでしょう。

最近よく聞くVPSって?

最近は、どのレンタルサーバー業者でもVPSのサービスが提供されています。
VPSとはVirtual Private Serverの略で、占有型のサービスを仮想的に享受できる仕組みになります。
VPSは仮想化の技術により、"仮想的に"占有型と同様の自由度を実現しています。
金額は数千円~数万円と、占有サーバーに比べると1/10程度の料金で、お得感のあるサービスです。

仮想化って何?

VPSの技術的根拠である仮想化とは何か。
それは、一つのサーバー上にOSが複数存在し、同時に稼働している状態です。

http://www.vsolution.jp/vmware/image/vmware-vsphere4/vm_vSphere_01_fig_02.jpg

VMware vSphere4 製品概要 | VMware・仮想化 - VMwareソリューション

占有型サーバーは一つの物理サーバー上にOSがインストールされていますので、高価な物理サーバーを一人で占有するため、料金も割高になりますが、VPSでは物理サーバー自体は複数人で共有してしているため、料金が比較的リーズナブルになります。
ここで、物理サーバーを共有しているということは、共有型レンタルサーバーと同様に他の利用者に巻き込まれて自分のサービスが停止してしまうのでは。という懸念が生まれます。
しかし、仮想化されたOSは、物理サーバー中に存在する、"割り当てられた資源のみ"を使用することになります。
例えば、サーバーに存在する"10Gのメモリのうち1Gのみ"とか"8コアCPUのうち1コアのみ"とか言った具合です。
割り当てられた範囲でのみ自由度が与えられていますので、同居するお隣さんがCPU100%状態に陥ったとしても、8コアのうち1コアだけが頑張っている状態ですので、自分のサービスへの影響は限定的です。

じゃあ流行りのクラウドって何?

近年生まれた言葉でクラウドという言葉ほど一人歩きしている言葉はない気がします。
文脈によって意味合いが異なる言葉になりますが、レンタルサーバー的な考え方では、"複数VPSサーバーによる仮想的データセンター構成"といった意味になるのではないでしょうか。
下の図はさくらサーバーのクラウドサービス説明サイトに張り付けられていた画像ですが、VPSとは異なり、複数サーバーのイメージ図が張り付けられています。

http://cloud.sakura.ad.jp/img/format/thumb02.png

高性能・低価格クラウドサーバーはIaaS型のさくらのクラウド

大規模システムを構築する場合、複数のサーバーに別々の役割を与えることが多いです。よくあるのが、データを保存するためのデータベースサーバー、複雑な計算なんかを行うアプリケーションサーバー、Webサイトを表示するためのWebサーバーの3階層にした構成ですね。

http://www.atmarkit.co.jp/fjava/special/ejb01/zu03.gif

 

Webアプリケーションにおけるサーバ・サイドJavaの効果的な利用

※WebサーバーとAPサーバーを同居させた2階層構成なんかもよくあります
このサーバー群を、自分で借りたデータセンター上に物理的に配置するのが大規模システムの常ですが、クラウドレンタルサーバーでは、自分でデータセンターを借りずに、複数サーバーからなるデータセンターを"仮想的に"構築できるという意味になるようです。

サービスの形態によっておすすめできる形式は異なる

長くなってきましたが、持っている予算や必要とする自由度によって、おすすめできる形態は異なります。
WordPressCMS付サイトを構築したいだけであれば、共有型のサービスで事足りるので、リーズナブルにサービスインが可能ですが、一瞬たりとも止まることが許されないようなシビアなシステムには不向きです。
自由度の高いシステムを構築するためには、求められる自由度や保守性に応じて占有サーバー、VPSクラウドサービスを使い分ける必要がありますが、この辺は求められる要件や予算によって良く吟味して使い分けが必要ですね。

その他のポイント

サーバーが故障した場合の保障や免責といった条件も気にしたいポイントですし、物理的な障害が起きた時の対策が取られているかといった条件も重要です。
この辺の話に踏み込んでいくのを目標に、勉強を続けたいと思います。