LoginSignup
1
0

Webアプリケーションとアプリケーションサーバーの比較 / PumaやRackの話も少し

Last updated at Posted at 2023-09-17

Webアプリケーションとは

インターネットなどのネットワークから利用するアプリケーションソフトウェア。Webサーバー上で動作し、ChromeなどのWebブラウザで操作する。

ネイティブアプリとの比較

ネイティブアプリは手元の端末にインストールして利用するアプリケーションソフトウェアのこと。Webアプリはプログラム本体がネットワーク上のWebサーバーに保管されるのに対して、ネイティブアプリは手元の端末内で保管される。

WebブラウザからWebサーバへの接続

URLは、Webサーバなどで公開されているリソースの場所を示す値。ブラウザにURLを入力すると、そのURLは実際にはWebサーバーのアドレス識別子。

https://example.com/book/text.html
URLの解読
名称 役割
https スキーム 利用するアプリケーションを指定する.http,httpsの場合はWebサーバにアクセスする
example.com ホスト名 ホスト名からDNSを使用して、IPアドレスを調べる。そしてルーターを利用して、そのIPアドレスまでの経路を調べる。

Webサーバに到達すると、そのサーバの中で動いているサーバを識別するために、ポート番号を使用する。

URIとURLの違い
意味
URI WWW以外にも利用できる広義の識別子。ホームページのアドレスや、メールアドレス、電話番号など様々な枠組みに対応する。
URL URIよりも狭義の識別子。しばしばインターネットの資源の場所を表す俗称として使われる。
ブラウザの代表例
  • Microsoft Edge
  • Google Chrome
  • FireFox
  • Safari

Webサーバーの役割

Webサーバーは、クライアントのWebブラウザからのリクエストに応じて、HTMLや画像などのデータを返す。

役割
静的なサイトの場合 指定されたファイルをWebサーバーに返す。
動的なサイトの場合 必要に応じて、アプリケーションサーバーやDBサーバーと連携して動作する。
Webサーバーの代表例
  • Apache
  • Nginx
  • IIS

アプリケーションサーバーの役割

Webサーバーから受け取った情報を処理するためのもの。プログラミング言語で構築されたアプリケーションを実行して、動的なコンテンツを生成する。リクエストによってはDBにアクセスして、データの抽出・加工を行う。

アプリケーションサーバーの代表例
  • Apache Tomcat
  • Puma
  • Unicone

WebサーバーとAPサーバーの比較

対象タスク
比較
Webサーバー Webサイトをホストし、簡単なリクエストに応答する。
アプリケーションサーバー より複雑なタスクを行う。ビジネスロジックを処理し、DBなどに接続して動的コンテンツを生成する。
使用プロトコル
比較
Webサーバー 使用する主なプロトコルはHTTP。またFTPやSMTPをサポートするWebサーバーは異なる。
アプリケーションサーバー Webサーバーが使用するプロトコルに加えて、他のソフトウェアコンポーネントと通信するために追加の通信プロトコルがある。
コンテンツタイプ
比較
Webサーバー 基本的に静的コンテンツを配信する。配信前にサーバーが変更したり処理したりする必要のないコンテンツ。画像ファイルやHTMLファイルなど。
アプリケーションサーバー 主に動的コンテンツを配信する。ユーザーの操作方法に基づいて変化するコンテンツ。カスタマイズされたデータ表現、パーソナライズされたUI、データベース結果、処理されたHTMLなど。
マルチスレッド
比較
Webサーバー ほとんどのWebサーバーはマルチスレッドをサポートしていない。
アプリケーションサーバー マルチスレッドを使用して高いスケーラビリティと効率を実現する。リクエストに外部リソースが必要な場合、アプリケーションサーバーは個別のスレッドを使用してそれらのインタラクションを処理する。複数のスレッドを一度に処理し、多数のクライアントインタラクションを並行して処理できる。

Rackについて

Rackを使用することで、。どのアプリケーションサーバーであってもRailsアプリケーションを動作させることができる。Rackは RailsのようなRuby製フレームワークとアプリケーションサーバーの共通言語のようなもの。

Rackを使わないとWebサーバーからのリクエストをRailsに渡すことができない。RailsはRackアプリサーバーであるPumaを動かすことでWebサーバーとのやり取りを実現している。

Pumaについて

Railsのアプリケーションサーバー。Rackアプリを実行するためのアプリケーションサーバー。

Puma自体もWebサーバーなので、Webサーバー機能はあるが、あくまでおまけ程度。メイン機能ではないため、大量のアクセスには耐えることができない。(PumaのWebサーバ機能は、ローカル環境で開発するときに使用している。)

Nginxについて

Pumaの代わりに純粋なWebサーバーとして機能する。Railsは、RackアプリケーションサーバーであるPumaとしかデフォルトで連携していないため、本番環境などではNginxなどのWebサーバーをたてる必要がある。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0