Reading Time: 1 minutes
昨今、インターネットを介して何らかのサービスを利用することが当たり前となりました。
今回は、今や私たちの日常に溶け込んでいる「Webアプリケーション」が、どのような仕組みで動いているのかをご紹介し、保有するWebアプリの構成を正しく把握することの重要性を解説します。
Webアプリケーションの構成とは?
Webアプリケーションとは、主にサービス提供者側のサーバー上で動作するアプリケーションのことを指します。
ユーザーはブラウザーからサイトにアクセスすることにより、サービスを利用します。
※一方で、PCにインストールが必要なソフトウェアやスマートフォンアプリは「ネイティブアプリ」と呼ばれます。これらは、各端末にインストールし、アプリケーション本体は端末上で動作します(インターネットに接続する仕組みになっているものもあります)。
Webアプリケーションは、基本的に三層構造と呼ばれる構造になっています。三層構造の各層は以下の通りです。
- プレゼンテーション層
- アプリケーション層
- データ層
プレゼンテーション層
プレゼンテーション層はユーザーが使用するブラウザーとWebサーバーから成ります。
Webサーバーは、ブラウザーからのリクエストを受けること、次項で紹介するアプリケーション層に処理を要求すること、データをブラウザーに送り返すことの3つの役割を持ちます。
Webサーバーとしてよく使用される製品としては、Apache ServerやNginxなどがあります。
アプリケーション層
アプリケーション層は、アプリケーションサーバーを指します。
アプリケーションサーバーは、Webサーバーからのリクエストに従ってプログラムを実行すること、プログラムの結果生成されたコンテンツをWebサーバーに返すこと、データベースのデータが必要な場合は次項のデータベース層へリクエストを送り、データを参照する役割を持ちます。
使用するプログラミング言語によって利用できるアプリケーションサーバーが異なり、Javaの場合はTomcatやJetty、Rubyの場合はUnicornなどがあります。
また、PHPやPythonのように、Webサーバーがアプリケーションサーバーとしての機能にも対応する言語もあります。
データ層
データ層は、データベース層とも呼ばれ、その名前の通りデータベースサーバーを指します。
データベースサーバーはいわゆるDBMS(データベース管理システム)で、データベースにアクセスし、必要なデータの抽出や加工を行います。
データベースサーバーとしてよく使用される製品としては、MySQLやPostgreSQL、Oracle DatabaseやMicrosoft SQL Serverなどがあります。
ここまででWebアプリケーションの基本となるWeb三層構造について解説しましたが、ご自身、もしくは自社で開発・管理するWebアプリケーションのこの三層が、現在どのサーバーに配置されどのように稼働しているかご存じですか?
Webアプリケーションの構成がわからない場合の問題点
保有するWebアプリケーションの構成を正しく把握していないと発生する問題としては、障害発生時の原因特定に時間がかかることが上げられます。
例えば、ユーザーから「Webアプリケーションが遅い」と問い合わせが来たとします。
前述の三層構造のWebアプリケーションの場合を例に挙げます。
ユーザーがアプリにアクセスした際にアプリの動作速度に直接関係する箇所は、具体的に挙げると、
- ユーザーが使用するクライアント端末
- ユーザーが使用するネットワーク
- Webアプリケーションを構成するファイル
- Webサーバー
- アプリケーションサーバー
- データベースサーバー
- サーバーOS
- 各サーバー間のネットワーク
などがあります。
アプリのアクセス数や処理負荷などによりアプリの構成は異なり、ボトルネックとなる箇所も変わります。
小規模アプリの場合は同じサーバー内に3層構造の全てがまとまっていることもありますが、大規模なアプリの場合は各層が別のサーバーに配置され、さらに負荷分散構成などで各層が複数存在することもあります。
このように、一言で「遅い」と言っても、Webアプリの内部ではその原因として考えられる箇所が数多く存在しています。 アプリケーションの構成が把握できていない場合は原因の特定までに時間が掛かってしまいます。
そのような理由から、Webアプリケーションを安定運用するには、Webアプリケーションの構成要素を理解することが重要です。
アプリケーション構成を把握し、運用に活かすには
ただし、アプリケーションの構成が把握できたとして、それをアプリケーションの運用に有効に活かせるかというと、そう上手くは行かない可能性もあります。
まず、アプリケーションの構成を正しく把握し、構成図などを作成したとしても、作成からある程度時間が経っている場合は注意が必要です。
アプリケーションのアップデートやメンテナンスなどを実施した場合、アプリケーションの構成が変化する可能性があります。
アップデート時の変更箇所が構成図に反映されていない、いわゆる更新漏れが発生していませんか? 現在の構成と作成した構成図との間に差分が発生していないか確認する必要があります。
また、最新のアプリケーションの構成が把握できている場合も、障害発生時の原因特定に時間を要することもあります。前項で挙げたようなユーザーからの問い合わせは曖昧であるケースが多く、結局はアプリケーションのログを確認して原因箇所を特定するところから始めなければなりません。
アプリケーション構成を正しく把握し、それを運用に活かすためには、アプリケーションのパフォーマンス計測と併せて利用することが推奨されます。
アプリケーションの各サーバーパフォーマンスを監視ツール等で確認し、その監視結果が構成図にも反映されるようにすることで、問題が発生した際にアプリケーション構成のうちどこで問題が発生しているのかを一目で判別できるようになります。
アプリケーション構成を可視化することで障害調査に掛かる時間を減らし、アプリケーションの運用負荷を下げることが可能になります。
Webアプリケーションの構成要素を簡単に可視化する方法
Webアプリケーションを構築した際に同時にアプリケーション構成図などを作成したとして、その後アプリケーションのアップデートの度に構成図を更新していくのは、手間がかかる作業です。
また、監視ツールと構成図を連携するためには開発を必要とするケースもあります。
Webアプリ開発の上に監視ツールの開発にも工数をかけることは現実的でないため、監視ツールにアプリケーション構成図の作成機能が付いているものを選択するのがおすすめです。
ManageEngine Applications Manager
ManageEngineが提供するアプリケーション性能監視(APM)ツールである「Applications Manager」は、Webアプリケーションの構成を自動で検知して可視化するツールです。
Webアプリケーションの構成を自動化するAPMツールについての詳細は以下の資料から是非ご覧ください。
また、Webアプリケーションを構成するフロントエンド・Webサーバー・アプリケーションサーバー・データベースサーバー・プログラム等を監視し、通常時と違う動作を障害と判断することや、障害発生後の一次対応を自動化することが可能です。
Applications Managerのその他の機能については以下の資料をご覧ください。
サーバー・Webアプリケーション監視について口頭で細かく聞いてみたい方は、お気軽に無料のオンライン相談にお申し込みください。
無料オンライン相談に申込む
IT運用管理に関する資料ついて
ゾーホージャパンでは、企業のIT運用管理に役立つ資料や動画を無料で公開しています。 ぜひこちらからご覧ください。
フィードバックフォーム
当サイトで検証してほしいこと、記事にしてほしい題材などありましたら、以下のフィードバックフォームよりお気軽にお知らせください。