独り言

プログラミングの講師をしています。新人研修で扱う技術の解説と個人の技術メモ、技術書の紹介など

【情報処理】サーバーの基本

ITの世界にはサーバーという言葉が頻繁に出てきますが、
サーバーって何ですか?と聞いて簡潔に答えられる人は意外と少ない気がします。
ここではサーバーについて解説します。

ちなみに、日本語の場合は本やサイトによって「サーバー」と書く場合と「サーバ」と書く場合があります。
書いている人の好み(と気分)なので、どちらでもよいのですが、
ここではサーバーとします。
英語ではServerと書きます。

サーバーとは

サーバーとは、教科書的な説明をするならば、サービスを提供するコンピュータのことです。
ただしそれだけではまだイメージがしにくい場合も多いかと思います。
もう少し具体的に言えば、依頼者(クライアント)からの要求(リクエスト)を受けたら、
その内容に応じて応答(レスポンス)をクライアントに返してあげるコンピュータです。

こう書くと、クライアントとかリクエストとはいったい何?
となるかもしれません。
これはサーバーの種類によって変わります。
ではサーバーの種類についてみていきます。

サーバーの種類

サーバーの種類の説明に入る前に、サーバーと聞くと物理的にでかくて高性能なコンピュータのことをイメージする人も多いかもしれません。
それも間違いではありません。
しかし、先ほど説明したようにサーバーとはリクエストに応じてレスポンスを返す役割を持つコンピュータのことなので、高性能なコンピュータのことを指すわけではないことに注意してください。
文脈にもよりますが、サーバーとは基本的にはソフトウェアのことを指します。
サーバーソフトウェアにも役割によって様々な種類がありますが、代表的なサーバーソフトウェアは例えば

等があります。
もちろんここで上げた例はごく一部です。
コンピュータの世界には様々なサーバーがあります。
簡単にそれぞれ解説します。

Webサーバー

Webサーバーはサーバーの中でもイメージがしやすいサーバーかもしれません。
なぜならインターネットを利用する上で欠かすことのできないサーバーだからです。
ブラウザを使ってインターネットを閲覧するとき、必ず何かしらのURLがあることはご存知かと思います。
Webサーバーは、URLをリクエストとして受け取り、そのURLに対するWebページを返す役割を持つサーバーです。
クライアントはWebブラウザになります。
URLを受け取ると、それに合わせてHTMLファイルや画像ファイルなど、 対象となるWebページを構成するリソース(資源)をレスポンスとして返します。 Webサーバーの場合、Webブラウザがクライアントとなります。 厳密にはWebサーバーに送られるリクエストはHTTPリクエストと呼ばれ、URL以外の情報もあります。
また、レスポンスはHTTPレスポンスと呼ばれ、リソース以外の情報もありますが、ここでは分かりやすさを優先しています。
まずはURLを受け取ってそれに対応したWebページを返すサーバーと思っても良いかと思います。

代表的なWebサーバーの製品は

等があります。

APサーバー

APサーバー(アプリケーションサーバー)はプログラムを動かすためのサーバーです。
静的Webサイト(あらかじめ決められた情報を見るだけのWebサイト)を作成するのであれば、Webサーバーがあれば機能します。
しかし、ユーザーの情報を登録したり、データを検索したりなどの機能を持ったWebアプリケーションを作成する場合は、HTMLやCSSだけで作成することはできません。
プログラムを作成して、リクエストによって動的にWebページを作成する機能が必要です。

リクエストに応じてプログラムを動作させたり、動的にWebページを作成してくれる機能を持つサーバーがAPサーバーです。
Webサーバーとしての機能も兼ね備えているAPサーバーもあります。

例えば、学校のホームページ、企業のホームページなどは見る人によって表示が変わったりしませんし、ログインして何かの機能を利用するといった場面もあまりないと思います。
そういった場合は静的Webサイトになるので、Webサーバーで対応することができます。
しかし、SNSECサイトを利用する場合は、ユーザーのログインが必要になり、ユーザーごとに表示される内容が異なります。
このようなサービスを提供する場合にはAPサーバーが必要になります。

代表的なAPサーバーは

等があります。

DBサーバー

DBサーバーは、データベースを扱うサーバーです。
データベースとはデータを管理するためのシステムです。
例えばSNSを利用する場合、ユーザーのデータや各ユーザーが投稿したデータがどこかに保持されている必要があります。
ECサイトの場合、ユーザーのデータ、商品のデータ、ユーザーの購入履歴のデータなどを保持しておく必要があります。
このようなデータを保持しながら、プログラムで扱いやすいように管理してくれるのがデータベースです。
現在はデータベースにも様々な種類がありますが、最も広く使用されているのはRDB(リレーショナルデータベース)と呼ばれる、表形式でデータを保持するDBサーバーです。
RDBサーバーではSQLと呼ばれる、データベースを操作するための言語があるのですが、SQLで操作したいことを記述してDBサーバーに送信すると、見たいデータや操作の結果などを返してくれます。

代表的なDBサーバーは

等があります。

メールサーバー

メールサーバーは、メールの送受信に関する機能を提供してくれるサーバーです。
厳密には受信と送信で別々のサーバーになる場合もありますが、ひとまずメールの機能を提供するサーバーと思って良いでしょう。
クライアントはメーラーと呼ばれる、メールを扱うソフトウェアです。
例えば、OutLook, Thunderbard, G-mailなどがメーラーになります。

DNSサーバー

DNSはDomain Name Systemの略です。
詳細は割愛しますが、簡単に説明すると、ドメイン名とIPアドレスの対応付けを行ってくれるサーバーです。
インターネットを利用するとき、Webページを特定するのにURLを使用します。
しかし、ネットワーク上のコンピュータは内部的にはIPアドレスと呼ばれる数値で管理されています。
この数値と、URLで指定されているwww.xxxxx.co.jpのような文字列(ドメイン)の対応付けを行ってくれるサーバーです。

サーバー用のOS

コンピュータを使うときは、ほとんどの場合何かしらのOSが入っています。
PCの場合は、WindowsMac OSスマホの場合はAndroidiOSなどを使用している場合がほとんどでしょう。
サーバーもPCやスマホと同様に様々なソフトウェア動かすためのコンピュータで、同じようにOSが必要です。
サーバー用のOSはいくつかありますが、メジャーなものはLinuxWindows Serverなどです。
Windows ServerはMicrosoftが提供しているサーバー用のOSです。
LinuxオープンソースのOSで、多くのWebサービスのサーバーOSとして利用されています。

サーバー用のハードウェア

サーバーと聞くと高機能のコンピュータをイメージする場合が多いというのは先述しました。
しかしここまでで説明したようにサーバーはソフトウェアの機能である場合が多いです。
サーバー用のソフトウェアは無償でインストールして利用することができるものも多いです。
そのため、普段使用しているような普通のノートPCでもサーバー用のソフトウェアはインストール可能です。
そしてサーバー用のソフトウェアをインストールすればそのコンピュータはサーバーとして機能します。

ではなぜ大きくて高性能なコンピュータが使用されるのでしょうか。
何故かというと、サーバーというのは、いつでも稼働している必要があるので、基本的に電源を落とせません。
また、サーバーが停止してしまうと、サービスの内容によっては大きな影響が出てしまう可能性があります。
そのため、物理的に障害が発生しにくい、または発生しても何らかの対処ができる状況が必要です。
また、多くの人が利用するサービスの場合は、それに耐え得る性能が必要です。
なので結果的にサーバーの環境となるハードウェアは物理的に優れたものを用意するのです。