3秒でわかる
要求を受け取って応答を返し続ける役目のコンピュータやソフトウェア。Webサイトやアプリのデータを供給する側として常時動き続けます。
30秒図解
もう少し詳しく
どういうものか
サーバーは、他のコンピュータから届いた要求を受け取り、応答を返す側の役目を持つコンピュータやソフトウェアのことです。要求する側をクライアントと呼び、この二役の関係をクライアントサーバーモデルと言います。ブラウザにアドレスを打ち込むと、その裏で要求が飛び、サーバーが HTML を返しています。
特別な機械が必要なわけではありません。手元のパソコンでもプログラムを常駐させて特定の番号のポートで待ち受ければサーバーになります。役割の名前であって、機械の種類の名前ではありません。
用途で呼び分けもします。HTML や画像を返す Web サーバー、問い合わせに答えるデータベースサーバー、メールを配送するメールサーバーなどです。一台の機械の上でこれらが同時に動くこともあります。
なぜ必要か
データを一か所にまとめ、多数の利用者へ同じ内容を配るためです。各自のパソコンの中だけで完結するなら共有も同期もできません。会員情報や在庫のように、常に一つの正しい状態を保ちたいものは、常時動いている場所に置く必要があります。認証や決済のように利用者の手元で改ざんされては困る処理を担うのもサーバーの役目です。
具体例
Node.js なら十行で最小のサーバーが立ちます。
import http from "node:http";
const server = http.createServer((req, res) => {
if (req.url === "/health") {
res.writeHead(200, { "<a href="/glossary/content-type" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">Content-Type</a>": "text/plain" });
res.end("ok");
return;
}
res.writeHead(404);
res.end("not found");
});
server.listen(3000, () => console.log("listening on 3000"));listen で待ち受けを始め、要求が来るたびに渡した関数が呼ばれます。
つまずきやすいところ
自分のパソコンで動かしたサーバーは、そのままでは他の人から見えません。ローカルの待ち受けアドレスは外部に公開されておらず、公開するには外向きのアドレスとポートの開放、そして家庭内なら回線側の設定が要ります。
もう一つ、ターミナルを閉じるとプロセスが止まる点です。常時稼働させるには systemd などに登録し、再起動時にも自動で立ち上がるようにします。ポートが既に使われているという起動失敗も頻出で、前のプロセスが残っているだけのことがほとんどです。
覚え方
サーバーは「聞かれたら答える係」。答え続けるために止まらない、という一点で設計の大半が決まります。