- 更新日 2024.10.17
- カテゴリー アプリ開発
Webアプリ開発のアプリケーションサーバとは?役割・Web3層構造も解説【2024年最新版】
Webアプリ開発プロジェクトに携わったことのある企業担当者の方であれば、「アプリケーションサーバ」という用語を耳にしたかもしれません。思わず聞き流してしまいがちですが、以下のような疑問を解消したい方も多いでしょう。
- Webアプリ開発でよく耳にするアプリケーションサーバとは?
- Web3層構造とアプリケーションサーバの関係は?
- アプリケーションサーバの役割・機能は?Webサーバとなにが違う?
そこで本記事では、アプリケーションサーバがWebアプリ開発でどのような役割を果たしているのか?Webアプリの仕組みやWeb3層構造との関連を含め、知っておきたいアプリケーションサーバの基礎知識を解説!主要なアプリケーションサーバも紹介していきます。
※アプリ開発に豊富な実績を持つ開発会社を探している方は、システム幹事にご相談ください。専任のアドバイザーが最適な開発会社をご紹介します。相談料などは一切かかりません!
アプリ開発に役立つ記事もご覧ください Webアプリ開発におすすめ!アプリ開発かんたんマニュアル
Webアプリ開発で重要なアプリケーションサーバとは
アプリケーションサーバとは、OS(オペレーティング・システム)とアプリケーションの中間に位置し、両者を接続してアプリケーションを補完する機能を持つソフトウェア(ミドルウェア)のひとつ。Webアプリ開発で活用されるアプリケーションサーバは、OS・Webサーバ・データベースを相互接続し、データの受け渡し・処理を含むアプリの実行環境を提供しており「APサーバ」と呼ばれることもあります。
ソフトウェアという点においては、ミドルウェアもOS・アプリケーションと同様です。しかし、それぞれのソフトウェアとしての役割は大きく異なります。
OS(Operating System) |
ハードウェアの制御・操作(オペレーション)を含む、 コンピューターの汎用的な機能を提供するソフトウェア |
ミドルウェア |
アプリケーションの機能を補完することを目的としたソフトウェア |
アプリケーションソフトウェア |
OSの機能を応用したジョブ実行を目的としたソフトウェア |
ただし、コンピューター・ハードウェアそのものを「アプリケーションサーバ」と呼ぶ場合もあるため注意が必要。この違いを理解するためには、Webアプリの仕組み・構造を把握しておく必要があります。
【無料】Webアプリ開発のアプリケーションサーバについて相談する
Webアプリの仕組み
Webアプリとは、クラウド環境に構築したサービスを、Webブラウザで利用するアプリのこと。たとえば、Googleドキュメントであれば、アカウントにログインして新規ドキュメントを作成、文書を作成できます。こうした一連の機能を提供しているのが、Webアプリを構成する「プレゼンテーション層」「アプリケーション 層」「データ層」です。
プレゼンテーション層(クライアントサイド)
Webアプリの「プレゼンテーション層(クライアントサイド)」とは、Webブラウザに表示される「ユーザーインターフェース(UI)」や「Webページ」を提供するレイヤー(階層)のこと。ユーザーからのリクエストに対して適切なレスポンスを返す、端末とサーバコンピューターの通信を受け持つ役割を果たしています。
アプリケーション 層(サーバサイド)
Webアプリの「アプリケーション層(サーバサイド)」とは、プレゼンテーション層が受け付けたリクエストを処理して「適切なWebページを動的に生成する」Webアプリの本体ともいえるレイヤーのこと。プレゼンテーション層は、リクエスト・レスポンスを受け待ちますが、新規ドキュメント作成などの「Webページ生成機能」は持ちません。そのため、アプリケーション層のプログラムが動的にWebページを生成し、プレゼンテーション層に引き渡す役割を果たします。また、データ層と連携しながらデータ取得・追加・削除・変更も行います。
アプリケーション層はバックエンド、サーバサイドとも呼ばれ、Java / PHP / Ruby / Pythonなどのプログラミング言語やフレームワーク(基本的な機能がパッケージ化されたプログラム)を活用して開発されます。
データ層(データベース)
Webアプリの「データ層(データベース)」とは、アプリケーション層と連携して「登録・変更・削除・加工などのデータ処理・管理」を受け持つレイヤーです。たとえば、ログイン用のアカウント情報、ドキュメントに入力した文字情報、画像データなどがデータ層の管理対象となります。
MySQL / PostgreSQL / OracleなどのRDBMS(リレーショナルデータベース管理システム)が利用される場合が多く、データベース言語であるSQLを使ってシステムごとの適切なデータベースが構築されます。
Webアプリ開発の詳細は下記記事をご参照ください。
関連記事:Webアプリケーション開発とは?外注前に知るべき開発の流れ・費用・注意点を解説
上記3層が連携して動作する構造=Web3層構造
このように「プレゼンテーション層(クライアントサイド)」「アプリケーション層(サーバサイド)」「データ層(データベース)」が連携して動作するのが、一般的なWebアプリの仕組みです。こうした仕組みを持つWebアプリの構造を「Web3層構造」と呼びます。クライアントからの処理を行うサーバーが「プレゼンテーション層」「アプリケーション層」「データベース層」の3層で構成されているのです。
Web3層構造を持つWebアプリは、ひとつの物理サーバで管理・運用することもありますが、規模の大きなWebアプリではレイヤーごとに物理サーバを分離して管理することがほとんど。この場合、アプリケーション層の物理サーバは「アプリケーションサーバ」と呼ばれます。アプリケーションサーバがソフトウェア / ハードウェア両方の意味を持つのはこのためです。
サーバを分離させることで、Webシステムの役割ごと(レイヤーごと)に最適化した運用・保守が可能になり、システムを拡張させやすい、セキュリティを確保しやすい、信頼性を確保しやすいメリットが得られます。特にセキュリティを確保しやすいことは、大規模Webシステム・アプリにとって大きなメリットです。
【無料】Webアプリ開発のアプリケーションサーバについて相談する
アプリとOSを接続するミドルウェア
それでは、それぞれが異なる役割を果たしているWebアプリの3つのレイヤーは、どのような方法で連携しているのか。これこそが、アプリケーションを含むプログラムの機能を補完し、OSとの相互接続を実現する「ミドルウェア」です。つまりWebアプリは、構成するそれぞれのレイヤーに適したミドルウェアを活用して開発されます。
Webサーバ(プレゼンテーション層)
Webアプリのプレゼンテーション層であるクライアントサイドは「Webサーバ」を利用して開発されます。ユーザーに静的・動的Webページを提供するのが、クライアントサイドの役割です。Webブラウザ・サーバ間の通信、およびアプリケーション層と接続してリクエスト処理の指示・レスポンス受け渡しを担うのが、ミドルウェアのひとつである「Webサーバ」です。「静的なコンテンツしか返せないのでは、Webアプリに使えないのでは?」そう感じる方がいるかもしれません。しかし、動的なコンテンツ(リクエストに応じて内容が変わる)をリクエストされた場合は、アプリケーションにリクエストを転送して処理結果を受け取る役割も果たします。
Webサーバの代表例としては「Apache HTTP Server」「nginx」「Internet Information Service」などが挙げられます。ユーザーインターフェースを担うフロントエンドプログラムは、HTML・CSS・JavaScriptなどで開発されます。
アプリケーションサーバ(アプリケーション層)
Webアプリのアプリケーション層であるサーバサイドは「アプリケーションサーバ」を利用して開発されます。リクエストの処理自体はアプリケーションであるプログラムが行いますが、プレゼンテーション層やデータ層との連携、OSとの接続、アプリの実行環境などの役割を担うのは、ミドルウェアである「アプリケーションサーバ」です。「Puma」「Unicorn」「Tomcat」などのAPサーバソフトウェア、採用する開発言語に応じた「Django」「Ruby on Rails」などのフレームワークが代表的です。
APサーバに構築されるWebアプリケーションは、Java・PHP・Ruby・Pythonなどで構築されます。サーバを選ぶ際は、アプリケーションサーバの提供元からのセキュリティ情報を必ずチェックしましょう。
DBMS(データ層)
Webアプリのデータ層であるデータベースは「DBMS(データベース・マネジメントシステム)」を利用して開発されます。そもそもデータベースとは「加工・再利用できるように、ある一定の法則で保管されたデータの集まり」です。そのままでは加工・再利用できません。単なるデータの集まりであるデータベースを、アプリケーション層の指示に従って加工・再利用するためのミドルウェアが「DBMS」というわけです。
MySQL / PostgreSQL / OracleなどのRDBMS(リレーショナルデータベース管理システム)が利用される場合が多く、データベース言語であるSQLを使ってWebシステムごとの適切なデータベースが構築されます。現在主流として利用されているのは、関係データベースとも呼ばれる「リレーショナルデータベース(RDBMS)」であり、代表的なRDBMSには「MySQL」「PostgreSQL」「SQL Server」「Oracle」などがあります。
DBMSには無料で使えるものや有料のもの、クラウド版やオンプレミスなど様々に種類があるので、目的や自社の課題に沿ってDBMSを選びましょう。
注意:アプリケーションサーバを使わないアプリ開発もある
ただし、WebアプリにWebサーバ・DBMSが必須なのに対し、アプリケーションサーバは必ずしもWebアプリ開発に必須というわけではありません。たとえば、PHPでWebアプリを開発する際は、Webサーバとしてよく使われる「Apache HTTP Server」がAPサーバの役割も果たしてくれます。近年では、PHPの開発環境を整えておけば、ApacheをAPサーバとしても利用できる拡張モジュール「mod_PHP」が自動でインストールされるため、APサーバを意識する必要すらありません。
ミドルウェアの詳細は下記記事をご参照ください。
関連記事:ミドルウェアとは?アプリ・システム開発との関係・仕組み・役割・具体例を解説!
【無料】Webアプリ開発のアプリケーションサーバについて相談する
アプリケーションサーバの機能
とはいえ、Webアプリ開発でアプリケーションサーバが重要であるのは現在でも変わりありません。PHPプロジェクト用に新たなアプリケーションサーバが登場するなど、むしろAPサーバの重要性は高まっています。
それはアプリケーションサーバの持つ機能を利用することで、Webアプリ開発の効率を高められるからです。
OS・ミドルウェアとの接続
アプリケーションサーバは、Webサーバ・DBMSと接続してプログラム間のデータ連携をサポートします。また、OSと接続してコンピューター・ハードウェアへアプリがアクセスできる環境も提供しています。このため、さまざまなOSで動作する「マルチプラットフォーム対応型」が多いのもアプリケーションサーバの特徴。アプリケーションサーバを使わない場合、これらの機能を開発するアプリにすべて実装しなければなりません。
トランザクション処理
Webアプリではさまざまなトランザクション処理が必要になりますが、これを提供するのもアプリケーションサーバの機能のひとつです。
トランザクション処理とは、「切り離すことのできない複数の処理の集まり」のこと。よく挙げられるトランザクションの例は,、銀行振り込み。A銀行からB銀行へ振り込みする際、A銀行の処理で止まってしまうと、Aの残高は減っているのにBの残高はそのままという不都合が生じてしまいます。この2つの処理をトランザクションとしてまとめておけば、途中で処理に失敗しても、最初の状態に戻れるのです。
たとえば、Pythonで開発されたアプリであれば、パッケージに含まれている「mysqlclient」を利用することで、MySQLとの接続・操作が可能です。
マルチプロセス・マルチスレッドサポート
アプリケーションサーバのすべてが対応するとは限りませんが、Webアプリにマルチプロセス・マルチスレッド環境を提供するのもAPサーバの機能です。
プロセスとは「OS(CPU)で実行中のプログラム(タスク)」のこと、スレッドとは「プロセスに含まれる並行処理のひとまとまり」のことです。OSはアプリからのプロセス実行リクエストに対し、物理メモリを割り当てたうえでスレッド処理を実行します。
しかし、Webアプリのようにアクセスが集中するプログラムの場合、スレッドの待ち時間が発生する分だけメモリ効率が悪化し、メモリリークや処理速度の低下を引き起こします。
APサーバがマルチプロセス・マルチスレッドをサポートすることで、アプリのパフォーマンスを担保できるのです。
Java Servlet・JSP
JavaでWebアプリを開発する際に必須となる、Java Servlet(サーブレット)/ JSPの機能を提供するのもアプリケーションサーバの機能 / 役割です。
Javaで開発されたWebアプリは、ユーザーのリクエストに応じた処理を担うプログラム「サーブレット」、ユーザーにレスポンスするHTMLファイルにJavaコードが埋め込まれた「JSP」が連携する仕組みが採用されています。しかし、サーブレット / JSPはそれ単体では動作しないため、実行のトリガーとなるプログラムが必要。Java向けのAPサーバには、サーブレット / JSPを動作させる標準機能が搭載されているのです。
Javaアプリ開発の詳細は下記記事をご参照ください。
関連記事:Javaアプリ開発で作れるアプリ・必要な開発環境・フレームワークを紹介!
【無料】Webアプリ開発のアプリケーションサーバについて相談する
Webアプリ開発での主なアプリケーションサーバ
Webアプリ開発で重要な役割を担うアプリケーションサーバは、対応するプログラミング言語、機能、役割に応じたさまざまなツールが存在します。そのため、開発するアプリに応じた適切なAPサーバを選択することが重要。以下から、Webアプリ開発でよく利用される、主要なアプリケーションサーバを紹介していきましょう。
Apache Tomcat(Java)
画像引用:Apache Tomcat
「Apache Tomcat」は、1999年に初版が公開された、オープンソースのWebサーバ・アプリケーションサーバです。Jakarta EE(Java EE)に準拠したJavaサーブレット・JSPコンテナ機能を標準搭載し、JavaでWebアプリを開発する際のデファクト・スタンダードといえるサーバです。Webサーバ機能も搭載しているため、Apache Tomcatのみでも動作しますが、Apache HTTP ServerのようなWebサーバと組み合わせて利用することも可能。商用アプリケーションサーバにも見劣りしない高性能アプリケーションサーバです。
PUMA(Ruby / C)
画像引用:PUMA
「PUMA」は、2011年に初版が公開された、オープンソースのWebサーバ・アプリケーションサーバです。Rubyのアプリケーションサーバとしてデファクト・スタンダードの地位を築いていて、Cでも利用可能。HTTP 1.1に準拠したWebサーバの機能を持ち、マルチプロセス・マルチスレッドのRuby環境を構築できます。良好なメモリ管理とパフォーマンスを両立させた人気のサーバです。
NGINX Unit(Python / Go / Ruby / PHP)
画像引用:NGINX Unit
「NGINX Unit」は、Webサーバ「NGINX」で知られるNGINXのソフトウェアチームが開発し、2018年にV1.0が公開されたオープンソースのアプリケーションサーバです。Python / Go / Ruby / PHP / Perlに対応し、異なる言語で構築されたNGINX UnitをRESTful APIで接続できます。それぞれを動的に制御できるため、アプリの入れ替えやバージョンアップ、コンフィギュレーションの変更をダウンタイムなしで実行可能です。
今後はJava / JavaScript / Node.jsのサポートも予定され、Webサーバの機能も併せ持つ軽量なアプリケーションサーバとしての進化が期待されています。
iOS・Androidアプリ開発ではサーバレスが利用されることも
一般的なWebアプリを開発する場合、IaaS・PaaSどちらを利用するにしても、実行環境としてのアプリケーションサーバは重要な要素のひとつです。しかし、iOS・Androidネイティブアプリにデータ管理やプッシュ通知などの機能を提供したい場合、サーバレスをバックエンドに採用するパターンが増えています。
サーバレス・コンピューティングとは、サーバの存在を意識することなくアプリを開発して運用できる実行モデルのこと。ハードウェアとしてのサーバが存在しないわけではありませんが、アプリケーションサーバは不要。モバイルアプリ開発でよく利用されるサーバレスサービスには「Firebase」などのmBaaS(mobile Backend as a Service)が挙げられます。Firebaseは、アプリ・ゲームなどのバックエンドサービスをクラウドで提供する「mBaaS(mobile Backend as a Service)/ BaaS(Backend as a Service)」です。
※mBaaS:スマホ向けアプリが必要とするサーバ側の色んな機能を一括提供できるサービス
2011年にFirebase社が提供開始したmBaaSですが、2014年にはGoogleが買収。以来、Googleのサービスとして継続的な進化を遂げながら提供され続けています。
Firebaseの詳細は下記記事をご参照ください。
関連記事:アプリ開発を効率化するFirebaseとは?活用するメリット・注意点・アプリとの関係性を解説!
【無料】Webアプリ開発のアプリケーションサーバについて相談する
アプリ開発サーバーまとめ
本記事では、アプリケーションサーバがWebアプリ開発でどのような役割を果たしているのか?Webアプリの仕組みやWeb3層構造との関連を含め、知っておきたいアプリケーションサーバの基礎知識を解説しました。また、主要なアプリケーションサーバも紹介してきました。
OSやミドルウェアをはじめ、構造が複雑になりがちなWebアプリ開発では、アプリケーションサーバの役割を把握しておくことが重要です。
※アプリ開発に豊富な実績を持つシステム開発会社を探している方は、システム幹事にご相談ください。専任のアドバイザーが最適な開発会社をご紹介します。相談料などは一切かかりませんので、お気軽にお問い合わせください。
コンサルタントのご紹介
岩田
専任のコンサルタントが、
お客様の予算と目的を丁寧にヒアリング。
最適な会社をピックアップ・ご紹介させていただきます!
初心者の方でも安心してご相談いただけます。
Q. アプリケーションサーバーとは何ですか?
アプリケーションサーバーとは、OSとアプリケーションの機能を補完するソフトウェアを指します。OS・Webサーバ・データベースを相互接続し、データの受け渡し・処理を含むアプリの実行環境を提供しているのが特徴です。
Q. Webアプリ開発のアプリケーションサーバのメリットは?
Webアプリ開発のアプリケーションサーバのメリットは「アプリのパフォーマンスを担保できる」「Webアプリ開発の効率を高められる」などです。詳細は記事内で紹介していますので、ぜひご覧ください。
この記事を書いた人
梓澤 昌敏
専門分野: 音楽・映像制作、オウンドメディア、ビジネス
音楽・映像制作の現場を経て、スタジオ構築側の業界へ。マネージャー・コンサルタントとして制作現場の構築に携わる一方、自社オウンドメディアの立ち上げを含むマーケティングも担当してきました。現在アメリカ在住。作曲を含む音楽制作も提供しています。
このライターの記事一覧