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サーバーをたてる必要がある。