第4部 サーバーと運用
第12章 サーバーの仕組み — Web・DB・その役割
Webサイトを開く、社内システムにログインする、メールを送る——その裏では必ず「サーバー」がリクエストに応えています。第3部で学んだネットワークの上で、実際にサービスを提供している側が何者なのか。ここからは、その正体と役割を解きほぐしていきます。仕組みが分かれば、あなたが毎日触っている業務システムの全体像が一気に見通せるようになります。
🎯 この章で学ぶこと
- 「サーバー」とは何か。クライアント・サーバーモデルの考え方
- 業務用サーバーが普通のPCと違う点(冗長電源・ECCメモリ・RAID)
- Webサーバー・DBサーバーなど、用途ごとのサーバーの役割
- Webサーバーがリクエストを受けてページを返すまでの流れ
- 3層アーキテクチャという、多くの業務システムの標準構成
- サーバーが「どこにあるのか」——オンプレミスとクラウドのさわり
12.1 サーバーとは「サービスを提供する側」
サーバー(server)とは、その名のとおり「何かをサーブする(提供する)側」のコンピュータです。対して、そのサービスを利用する側をクライアント(client)と呼びます。あなたがブラウザ(クライアント)で https://example.com を開くと、そのアドレスの先にいるWebサーバーがページのデータを返してくれる——この「頼む側」と「応える側」の関係をクライアント・サーバーモデルといいます。
ポイントは、サーバーは特別な魔法の箱ではなく、「サービスを提供するソフトウェアが動いているコンピュータ」にすぎないということです。あなたのノートPCにWebサーバーソフトを入れて起動すれば、そのPCも立派なWebサーバーになります。逆に言えば、「サーバー」という言葉は、ハードウェアを指すこともあれば、その上で動くソフト(Webサーバー、DBサーバー)を指すこともあります。文脈で読み分けましょう。
現場では「そのサーバー、再起動していい?」(=物理マシンやOS)と「Webサーバーが落ちてる」(=Apacheなどのソフト)が同じ「サーバー」という言葉で飛び交います。1台のハードウェアの上で、Webサーバーソフトとメールサーバーソフトが同時に動く、ということもよくあります。「今どちらの意味で話しているか」を意識すると、障害対応(第14章)の会話がぐっと正確になります。
24時間動き続ける前提 — 普通のPCとの違い
技術的には普通のPCでもサーバーになれますが、業務で使うサーバー専用機は、普通のPCとは設計思想が違います。最大の違いは「止まらないこと(可用性)」を最優先する点です。個人のPCは夜に電源を切って構いませんが、社内の勤怠システムや顧客向けサイトのサーバーは、基本的に24時間365日動き続ける前提で作られます。そのため、次のような「壊れても止まらない工夫」が盛り込まれています。
| 仕組み | 何をするか | なぜ必要か |
|---|---|---|
| 冗長電源 | 電源ユニットを2台積み、片方が壊れてももう片方で動く | 電源は壊れやすい部品。1台なら電源故障で全停止する |
| ECCメモリ | メモリ上のデータの誤りを検出・訂正する特殊なメモリ | 長時間・大量のデータ処理で起きる微小なビット化けを防ぐ |
| RAID | 複数のディスクに同じデータを分散・複製して持つ | ディスク1台が壊れてもデータを失わず、動作も止めない |
| ホットスワップ | 電源を入れたまま故障部品(ディスク等)を交換できる | 修理のためにサービスを止めなくて済む |
第1章で「ハードウェアは必ずいつか壊れる物理資産」だと学びました。サーバーはその前提を正面から受け止め、「部品が1つ壊れてもサービスは止めない」ように、あらかじめ二重化(冗長化)して備えているのです。この考え方は本章と第14章を貫く柱になります。
RAIDはディスク故障に強い仕組みですが、バックアップの代わりにはなりません。RAIDが守るのは「ディスクが物理的に壊れたとき」だけです。誤ってファイルを削除した、ウイルスで暗号化された、という場合は、その「間違い」まで正確に全ディスクへ複製してしまいます。RAIDは可用性(止めない)のための仕組み、バックアップは復元のための仕組み——役割が違います。バックアップについては第14章と、一人情シスコース第6章(3-2-1ルール)で詳しく扱います。
12.2 用途で分かれるサーバーの種類
サーバーは「どんなサービスを提供するか」によって呼び名が変わります。実体は「特定の役割を持つソフトが動いているコンピュータ」ですが、役割ごとに名前を覚えておくと、システム構成図がすらすら読めるようになります。IT部門でよく登場する代表的なサーバーを一覧にします。
| サーバーの種類 | 役割 | 代表的なソフト・プロトコル |
|---|---|---|
| Webサーバー | ブラウザの要求に応じてWebページを返す | Apache、Nginx / HTTP・HTTPS |
| アプリケーションサーバー | プログラム(業務ロジック)を実行する | Tomcat、各種アプリ実行環境 |
| データベース(DB)サーバー | データを保管し、問い合わせに答える | MySQL、PostgreSQL / SQL |
| ファイルサーバー | ファイルを共有・保管する(社内の共有フォルダ) | Windowsファイル共有(SMB)、NFS |
| メールサーバー | メールの送受信と保管を担う | SMTP(送信)、IMAP/POP(受信) |
| DNSサーバー | ドメイン名をIPアドレスに変換する(名前解決) | DNS(第10章) |
| 認証サーバー | ユーザーのログインを一元的に検証・管理する | Active Directory、LDAP |
| プロキシサーバー | クライアントの代理で外部と通信する(中継・フィルタ) | Squid など |
第11章で学んだHTTP・SMTP・IMAP・SSH、第10章のDNSは、まさにこれらのサーバーが「話す言葉(プロトコル)」でした。ネットワークの知識とサーバーの知識は、こうしてつながっています。1台の物理サーバーが複数の役割を兼ねることもありますが、規模が大きくなるほど「役割ごとに分ける」のが定石です(理由は12.5で説明します)。
12.3 Webサーバーの仕組み
もっとも身近なWebサーバーから、その動きを追ってみましょう。Webサーバーの仕事を一言でいうと、「ブラウザからのリクエストを受け取り、対応するコンテンツを返す」ことです。第11章のHTTPの上で動きます。あなたがページを開いたとき、内部では次のことが起きています。
- ブラウザがサーバーのポート80(HTTP)または443(HTTPS)へ接続する
- ブラウザが「このページをください」というリクエストを送る(例:
GET /index.html) - Webサーバーが該当するコンテンツを用意する
- サーバーがレスポンスとしてHTMLなどのデータを返す
- ブラウザが受け取ったHTMLを解釈し、画面に描画する
実際のやり取りを覗いてみましょう。curl コマンド(第11章)を使うと、ブラウザの裏側で交わされている生のHTTP通信が見えます。
$ curl -I https://example.com
HTTP/2 200
content-type: text/html; charset=UTF-8
server: nginx
content-length: 1256
...
先頭の HTTP/2 200 が、サーバーからの返事です。200 は「正常に応えられました」を意味するステータスコード(第11章)。server: nginx の行から、このサイトがNginxというWebサーバーソフトで動いていることまで分かります。
静的コンテンツと動的コンテンツ
Webサーバーが返すコンテンツには、2種類あります。この区別は運用でとても重要です。
| 静的コンテンツ | 動的コンテンツ | |
|---|---|---|
| 中身 | あらかじめ用意された固定のファイル | アクセスのたびにプログラムが生成する |
| 例 | 会社案内のHTML、画像、CSS | ログイン後のマイページ、検索結果、在庫数 |
| 誰が作る | Webサーバーがファイルをそのまま返す | アプリケーションサーバーがその都度作る |
| 特徴 | 速い・軽い・誰が見ても同じ | 人やタイミングで内容が変わる |
「会社案内ページ」は誰が見ても同じなので静的で十分です。一方、「あなたの注文履歴」は人によって中身が違うので、動的に作る必要があります。動的コンテンツを作るときは、Webサーバーが単独で処理するのではなく、次に説明するアプリケーションサーバーとデータベースサーバーに仕事を回します。
代表的なWebサーバーソフト
Webサーバーソフトの二大巨頭がApache(アパッチ)とNginx(エンジンエックス)です。どちらも無料で使え、世界中のサイトを支えています。ざっくり言うと、Apacheは歴史が長く柔軟な設定が得意、Nginxは大量の同時アクセスを軽くさばくのが得意、という個性があります。名前を覚えておけば、サーバーのレスポンスやログを見たときに「ああ、これはNginxで動いているな」と当たりが付けられます。
12.4 データベースサーバー — データの番人
Webサーバーがページの「見た目」を返す担当なら、データベース(DB)サーバーは「中身のデータ」を保管し、問い合わせに答える担当です。顧客情報、注文履歴、在庫数、社員名簿——業務システムの価値ある情報は、ほぼすべてDBサーバーの中に蓄えられています。
もっとも広く使われているのがリレーショナルデータベース(RDB)で、データを表(テーブル)の形——行と列——で管理します。Excelの表をイメージすると分かりやすいでしょう。このデータベースに問い合わせるための専用言語がSQL(エスキューエル)です。入門コース第10章で学んだSQLは、まさにこのDBサーバーと会話するための言葉でした。
-- 「東京在住の顧客の名前を取り出す」という問い合わせ
SELECT name FROM customers WHERE city = '東京';
WebサーバーやアプリケーションサーバーがこのようなSQLをDBサーバーに送ると、DBサーバーは膨大なデータの中から該当する行を高速に探し出して返します。代表的なRDBのソフトがMySQL(マイエスキューエル)とPostgreSQL(ポストグレスキューエル)で、どちらも無料で使え、業務システムで広く採用されています。
表の形にきっちり収まらないデータ(大量のログ、SNSの投稿、キャッシュなど)を扱うために、表にこだわらないNoSQLと総称されるデータベースもあります(Redis、MongoDB など)。ただし業務システムの中心はいまも圧倒的にRDBです。まずは「データベース=表とSQL」というイメージをしっかり持っておけば十分です。
Webサーバーが壊れても、同じソフトを入れ直せば復旧できます。しかしDBサーバーの中のデータが失われたら、二度と戻りません。顧客情報や取引記録は、会社にとって代えのきかない財産です。だからこそDBサーバーは、とりわけ厳重にバックアップし、アクセス権限を絞ります(第14章、セキュリティコース)。「一番大事なのはデータ」——この優先順位を、運用者は常に忘れてはいけません。
12.5 3層アーキテクチャ — 役割分担の定番
ここまで登場したWebサーバー、アプリケーションサーバー、DBサーバー。多くの業務システムは、この3つを層(そう)として分けて組み合わせます。これを3層アーキテクチャ(3-tier architecture)といい、Webシステムの定番構成です。
| 層 | 担当 | 役割 |
|---|---|---|
| Web層(プレゼンテーション層) | Webサーバー | ブラウザとやり取りし、見た目(HTML)を返す |
| アプリ層(ロジック層) | アプリケーションサーバー | 業務の処理・計算・判断を行う |
| データ層 | DBサーバー | データを保管し、問い合わせに答える |
たとえば「ネット通販で商品を注文する」流れを、この3層で追ってみましょう。
- Web層: ブラウザからの「注文ボタンが押された」というリクエストを受け取る
- アプリ層: 在庫があるか、支払い方法は正しいかを判断し、注文処理を組み立てる
- データ層: 在庫数を1つ減らし、注文情報をデータベースに記録する
- 結果が逆の順で返り、Web層が「ご注文ありがとうございました」のページを表示する
なぜわざわざ分けるのでしょうか。理由は役割分担によるメリットにあります。
- スケール(増強)しやすい — アクセスが増えて重いのがWeb層だけなら、Webサーバーだけを増やせばよい。全部を増やす必要がない
- 障害の切り分けがしやすい — 「見た目は出るが注文できない」ならアプリ層かデータ層、と原因を絞り込める(第14章)
- 安全性を高めやすい — 一番大事なDB層を、外部から直接触れない奥まった位置に置ける
アクセスが集中してWebサーバー1台では処理しきれないとき、同じWebサーバーを複数台並べ、その手前にロードバランサという交通整理役を置きます。ロードバランサが「あなたは1号機、次の人は2号機」とアクセスを振り分けることで、負荷を分散し、1台が落ちても残りで受け続けられます。これも3層のように「役割を分けて並べる」冗長化の一種で、可用性を支える基本テクニックです。
12.6 サーバーはどこにあるのか?
最後に、素朴だけれど大切な疑問です。これらのサーバーは、物理的にどこにあるのでしょうか。大きく分けて2つの置き方があります。
| オンプレミス | クラウド | |
|---|---|---|
| 意味 | 自社でサーバー機を買って持つ | 他社のサーバーを借りて使う |
| 置き場所 | 自社のサーバー室、データセンター | クラウド事業者のデータセンター |
| 費用 | 買い切り(初期投資が大きい) | 使った分だけ(従量課金) |
| 管理 | ハードもすべて自分で面倒を見る | ハードの管理は事業者に任せられる |
従来は、会社の一室に「サーバー室」を作り、そこに機器を並べるオンプレミス(自社保有)が主流でした。より本格的には、専用の建物であるデータセンターに機器を預けます。データセンターは、停電しない電源、強力な空調、耐震・防火・入退室管理を備えた、サーバーのための要塞のような施設です。
サーバー機は、データセンターの中でラックと呼ばれる標準サイズの棚に、薄い箱型の本体を何段も差し込んで収納されます。1つのラックに何十台ものサーバーが整然と並ぶ様子は、サーバー運用の原風景です。
そして近年、この「サーバーを持つ・置く」という発想を根本から変えたのがクラウドです。自前でハードを買わず、必要なときに必要なだけ借りる。仮想化・コンテナ・クラウドがどんな仕組みでこれを可能にしているのかは、次の第13章でじっくり見ていきます。
サーバーは価値あるデータとサービスの集積地であり、それゆえ攻撃者にとって最大の狙い所です。仕組みの理解を、そのまま守りの実務に落とし込みましょう。基本は次の3点です。
(1) 不要なサービス・ポートを閉じる。 サーバーで動いているサービスは、それぞれポート(第9・11章)を開いて外部からの接続を待ち受けています。使っていないサービスが動いていると、そのぶん攻撃の入り口(攻撃対象領域)が増えます。「そのサーバーで本当に必要なポートだけを開ける」——これがサーバー堅牢化(ハードニング)の第一歩です。稼働中のポートは第14章で ss コマンドなどで確認します。
(2) パッチを適用し続ける。 Apache、MySQL、OSそのものには、日々新たな脆弱性が見つかります。修正プログラム(パッチ)を当てずに放置したサーバーは、公開された脆弱性を狙われて侵入されます。「動いているから触らない」は、セキュリティの観点では最も危険な姿勢です。パッチ運用は第14章とセキュリティ中級・上級コースで扱います。
(3) 冗長化は可用性(CIAのA)を守る。 RAIDや冗長電源、ロードバランサによる多重化は、単なる故障対策ではなく、情報セキュリティの三要素(機密性・完全性・可用性)のうち「可用性=必要なときに使えること」を守る取り組みです。サービスを止めないこと自体が、立派なセキュリティ目標なのです。
まとめ
- サーバーは「サービスを提供する側」。頼む側のクライアントと対になる(クライアント・サーバーモデル)
- 業務用サーバーは24時間稼働が前提。冗長電源・ECCメモリ・RAIDで「壊れても止まらない」よう備える
- Web・DB・ファイル・メール・DNS・認証など、役割ごとにサーバーの種類が分かれる
- Webサーバーはポート80/443でリクエストを受け、静的または動的なコンテンツを返す(Apache/Nginx)
- DBサーバーはデータを表で保管しSQLに答える。会社の代えのきかない資産(MySQL/PostgreSQL)
- 多くの業務システムはWeb層・アプリ層・データ層の3層アーキテクチャで役割分担する
- サーバーはオンプレミス(自社保有)かクラウド(借りる)に置かれる。詳細は第13章へ
練習問題
後輩から「うちのサーバー、ディスクをRAIDで二重化しているから、バックアップはいらないですよね?」と聞かれました。この考えのどこが危ういか、RAIDとバックアップの役割の違いを踏まえて説明してください。
解答を見る
危ういです。RAIDが守るのはディスクが物理的に壊れたときだけで、可用性(サービスを止めない)を高める仕組みです。一方、ファイルの誤削除、ウイルスによる暗号化、誤った上書きといった「操作やデータそのものの事故」に対しては、RAIDはその間違いまで正確に全ディスクへ複製してしまうため、まったく無力です。これらから復旧するにはバックアップが必要です。RAID(止めないための仕組み)とバックアップ(元に戻すための仕組み)は役割が異なり、両方をそろえて初めてデータを守れます。詳しくは第14章と一人情シスコース第6章(3-2-1ルール)を参照。
あるネット通販サイトで「トップページや商品一覧は普通に表示されるのに、ログイン後のマイページだけがエラーになる」という障害が起きました。3層アーキテクチャの考え方を使って、どの層に問題がありそうか、切り分けの見立てを述べてください。
解答を見る
トップページや商品一覧などの静的に近いコンテンツはWeb層から正常に返せているので、Web層は生きている可能性が高いです。一方、マイページは利用者ごとにデータベースから注文履歴などを取り出して作る動的コンテンツです。そこだけが失敗するということは、アプリ層(業務処理)またはデータ層(DBサーバーへの接続や問い合わせ)に問題がある、と見立てられます。具体的には「アプリサーバーがDBに接続できていない」「DBサーバーが高負荷・停止している」などを疑い、アプリ層とデータ層のログ(第14章)を確認していくのが妥当な切り分けです。このように層で分けて考えると、原因を素早く絞り込めます。
「サーバー専用機は、性能の高いゲーミングPCを買えば代わりになるのでは?」という意見に対して、業務用サーバーが重視している点を挙げて、あなたの考えを説明してください。
解答を見る
一時的な処理速度だけなら高性能PCでも代用できますが、業務用サーバーが本当に重視しているのは「止まらないこと(可用性)」と「データの信頼性」です。具体的には、冗長電源(電源が1台壊れても動き続ける)、ECCメモリ(長時間・大量処理でのデータ化けを訂正する)、RAID(ディスク故障でもデータを失わず止まらない)、ホットスワップ(止めずに部品交換できる)といった、24時間365日動き続けるための設計が盛り込まれています。ゲーミングPCは速くても、電源やディスクが1つ壊れれば止まってしまいます。「速さ」ではなく「壊れても止まらない設計」こそが、業務用サーバーの本質だと説明できます。