プログラミング初学者がまとめる〜webサーバーとアプリケーションサーバーについてまとめてみようと思う。ざっと理解する編〜
*自身の言葉で書いてますので、間違っていることもあるかと思いますが、ご了承ください。訂正のコメントを頂けるとありがたいです。*
今回から何回かにわたってwebサーバーとアプリケーションサーバーについてまとめていこうと思う。
初回の今回はwebサーバーとアプリケーションサーバーについてざっくりとまとめてみようと思います。
◯webサーバーとは
webサーバーはユーザーから送られてきたリクエストを受け取り、なんらかの処理を加えるプログラムです。webサーバーのみで対応できる内容であればそのままレスポンスを返し、無理なら他のサーバーに橋渡しをしているイメージです。
具体的にはリクエストがHTML、CSS、画像ファイルのような更新しない限り同じ表示コンテンツを表示する静的なwebコンテンツだった場合はwebサーバーがレスポンスを返します。一方で、クライアントごとで表示内容を変化させる処理が必要な動的なwebコンテンツの場合、webサーバーはアプリケーションサーバーへとリクエスト(橋渡し)をします。
ex) Nginx・Apache
◯アプリケーションサーバーとは
アプリケーションサーバーは、Webサーバーを通して受け取ったリクエストを処理し、HTMLなどをウェブサーバーへ返却する役割を果たします。またアプリケーションサーバーはアプリケーションを動かしているそのものと言えます。
アプリケーションサーバーはあなたのコードを読み込み、アプリケーションをメモリに保持します。アプリケーションサーバーはwebサーバーからリクエストを受け取ると、Railsアプリケーションにそのことを知らせます。アプリケーションがリクエストを処理すると、アプリケーションサーバーはそのレスポンスをwebサーバーに返します。
ex)Unicorn、Thin、Rainbows、Puma
◯それぞれの役割
webサーバーは複数のアプリケーションを一度に処理したり、アセットを素早くレンダリングしたり、リクエストごとに発生する多くの処理をさばいたりしてくれます。本番環境ではwebサーバーを置くことが多いです。一方でローカル環境ではwebサーバーを使わずアプリケーションサーバーのみで動かすことができる。
◯流れをまとめてみる
1.webリクエストはwebサーバーが受け取ります。
2.リクエストが静的コンテンツであれば、webサーバーがレスポンスを返す。
3.webサーバーが処理できない場合は、アプリケーションサーバーにリクエストを送る。
4.アプリケーションサーバーからアプリにリクエスト・処理を行った後、webサーバーへレスポンスを返す
5.webサーバーがクライアントにレスポンスを返す
◯まとめ
今回はwebサーバーとアプリケーションサーバーについてまとめてみました。
自身でも理解がぐちゃぐちゃになっていたので、いい整理ができました!
次回は流れについてもう少し細かく書いてみようと思います。
最後まで読んで頂きありがとうございました!!