たいきゅんの日記

ITエンジニアの積み上げ日記

プログラミング初学者がまとめる〜webサーバーとアプリケーションサーバーの流れについてまとめてみようと思う。ざっと理解する編〜

*自身の言葉で書いてますので、間違っていることもあるかと思いますが、ご了承ください。訂正のコメントを頂けるとありがたいです。*

 

今回は前回の続きで、webサーバーとアプリケーションサーバーの流れに焦点を絞ってまとめていこうと思います!!railsアプリを前提に書いていくのでご了承ください。

 

◯Rack

今回の話をするにあたり一つ紹介したいのがRackについて知っておいて欲しいです!

Rackは簡単に言うと、アプリケーションサーバーとアプリケーションを橋渡しの役割を果たしているものです。

もっと具体的に言うと、RackはRailsのようなRuby製のwebフレームワークとアプリケーションサーバーの両方が話せる共通言語のようなものだと考えてください。両者は別々の言語で書かれており、直接会話ができません。しかしRackは両者の共通言語を理解できるので、RailsUnicornと話せますし、UnicornRailsと話せるので、railsがアプリとして機能するわけです。

 

 

◯再度流れを確認する

1.webリクエストはwebサーバーが受け取ります。

2.リクエストが静的コンテンツであれば、webサーバーがレスポンスを返す。

3.webサーバーが処理できない場合は、アプリケーションサーバーにリクエストを送る。

4.アプリケーションサーバーからRackを通して、アプリケーションにリクエスト(←NEW)

5.アプリで処理を行った後、Rackを通じてアプリケーションサーバーへレスポンスを返す(←NEW)

6.アプリケーションサーバーからwebサーバーへレスポンス、webサーバーがクライアントにレスポンスを返す

 

◯流れに具体名を入れてみる

1.webリクエストはwebサーバーが受け取ります。(Nginx・Apache

2.リクエストが静的コンテンツであれば、webサーバーがレスポンスを返す。(Nginx・Apache

3.webサーバーが処理できない場合は、アプリケーションサーバーにリクエストを送る。(Nginx・ApacheUnicorn・Puma)

4.アプリケーションサーバーからRackを通して、アプリケーションにリクエスト(Unicorn・Puma→Rack→アプリ)

5.アプリで処理を行った後、Rackを通じてアプリケーションサーバーへレスポンスを返す(アプリ→Rack→Unicorn・Puma)

6.アプリケーションサーバーからwebサーバーへレスポンス、webサーバーがクライアントにレスポンスを返す(Unicorn・Puma→Nginx・Apache

 

 

◯なぜwebサーバーとアプリケーションサーバーを構築する必要があるのか?

これまでを聴いていると万能なRackだけあれば、うまく処理できるように思えるかもしれません。

しかしRackだけだとWebサーバがなく、高速な処理や高負荷に耐えることができなません。nginxやunicornといったwebサーバを用意することでうまく負荷分散をして、大勢のクライアントからのアクセスに対応できるようにしている。

 

◯まとめ

今回はwebサーバーとアプリケーションサーバーの流れについて少し細かくまとめてみました。

普段なんとなくサーバーを立ち上げていますが、裏ではこんなことが起きているんですね!

次回からはwebサーバーやアプリケーションサーバーについて細かく書いてみようと思います!

最後まで読んで頂きありがとうございました!!