はい、こんばんは。
本格的に冷え込んできた今日この頃ですが、いかがお過ごしでしょうか。
TECH::EXPERTの応用カリキュラムに入らせていただいてから続けさせていただいているアウトプットですが、最初はそんなことしている時間はあるのか?、質はどうしよう?とか色々思っておりました。
しかし、アウトプットの時間はあるのか?から、時間は確保するものだ、と前向きに考えられるようになりました。
また、アウトプットの質に関しても、誰のためのアウトプットか?を一番に考えたときに、結局自分のためにやるものと捉えることができました。(twitterである方のtweetに影響を受けました。)
自分の理解を深めるために時間をとってアウトプットができる!!しかも多くの方に目を通してもらい、あわよくば意見ももらえるかもしれない、現代はなんと素晴らしいのでしょうか。
ということで早速本日のアウトプットです。
Webサーバとアプリケーションサーバについて。
アプリケーションサーバ(unicornなど)とは
動的なコンテンツを生成し、処理結果をWebサーバに返す働きをする。しかし、アプリケーションと アプリケーションサーバは使われている言語が違う!!!そこで活躍してくれるのが、翻訳者の役割をするRackと呼ばれるものだ。(ここでは翻訳者と思っておこう)
アプリケーションサーバの役割は、Rack無くしてはありえないと言っても過言ではない。
アプリケーションサーバの役割は2つある。
1. Webサーバから渡された情報をアプリケーションサーバ内で処理
2. Webサーバに返す。
※動的なコンテンツ・・・メソッドGET以外の複雑な処理と捉えています。
Webサーバ(Nginxなど)とは
クライアントから送られてきたリクエストを受け取り、静的なコンテンツを返す。
役割としては次の3つ。
1. 静的なコンテンツをレスポンスとして処理
2. 動的なコンテンツ生成をアプリケーション本体に依頼する。
3. アプリケーションサーバから返ってくる処理結果をレスポンスとしてクライアントに渡す。
※静的コンテンツ・・・HTMLデータのような単純なものと捉えています。
※サーバとはデータの置き場所と捉えよう!!
流れとしては次の通り。
全てのデータはWebサーバ(Nginx)にリクエストとして送られる。Webサーバは、送られてきたリクエスト内容に応じて対応しようとする。
Webサーバが無理や!って思ったら、アプリケーションもしくはアプリケーションサーバに、処理してくれ!!と依頼するわけですね。
アプリケーションサーバもしくはアプリケーションが処理してできたデータをWebサーバにデータできたよ〜!!って渡すわけだ。
最終的にWebサーバがクライアントにデータを返すという役割を担っているのです。
美味しいとこ持っていくなあ〜Webサーバ!!と思った次第であります。
しかし、内部で行われている処理というのは非常に面白いな。
もっともっと勉強していきたいなと思った次第です。
それでは!!
コメント