Webサイトはユーザーのリクエストに応じてデータを処理し、レスポンスを返す仕組みで動いています。
本記事では、LaravelのSESSION_DRIVER の仕組みを中心に、サーバー・DNS・ロードバランサー・ドメインの関係をWebサイトの動きを通して解説します。
①Webサイトの基本的な流れ
例えば、ユーザーが Web サイト(daeudaeu.com)にアクセスし、ログインしてセッション管理を行う流れを考えてみましょう。
- Webサイトのリクエスト・レスポンスの流れ
-
1.daeudaeu.comにアクセス
→DNSがdaeudaeu.comをIPアドレスに変換 -
2.Webサーバーと通信開始
→ロードバランサーが、リクエストを適切なサーバーへ転送 -
3.ユーザーがログイン
→サーバーが認証し、セッションを作成(SESSION_IDをCookieに保存) -
4.ページを移動する
→CookieのSESSION_IDを元に、サーバーがログイン情報を維持 -
5.ログアウトする
→SESSION_IDを削除し、ユーザー情報を消去
-
この流れの中でセッション管理、サーバーの役割、DNS、ロードバランサーの動きが連携しています。
それぞれの仕組みを詳しく見ていきましょう。
②LaravelのSESSION_DRIVERとWebサイトの動き
Webサイトは 「ステートレス(リクエストごとに状態を保持しない)」 ですがSessionを使うことでログイン状態やカート情報を維持できます。
Laravel では .envのSESSION_DRIVERを設定することで、セッションの保存先を指定できます。
①.file
→保存場所はstorage/framework/sessions(デフォルト)
→単純なアプリで利用される
②.database
→保存場所はsessionsテーブル(DB)
→複数サーバー環境向けである
③.redis
→保存場所はRedisキャッシュ
→高速処理が必要な場合に利用される
④.memcached
→保存場所はMemcached
→キャッシュ用途
⑤.cookie
→保存場所はクライアントのCookie
→セキュリティリスクあり
⑥.array
→保存場所はメモリ(リクエストごとのみ)
→テスト時に使用される
例:)databaseを利用する場合
→.envでSESSION_DRIVER=databaseに変更
SESSION_DRIVER=database
→artisanコマンドでsessionsテーブルを作成
php artisan session:table
php artisan migrate
→これでSessionがデータベースに保存され、ロードバランサーを使った環境でも安定して動作
③サーバー・DNS・ロードバランサーの関係
Webサイトが動くためには、DNS・ロードバランサー・Webサーバーの連携が必要です。
・DNS(ドメインネームシステム)とは?
→DNSは、daeudaeu.comのようなドメインをIPアドレスに変換する仕組み。
→ユーザーがdaeudaeu.comのアクセスすると、DNSサーバーがIPアドレス(例:123.35.201.1)に変換し、適切なサーバーへ接続します。
・ロードバランサーとは?
→ロードバランサー(Load Balancer)は、大量のリクエストを複数のサーバーへ分散する装置・サービス。
→AWS ELB、Nginx、HAProxy などが利用される。
・ロードバランサーが必要な3つの理由
- 1.負荷分散(アクセスが集中しても処理を分散)
- 2.サーバー障害時の自動フェイルオーバー
- 3.スケーラビリティの向上(サーバーを追加すればスケール可能)
④ドメインとIPアドレスの関係
Web サイトは「ドメイン(例: daeudaeu.com)」と「IP アドレス(例: 123.35.201.1)」を組み合わせてアクセスします。
・ドメイン
→人間が覚えやすい名前(例:daeudaeu.com)
・IPアドレス
→サーバーを識別する数値(123.35.201.1)
・DNS
→ドメインをIPアドレスに変換する仕組み
⑤まとめ
・Webサイトは 「DNS → ロードバランサー → Web サーバー」 の流れで動く!
・LaravelのSESSION_DRIVERを適切に設定することで、セッション管理が安定!