面接でポートフォリオはなんのwebサーバーで動かしているのか聞かれてよく分からなかったので調べた
面接でポートフォリオはなんのwebサーバーを使っているのか聞かれました
プログラミング教室で教えてもらったのは、rails s
とすればlocalhost:3000にアクセスすれば動く。そんな感じだったので、webサーバーやアプリケーションサーバーについて意識することはありませんでした。なんのサーバーを使っているのか気にしたことがありませんでした。なので、なにも答えられずww
基本が分かっていなかったので、一体どういうことか調べてみました。
webの仕組みをさらっと復習
webの仕組みは下の図のようになっています。
クライアントが要求を出して、静的な処理ならwebサーバーがリクエストを返します。動的な処理の時、webサーバーはアプリケーションサーバーに処理を要求して、リクエストを返します。
非常にわかりやすい例があったので、引用します。
四則演算のアプリケーションが実装されているAPサーバでクライアントが「1+1は?」というリクエストを送ると、Webサーバはこれを「動的コンテンツ」と判別してAPサーバにリクエストを投げます。受け取ったAPサーバは四則演算ができるのでDBサーバにリクエストを投げなくても「1+1=2」という答えをWebサーバに返すことができます。
しかし、「リンゴとバナナの合計金額は?」というリクエストが飛んでくると、APサーバにはリンゴとバナナの値段のデータが存在しないため、DBサーバにリクエストする必要があります。そして、DBサーバからリンゴとバナナの値段が返ってきたらAPサーバは計算して結果をWebサーバに返します。
参考:ミドルウェアについて知ろう
Rubyのwebサーバーは?
自分でwebサーバーの設定をした記憶がなかったので、そもそもなぜlocalhost:3000にアクセスするとリクエストが返ってくるのかという疑問がでてきました。
webrickがwebサーバーみたいなもの
Rubyは標準でwebrickというwebサーバー用のフレームワークがあります。webサーバーとは違うようですが、webサーバーと同じような動きをすると認識しています。なので、手元で動かすだけなら、ApacheやNginxなどのwebサーバーは必要ないようです。webrickがあるから簡単にアプリケーションを動かすことができているという分けですね。
ApacheやNginxはどういう時に使うの?
ApacheやNginxは静的ファイルの配信やリクエストのバッファリング、レスポンスの圧縮など、アプリケーションではやらないHTTP上で起こる汎用的な問題を解決するミドルウェアです。
参考:Railsに標準装備されているWEBrickではなく、本番でNginxやApacheに変更するのは何故ですか?
とのことで実際に本番環境でパフォーマンスをあげるために使うというイメージで理解しました。
webサーバーはなくても動くみたいで、設計によって必要かどうか判断すると良いということで理解していますが、実際のところほとんどの場合webサーバーは使っているのではないでしょうか?
まとめ
webの仕組みについて改めて復習した次第です。webサーバーについて調べることができて少し理解が深まりました。
参考
webrickを使ったアプリケーションの起動
Rails開発におけるwebサーバーとアプリケーションサーバーの違い
webサーバー、アプリケーションサーバー、Rackといった仕様や概念と、WEBrick、Unicorn、Pumaといった実装の関係が頭の中で結びつきません
WEBrickを使ってみよう!
Author And Source
この問題について(面接でポートフォリオはなんのwebサーバーで動かしているのか聞かれてよく分からなかったので調べた), 我々は、より多くの情報をここで見つけました https://qiita.com/ibarakishiminn/items/8e81153585b388f22de7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .