第1章: はじめに
目的
本章では、本ドキュメントの目的と読み方をやさしく説明します。WebサーバーとDBサーバーは、私たちが普段使うWebサイトやアプリの裏側で連携して動いています。本書はその違いや役割、連携方法を具体例を交えて分かりやすく解説します。
誰に向けた内容か
ITの専門家でなくても理解できるように書きました。システム設計や運用をこれから学ぶ人、業務で用語を押さえておきたい人に適しています。技術用語は最小限にし、実際のイメージが湧く例を使います。
本書の構成と読み方
全7章で、まず基本の役割を押さえ、その後に両者の違いと連携、3階層システムでの位置づけ、関連する他のサーバーとの違い、最後に構築・運用のポイントを解説します。章ごとに順に読めば理解が深まりますが、特に知りたい章だけ参照しても役に立つようにしています。
次章からは、まずWebサーバーの役割について具体的に見ていきます。
Webサーバーとは
概要
Webサーバーは、ユーザーのブラウザから届くHTTPリクエストを受け取り、Webページや画像などのファイルを返す役割を持ちます。たとえば、ブラウザでURLを入力すると、その要求に対してHTMLやCSS、画像を配信して画面に表示します。フロントエンドの見た目を担当する部分です。
主な機能
- 静的コンテンツ配信:HTML・画像・CSS・JavaScriptをそのまま返します。
- 動的処理の仲介:PHPやNode.jsなどのアプリケーションに処理を渡し、結果を返します。
- ログ記録とアクセス制御:アクセス履歴を残し、アクセス制限や認証を行います。
動作の流れ(簡単な例)
1) ブラウザがURLでリクエストを送る
2) Webサーバーが受け取り、該当ファイルを探す
3) 静的なら直接返し、動的ならアプリに処理を依頼して返す
代表的なソフト
Apache、Nginx、Microsoft IISなどがあります。用途や性能、設定のしやすさで選ばれます。
運用で気を付ける点
ポート番号(通常80/443)の管理、SSLでの暗号化、キャッシュや負荷分散の設定、ログ監視が重要です。安全で速い表示を心がけましょう。
DBサーバー(データベースサーバー)とは
概要
DBサーバーは、Webサイトやアプリで使うデータを保存・管理する専用のサーバーです。会員情報や商品データ、投稿やログなどを安全に扱います。ユーザーからは見えませんが、Webサーバーやアプリケーションサーバーが求めるデータを返します。
主な役割
- データの保存・検索・更新・削除を行います。
- トランザクションで整合性を保ちます(例:同時に残高を変更しても矛盾が起きないようにする)。
- 定期的なバックアップと復元で障害に備えます。
具体的な機能(わかりやすく)
- インデックス:検索を速くします。電話帳で名前順に並べるイメージです。
- クエリ(検索命令):条件に合うデータだけ取り出します。SQLという言葉をよく使いますが、操作のための“指示”と考えてください。
- ロックとトランザクション:同時作業でもデータが壊れないようにします。
利用例
- ECサイト:商品情報や注文履歴を管理します。
- 会員制サービス:ログイン情報やプロフィールを保持します。
運用で気を付けること
- 性能:読み書きが多い場合は高速なディスクやメモリを用意します。
- バックアップ:定期的に取り、復元手順を確認します。
- セキュリティ:アクセス制限や通信の暗号化を行います。
- 冗長化:サーバー障害時に備えてレプリケーションを行うと可用性が上がります。
初心者でも、DBサーバーは“データの金庫”と考えると理解しやすいです。
両者の違いと連携
役割の違い
Webサーバーは利用者からのリクエストを受け取り、画面表示に必要なファイルや生成したページを返します。具体例では、製品一覧ページのHTMLや画像、CSSを配信します。DBサーバーは顧客情報や注文履歴などのデータを保存・検索・更新します。例えば「顧客の住所を探す」「商品在庫を減らす」といった処理を担います。
ユーザー視点の違い
ユーザーはWebサーバーが作る画面を直接見て操作します。一方、DBサーバーのやりとりは目に見えません。ログインや検索で結果が変わるとき、裏側でDBサーバーが動いているとイメージしてください。
連携の具体例(検索リクエスト)
- ユーザーが検索フォームでキーワードを入力して送信します。
- Webサーバーがリクエストを受け、該当処理を起動します。
- WebサーバーはDBサーバーへ問い合わせ(例:在庫テーブルを検索)を行います。
- DBサーバーが該当データを返します。
- WebサーバーがデータをHTMLやJSONに整形してユーザーに返します。
通信方法と注意点
サーバー間はネットワーク経由で通信します。セキュリティのため接続を限定したり、暗号化(例:TLS)を使います。負荷対策としてはキャッシュを用いたり、DB接続を効率化する接続プールを使うと良いです。また、長い応答時間はユーザー体験を損ねるので、クエリの最適化やインデックス設計が重要です。
安全性と運用面
データの更新や参照では認証・権限管理を徹底してください。SQLのような命令をそのまま受け渡さないために、準備された文(プリペアドステートメント)や入力検証を行います。バックアップや監視も日常的に行うことで、障害時の復旧を早められます。
3階層(3層)システムの構成
概要
現代のWebシステムは、プレゼンテーション層(Webサーバー)、ビジネスロジック層(アプリケーションサーバー)、データ層(DBサーバー)の3つに分けて構築します。各層を分離すると、負荷分散や保守性が向上し、役割ごとに最適化できます。
3層の役割(具体例)
- Webサーバー:ブラウザからの要求を受け付け、静的ファイルを返します。例:Nginx。負荷が高い場合は複数台で負荷分散します。
- アプリケーションサーバー:業務ロジックを実行します。例:Node.js、Tomcat、Ruby on Rails。ここで認証やデータ加工を行います。
- DBサーバー:データを永続化します。例:MySQL、PostgreSQL。読み書きの整合性やバックアップを担います。
具体的な構成例
- ロードバランサー(L4/L7)→複数のWebサーバー
- Webサーバー→複数のアプリサーバー(APIや業務処理)
- アプリサーバー→マスターDB(書き込み)/レプリカDB(読み取り)
- キャッシュ層(Redis等)をアプリとDBの間に置き、応答を高速化します。
導入のメリット
- 負荷を各層で分散しやすく、スケールが容易です。
- 層ごとに技術選定や更新を分離でき、保守が楽になります。
- 障害発生時に影響範囲を限定できます。
運用上の注意点
- ネットワークやファイアウォールで層間のアクセスを制限します。
- セッション管理はアプリ単体に頼らず、共有ストアやトークンを使います。
- レプリケーションやバックアップでデータ整合性を確保します。
- 監視とログ収集でボトルネックを早期発見します。
以上が3層構成の基本と実践で気を付ける点です。用途や負荷に応じて柔軟に設計してください。
その他の関連サーバーとの違い
概要
ここでは、ファイルサーバーやストレージ装置、その他の関連サーバー(キャッシュ、メール、アプリケーションなど)とDBサーバーの違いを分かりやすく説明します。
ファイルサーバーとの違い
ファイルサーバーは文書や画像などを“ファイル単位”で保存・共有します。たとえば社内の共有フォルダや写真の保存が典型例です。
一方、DBサーバーは名前や日付、数値などを列(カラム)と行(レコード)で整理して扱います。検索や集計を高速に行うための仕組み(インデックスやトランザクション)を持ち、同時アクセス時の整合性を保ちます。
ストレージ装置(HDD/SSDなど)との違い
ストレージはデータを物理的に保存する装置です。NASやSANはネットワーク経由で接続するタイプです。DBサーバーはこれらの上で動作し、保存・検索・更新のルールを提供します。簡単に言えば、ストレージが「本棚」ならDBサーバーは「書庫の目録」です。
その他の関連サーバーとの違い
- キャッシュサーバー:よく使うデータを一時保存し応答を速めます。DBの負荷を下げる目的で使います。
- アプリケーションサーバー:業務ロジックを実行しDBに問い合わせを行います。画面表示や処理の仲介役です。
- メールサーバー:メールの送受信や保管を担当します。DBとは用途が異なりますが、メール履歴をDBで管理することはあります。
運用での注意点
目的に応じて使い分けることが大切です。ファイルの大量共有ならファイルサーバー、検索や集計が頻繁ならDBサーバー、応答速度が重要ならキャッシュを併用します。バックアップやアクセス権の設計も忘れず行ってください。
構築・運用のポイント
概要
DBサーバーは重要なデータを扱うため、構築と日々の運用で注意する点が多くあります。ここでは実務ですぐ使えるポイントを分かりやすくまとめます。
セキュリティ対策
- アクセス制御:管理用アカウントは最小限にし、SSH鍵や多要素認証を使います。例:管理PCからのみ接続できるようIP制限を設定します。
- 暗号化:通信は必ずTLSで保護します。保存データは必要に応じて暗号化します。
- 権限管理:アプリ側とDB側で必要最小限の権限に分けます。管理者操作とアプリ操作を明確に分離します。
負荷分散とスケーリング
- 水平スケール:アクセス増加時はWebサーバーやDBを複数台にしてロードバランサで振り分けます。読み取り専用はレプリカで対応します。
- 接続管理:接続プールを使い、同時接続数を制御します。
バックアップとリカバリ
- 定期バックアップを自動化します(毎日・世代管理)。
- リストア手順を定期的に検証して、実際に復旧できることを確認します。
- トランザクションログやポイントインタイムリカバリも検討します。
監視とログ管理
- 監視:CPU、メモリ、ディスク、接続数などを可視化し、閾値でアラートを出します。
- ログ:アクセスログとエラーログを保存し、定期的に解析します。
運用のチェックリスト(例)
- 毎週:バックアップ確認、ログ確認、脆弱性パッチ適用の計画
- 毎月:アクセス権レビュー、容量予測
- 障害時:切り分け手順と連絡フローを明文化
現場では小さな運用ルールが復旧時間や安全性を大きく左右します。まずは簡単な手順から整備し、徐々に自動化すると運用負荷が減ります。












