はじめに
オリジナルプロダクトを作成し、現在デプロイの段階に入りました
そこでよく見るWweサーバやアプリケーションサーバってなんぞやと思い調べました
Webサーバとは
Webサーバはクライアント(ユーザ)のブラウザからのHTTPリクエストを受け取り、HTML、CSS、JavaScript、画像などの「静的コンテンツ」を配信する役割を持ちます
例
・Apache
・Nginx
これらのWebサーバは静的なWebページの処理だけでなく、動的リクエストをアプリケーションサーバに振り分ける役割も持っています。
アプリケーションサーバ
アプリケーションサーバは、Webサーバからのリクエストを受けて、データベースとの連携、計算処理を行い、動的なWebページを生成します。
例
・Puma
・Unicorn
Webサーバとアプリケーションサーバの関係
システムは、Webサーバとアプリケーションサーバを組み合わせて使用します。
- クライアントがWebサーバにリクエストを送る
- Webサーバが静的コンテンツを直接返す、または動的なリクエストをアプリケーションサーバに転送
- アプリケーションサーバがリクエストを処理し、データベースと連携して動的なレスポンスを生成する
- アプリケーションサーバがWebサーバにレスポンスを返し、Webサーバがクライアントにデータを送信する
なぜWebサーバとアプリケーションサーバを分けるのか
・Webサーバがリクエストを適切に振り分け、負荷を分散できる
・静的コンテンツと動的コンテンツの処理をWebサーバ、アプリケーションサーバで分けることで高速なレスポンスを実現
・外部ユーザーからのアクセスをアプリケーションサーバにすることで、他のサーバはアプリケーションサーバからのアクセスのみに限定し、セキュリティを担保
その他気になった用語集
リバースプロキシ
Webブラウザなどのクライアントとサーバの間で仲介を果たすネットワークデバイス、またはサーバのことです。
つまりWebサーバはアプリケーションサーバのリバースプロキシとしても機能するということです。
まとめ
インフラ面の構築にかなり手間取っており、調べるほどわからない言葉が出てくるのでしっかりと理解し疑問に対して深掘りしようと思いました
引き続き頑張ります。
見ていただきありがとうございました。