<CodeLearn/>
インフラ レッスン1

インフラの基本

サーバー、ネットワーク、クラウドの全体像を学ぼう

サーバー・クライアントモデル

インターネットの通信はクライアント(ブラウザ等)サーバーにリクエストを送り、サーバーがレスポンスを返す 「クライアント・サーバーモデル」で成り立っています。

┌──────────┐     リクエスト (HTTP)      ┌──────────┐
│          │  ─────────────────────▶   │          │
│ クライアント │                           │  サーバー  │
│ (ブラウザ)  │  ◀─────────────────────   │ (Nginx等) │
│          │     レスポンス (HTML等)     │          │
└──────────┘                           └──────────┘

例:ブラウザで https://example.com にアクセスすると
  1. DNSで example.com → IPアドレスに変換
  2. TCP接続を確立(3ウェイハンドシェイク)
  3. HTTPリクエストを送信
  4. サーバーがHTMLを返す
  5. ブラウザがHTMLをレンダリング

Webアプリケーションでは、フロントエンド(クライアント)とバックエンド(サーバー)が この仕組みで通信しています。サーバーは1台で複数のクライアントからのリクエストを処理します。

ネットワークの基礎

サーバーとクライアントが通信するためには、いくつかの重要なプロトコルと仕組みを理解する必要があります。

IPアドレス

ネットワーク上の機器を識別する番号。IPv4(192.168.1.1)とIPv6(2001:db8::1)がある。

DNS(Domain Name System)

ドメイン名(example.com)をIPアドレスに変換する仕組み。インターネットの「電話帳」。

TCP(Transmission Control Protocol)

信頼性のある通信を保証するプロトコル。データの到達確認と再送制御を行う。

HTTP / HTTPS

Webの通信プロトコル。HTTPSはSSL/TLSで暗号化された安全な通信。

# DNSの名前解決を確認する
$ nslookup example.com
Server:   8.8.8.8
Address:  8.8.8.8#53

Name:     example.com
Address:  93.184.216.34

# ポート番号の一般的な割り当て
HTTP   → 80
HTTPS  → 443
SSH    → 22
MySQL  → 3306
PostgreSQL → 5432

クラウド vs オンプレミス

サーバーの運用形態は大きくクラウドオンプレミスに分かれます。

クラウド

  • AWS、GCP、Azureなどのサービスを利用
  • 初期費用が少なく、従量課金
  • スケールアップ・ダウンが容易
  • 物理サーバーの管理が不要
  • 障害対応はプロバイダーが一部担当

オンプレミス

  • 自社でサーバーを購入・管理
  • 初期費用が大きいが、長期的にはコスト最適化可能
  • カスタマイズの自由度が高い
  • セキュリティポリシーを完全に自社で管理
  • 障害対応はすべて自社で行う
# AWSでEC2インスタンスを起動する例(AWS CLI)
$ aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --instance-type t3.micro \
    --key-name my-key-pair \
    --security-group-ids sg-0123456789abcdef0 \
    --subnet-id subnet-0123456789abcdef0

# GCPでVMインスタンスを作成する例
$ gcloud compute instances create my-server \
    --zone=asia-northeast1-a \
    --machine-type=e2-micro \
    --image-family=ubuntu-2204-lts \
    --image-project=ubuntu-os-cloud

IaaS / PaaS / SaaS

クラウドサービスは提供する範囲によって3つのモデルに分類されます。

IaaS(Infrastructure as a Service)

仮想サーバー、ストレージ、ネットワークなどインフラを提供。OS以上は自分で管理。

例: AWS EC2, GCP Compute Engine, Azure VM

PaaS(Platform as a Service)

アプリケーションの実行環境を提供。サーバー管理はプロバイダーが担当。

例: Heroku, AWS Elastic Beanstalk, Google App Engine, Vercel

SaaS(Software as a Service)

完成したソフトウェアをサービスとして利用。インフラの知識は不要。

例: Gmail, Slack, GitHub, Notion

管理範囲の比較:

             オンプレ    IaaS      PaaS      SaaS
─────────────────────────────────────────────────
アプリ        自分      自分      自分     プロバイダ
データ        自分      自分      自分     プロバイダ
ランタイム    自分      自分     プロバイダ  プロバイダ
ミドルウェア  自分      自分     プロバイダ  プロバイダ
OS           自分      自分     プロバイダ  プロバイダ
仮想化       自分    プロバイダ  プロバイダ  プロバイダ
サーバー     自分    プロバイダ  プロバイダ  プロバイダ
ネットワーク  自分    プロバイダ  プロバイダ  プロバイダ

まとめ

  • Web通信はクライアント・サーバーモデルで成り立っている
  • IPアドレス、DNS、TCP、HTTPがネットワーク通信の基礎
  • クラウドは手軽に始められ、オンプレミスは自由度が高い
  • IaaS / PaaS / SaaS はクラウドサービスの提供範囲が異なる
  • 現代のWeb開発ではクラウドの利用が主流