ウェブサーバーとアプリケーションサーバーの違いは何ですか?
ウェブサーバーとアプリケーションサーバーは、インターネット上でデータやサービスを交換できるようにする技術です。クライアント/サーバーアーキテクチャは、インターネットの基盤となるメカニズムです。ウェブサイトまたはアプリケーションにアクセスすると、ブラウザが (クライアントとして) リモートサーバーにデータを要求し、その応答を表示します。ウェブサーバーは、クライアントの要求に応じて画像、ファイル、テキストなどの静的データを配信するソフトウェアコンポーネントです。アプリケーションサーバーは、ウェブサーバーの応答を計算するビジネスロジックを追加します。どちらの用語も同義語として使われており、今日最も人気のあるサーバーソフトウェアソリューションはハイブリッドウェブアプリケーションサーバーです。
仕組み: ウェブサーバーとアプリケーションサーバー
ウェブサーバーとアプリケーションサーバーには、それぞれ独立したプロセスがあります。ただし、エンドユーザーには見えません。
ウェブサーバーの仕組み
ウェブサーバーは、ウェブサイトのコードとデータをホストする技術です。ブラウザに URL を入力すると、その URL は実際には ウェブサーバーのアドレス識別子です。
ブラウザとウェブサーバーは次のように通信します。
- ブラウザは URL を使用してサーバーの IP アドレスを検索します。
- ブラウザは情報を求める HTTP リクエストを送信します
- ウェブサーバーはデータベースサーバーと通信して関連データを検索します。
- ウェブサーバーは、HTML ページ、画像、動画、ファイルなどの静的コンテンツを HTTP 応答でブラウザに戻します
- 次に、ブラウザにその情報が表示されます
ブログ、ヘッダー画像、記事などの静的コンテンツをホストするウェブサイトは、ウェブサーバー上で実行できます。ただし、ほとんどのウェブサイトとウェブアプリケーションはさらにインタラクティブであり、アプリケーションサーバーが必要です。
アプリケーションサーバーの仕組み
アプリケーションサーバーは、動的コンテンツ生成、アプリケーションロジック、およびさまざまなリソースとの統合をサポートすることにより、ウェブサーバーの機能を拡張します。アプリケーションコードを実行したり、メッセージングシステムやデータベースなどの他のソフトウェアコンポーネントとやり取りしたりできるランタイム環境を提供します。ビジネスロジックを使用して、ウェブサーバーよりも有意義にデータを変換します。
ウェブサイト上のインタラクティブコンテンツにアクセスしようとすると、プロセスは次のように行われます。
- ブラウザは URL を使用してサーバーの IP アドレスを検索します
- ブラウザは情報を求める HTTP リクエストを送信します
- ウェブサーバーは要求をアプリケーションサーバーに転送します
- アプリケーションサーバーはビジネスロジックを適用し、他のサーバーやサードパーティシステムと通信して要求に応えます
- アプリケーションサーバーは新しい HTML ページをレンダリングし、それをウェブサーバーへの応答として返します
- ウェブサーバーは応答をブラウザに返します
- ブラウザに情報が表示されます
e コマースのウェブサイトの例で言うと、カートにアイテムを追加したり、アイテムをチェックアウトしたりするときに、アプリケーションサーバーとやり取りすることになります。
主な相違点: ウェブサーバーとアプリケーションサーバー
ウェブサーバーとアプリケーションサーバーには、両者を際立たせるいくつかの重要な違いがあります。
対象タスク
ウェブサーバーはウェブサイトをホストし、簡単なリクエストに応答します。また、ウェブサーバーはサーバーアクティビティを記録し、サーバー側のスクリプト作成を可能にします。
一方、アプリケーションサーバーにはより複雑なタスクがあります。アプリケーションサーバーはビジネスロジックを処理し、エンタープライズシステム、サービス、データベースに接続して動的コンテンツを生成します。
使用プロトコル
ウェブサーバーが使用する主なプロトコルは HTTP プロトコルです。ただし、FTP と簡易メール転送プロトコル (SMTP) をサポートするウェブサーバーは異なります。これら 2 つのプロトコルは、電子メールだけでなくファイルの保存と転送も容易にします。
ウェブサーバーが使用するプロトコルに加えて、アプリケーションサーバーは他のソフトウェアコンポーネントと通信するために追加の通信プロトコルを使用します。たとえば、リモートメソッド呼び出し (RMI) やリモートプロシージャコール (RPC) を使用する場合があります。
コンテンツタイプ
ウェブサーバーはほとんどが静的コンテンツを配信します。静的コンテンツとは、配信前にサーバーが変更したり処理したりする必要のないコンテンツです。たとえば、画像ファイル (PNG、GIF、JPEG など)、ダウンロード可能なドキュメント (PDF)、ビデオ、HTML ファイルはすべて静的コンテンツです。
アプリケーションサーバーは、主に動的コンテンツを配信します。動的コンテンツとは、ユーザーの操作方法に基づいて変化するコンテンツです。たとえば、動的に生成されるレポート、カスタマイズされたデータ表現、パーソナライズされた UI、データベース結果、および処理された HTML はすべて動的コンテンツです。
マルチスレッド
サーバー上のスレッドは、タスクの同時処理を可能にする個別の操作経路です。マルチスレッドでは、サーバーは複数のスレッドを同時に作成して実行し、それぞれが個別のタスクまたはタスクの一部を処理します。マルチスレッドのサポートにより、より多くのウェブトラフィックを管理しながら、ウェブコンテンツをより速く配信できます。
ほとんどのウェブサーバーはマルチスレッドをサポートしていません。ウェブサーバーは、新しい接続要求をキューに入れ、イベントループを使用してキューへの新しいエントリとキューからの終了を監視します。効率を上げるため、サーバーはノンブロッキング I/O とコールバックを使用してリクエストを処理します。ノンブロッキング操作とイベント駆動型アーキテクチャにより、ウェブサーバーは同時接続を処理できます。
アプリケーションサーバーはマルチスレッドを使用して高いスケーラビリティと効率を実現します。リクエストに外部リソースが必要な場合、アプリケーションサーバーは個別のスレッドを使用してそれらのインタラクションを処理します。複数のスレッドを一度に処理し、多数のクライアントインタラクションを並行して処理できます。
アプリケーションサーバーとウェブサーバーはどのように連携しますか?
アプリケーションサーバーとウェブサーバーは連携してクライアントのリクエストを処理し、正しいコンテンツをユーザーに配信します。ウェブサーバーは常に新しいリクエストを最初に受信します。情報自体を生成できる場合は、その情報を生成して HTTP レスポンスを送り返します。また、ユーザーが要求したデータがまだキャッシュにないことも確認します。
ウェブサーバーがユーザーが必要とするコンテンツにアクセスできない場合、その要求をアプリケーションサーバーに転送します。アプリケーションサーバーはデータを処理し、ビジネスロジックを使用して正しい情報を提供します。次に、その要求をウェブサーバーに戻し、ウェブサーバーがその要求をユーザーに渡します。特定のアーキテクチャでは、HTTP リクエストを単独で処理するようにアプリケーションサーバーを構成することもできます。
相違点の要約: ウェブサーバーとアプリケーションサーバー
ウェブサーバー |
アプリケーションサーバー |
|
対象タスク |
ウェブサーバーは単純な要求に応答します。 |
アプリケーションサーバーは、データベース、サービス、およびエンタープライズシステムからより複雑なコンテンツを配信します。 |
使用プロトコル |
ウェブサーバーは主に HTTP を使用します。また、FTP と SMTP もサポートしています。 |
アプリケーションサーバーは多くのプロトコルをサポートしています。 |
コンテンツタイプ |
ウェブサーバーは、HTML ページ、画像、動画、ファイルなどの静的コンテンツを配信します。 |
アプリケーションサーバーは、リアルタイムの更新、パーソナライズされた情報、カスタマーサポートなどの動的なコンテンツを配信します。 |
マルチスレッド |
通常はマルチスレッドを使用しません。 |
マルチスレッドを使用してリクエストを同時に処理します。 |
AWS はお客様のウェブサーバーとアプリケーションサーバーの要件をどのようにサポートできますか?
Amazon Web Services (AWS) は、ウェブアプリケーションやウェブサイトを低コストで配信するクラウドウェブホスティングソリューションをいくつか提供しています。詳細については、AWS のウェブホスティングをご覧ください。AWS ウェブホスティングのソリューションは次の 2 つです。
- Amazon Lightsail は、AWS を利用してウェブサーバーを起動および管理するための最も簡単な方法です。Lightsail には、仮想マシン、SSD ベースのストレージ、データ転送、DNS 管理、静的 IP アドレスなど、ウェブサイトをすばやく開始するために必要なものがすべて含まれており、予測可能な低価格で提供されます。
- Amazon Elastic Compute Cloud (Amazon EC2 ) は、クラウド内のアプリケーションサーバーにサイズ変更可能なコンピューティング容量を提供します。開発者がウェブスケールのクラウドコンピューティングを簡単に利用できるように設計されています。また、ウェブサイトやウェブアプリケーションのスケーラビリティと可用性を最大限に高めることができます。Amazon EC2 はコンピューティングの経済性も変革し、実際に使用した分のみ料金が発生します。
また、AWS では、サーバーを管理せずにコードを実行したり、データを管理したり、アプリケーションを統合したりできるテクノロジーを提供しています。AWS のサーバーレスソリューションは、お客様のビジネスに高可用性、従量課金、自動スケーリングを提供します。詳細については、「AWS でのサーバーレス」を参照してください。
AWS サーバーレスサービスを使用する方法は次のとおりです。
- Amazon Simple Storage Service (Amazon S3)、Amazon Elastic File System (Amazon EFS)、および Amazon DynamoDB にデータを保存します。
- AWS Fargate と AWS Lambda を使用して計算します。
- アプリケーションを AWS AppSync、Amazon EventBridge、Amazon Simple Queue Service (Amazon SQS) と統合します。
今すぐアカウントを作成して、AWS でウェブサーバーとアプリケーションサーバーの使用を開始しましょう。