サーバーとは?仕組みや種類、選び方を初心者に分かりやすく解説
WEBサイトを構築する際に利用するサーバー。
なんとなく理解しているけど結局のところ何?と思っている方も多いかと思います。
今回はサーバーに関して解説致します。
サーバーの種類
サーバーの種類は、大きく2種類ございます。実施する要件によって、適したサーバーを選びます。
レンタルサーバー(共有タイプ)
1台の物理サーバーを複数のユーザーで共有する場合で利用します。
例)さくらレンタルサーバーなど
クラウド
仮想サーバーをユーザーごとに割り当てて利用できるサーバーのことを指します。
柔軟な対応が必要な場合に適しています。
例)AWSクラウドなど
レンタルサーバーの利点・欠点
レンタルサーバーの利点・欠点は以下の通りです。
利点
・利用の要件が仕様の範囲内であれば、最も安価に簡単に利用できる。
欠点
・1つのOSやリソースを複数で共有しているため、他のユーザーの影響を受けやすい。
例えば、あるユーザーが利用している場合、他のユーザのアクセスに時間がかかる場合がございます。
・サービスの仕様が決まっており、ユーザー(管理者)権限は保持していないので、ユーザーカスタマイズはできない。例えばアプリを入れたい場合でもインストールできなかったり、処理時間に制限がかかっている場合がある。
クラウドの利点・欠点
クラウドを利用する際の利点・欠点は以下の通りです。
利点
・OSやメモリー・ディスク領域など、時間単位で利用ができ、容易に増減することが可能。
・ルート(管理)権限を持つことができるので、カスタマイズ性も高い。
欠点
・柔軟性が高いため、サーバの構築の難易度が高く費用も高い。
・初期費用がかからなく、従量課金のサービスが多い。
データ量が多いサイトの場合、思ったより料金がかかるケースがある。
サーバーの設定
サーバーの設定方法は以下3種類あります。
レンタルサーバー(共有タイプ)の場合
メールサーバー、WEBサーバー、DBサーバーが標準装備されている。
簡単に設定できるが機能が限られる
イメージ)借家+家具架電付
標準装備されているものの利用が基本となり、カスタマイズする範囲が制限されている
クラウドの場合
あらゆるユースケースに対応しており、オプションメニューが豊富で拡張性がある。
反面、サービスの選定や設定が複雑になるケースも。
イメージ)持ち家+高機能な家具架電カタログ付
VPSの場合
安価で1つのサーバーで色々なサイトを運営する場合に適している。
サーバーを借りれるが、自分が使いたいツールをサーバーにインストールする必要がある。
自分に都合の良いプログラミング言語をインストールできるが、設定は自分で行う。
Pleskの場合はコマンド操作なしに、構築可能です。
イメージ)持ち家+家具架電は自分で選定し設置と管理
サーバーの環境の違い
サーバー環境には3種類あります。費用算出の際に注意が必要となる事項です。
理想の状態は本番環境・検証環境・開発環境の3種類全てが揃っている状態です。
本番環境(production)
サービスインしているエンドユーザーが利用する環境。
git-flowならmasterブランチが対応
検証環境(staging)
本番リリース前の動作検証を行う場所。
git-flowならdevelopブランチが対応。
ほとんど本番に近い環境だが、サーバースペックは落としてあったり、外部API接続がテスト環境に繋がっていたりと本番環境とは異なる。
開発環境(development)
開発中の機能を見てもらう時などに使う場所。
git-flowならfeatureブランチが対応。外部のアプリケーションと連携が必要がない場合に利用。
検証サーバーでは費用がかかるため、費用を押さえたい場合は開発環境で構築するケースが多い。
サーバーの構成のポイント
サーバーの構成要素には重要なポイントが4つあります。
可用性(availavility)
システムが使用できる状態を維持し続ける能力
サーバーを複数台にして、一台が止まってもサービスを続けれようにする。冗長化ともいう。
負荷分散(load balancing)
本番環境に負荷がかからないようにする必要があるため、並列に運用されているサーバー間で、負荷がなるべく均等になるように処理を分散して割り当てること
拡張性(scalability)
将来の負荷増大に備えてシステムの性能を向上させる余地のこと。
方法としては以下3種類があります。
・スケールアップ
1つのサーバーのCPUやメモリーなどをスペックアップすること。
・スケールアウト
台数を増やして性能を高めること。
・オートスケール
負荷のしきい値をあらかじめ設定することで、しきい値に達した際に自動的に台数やスペックを増減させる機能
(クラウドの場合が多い)
セキュリティ(WAFなど)
個人情報の入力がある際はWAFを入れることをおすすめ致します。
WEBサイトの構成機能
サーバーの構成機能は以下の4種類です。
DNSサーバー
ドメイン名の名前解決(IPアドレスをドメインに変換)を行うサーバー
レジストラの提供するDNSサーバーを利用することがほとんど
Webサーバー
HTTP・HTTPSプロトコルを使用し、ブラウザに対しHTMLやオブジェクト(画像)の表示を提供するサーバー
例)Apache,nginx
DBサーバー
RDBMS、平たく言うとSQLでデータを格納、取得できるようにするサーバー
例)MySQL(MariaDB,Amazon Aurora)、PostgreSQL、Oracleなど
オブジェクトDBやkey-valueストアなども広くはこちらに属する
例)MongoDB、Redis、memcached
メールサーバー
SMTPを使用して、メールを送受信するサーバー
例)postfix、qmail
サーバーに関してのお客様の要求と現実
サーバーを構築する際、要望通り組み立てることが理想だが、実際は理想とギャップがあります。
以下の項目に注意することが必要となります。
よくある要求(優先度順)
1.データーが無くなってしまう(データロスト)すると非常に困る
2.サーバーが落ちない、トラブルが無い
3.サーバーにアクセスが集中しても大丈夫
4.長く同じサーバーを使いたい
現実
実情は以下です。
・インターネットに接続している機器に「絶対」はない
・人間の操作が常に「完璧」であることはない
・アクセス数、システム負荷の事前予測は極めて困難
・ハードもソフトもやがて陳腐化する
構築の際に確認する事項
サーバーを構築する際は以下の事項を合わせて確認すると、トラブルが少ない構築が可能となります。
・個人情報を扱うか
・アクセス数はどのくらいか
・容量はどのくらいか(動画はあるか、画像は何点載せるか)
サーバーの信頼性と費用感
サーバーの費用感は信頼性に比例して高くなります。
その為、実施したいことと予算のバランスを考慮して、どこかのポイントで折り合いをつける必要があります。
サーバーの信頼性を表す指標
サーバーの信頼性を表す指標は以下の通りです。
稼働率
・MTBF(平均故障間隔):動いていた時間
・MTTR(平均修理時間):ようするに止まっていた時間
•稼働率 =MTBF/(MTBF+MTTR) →全体の時間お家動いていた時間の割合
SLA(Service Level Agreement)
・サービスの品質保証。サーバーの場合は稼働率の保証を指します。
・SLA=99.99%を保証する場合、1年間(8760時間)のうち0.01%=5分程度の停止しか許されないということ
※AWSの場合、構成内容によって割合が変動します。選定の際に注意が必要です。
EC2 一台構成(99.50%)EC2二台構成(99.99…%)S3一台構成(99.99…%)
※SLAの割合によって費用感が変動する為、契約の際は注意が必要です。
Request per Second
・そのWebサーバーが1秒あたりに処理可能なブラウザでのアクセス(リクエスト)数のこと
・キャンペーンサイトの場合 5万~1万req/sec