Apacheとは
Apache(アパッチ)とは、長い実績を持ち高いシェアを誇る、オープンソースソフトウェア(OSS)のWebサーバーソフトです。マルチプラットフォームで、Linux・UNIX・MacOS・Windowsなど、ほとんどの環境に対応している点も人気の理由です。
Apacheは軽快な動作と使い勝手の良さが評価され、2022年5月現在のシェア率※は31.6%、1位のNginx(シェア率33.3%)に肉薄しています。
この記事では、WebサーバーソフトのApacheの特徴、メリットやデメリット、よく比較に上がる他のWebサーバーソフトなどについて紹介していきます。
【参考】:※5月Webサーバシェア、NginxとApacheが増加 | マイナビニュース
【参考】:Welcome! - The Apache HTTP Server Project
Webサーバーとは
ApacheはWebサーバーソフトですが、Webサーバーとは私たちが普段利用しているWebブラウザ(ChromeやEdgeなど)からのリクエストに対し、自身が管理しているWebページのHTMLファイル、画像ファイルやデータなどをWebブラウザに返す役割を担ったサーバーです。
このやり取りでは、HTTP(HyperText Transfer Protocol)という通信プロトコルが使われ、Webサーバーの所在地を表すものとして主にURL(Uniform Resource Locator)が用いられ、「https:// ~」のように表されています。
Webサーバーは利用者を識別し、認証することで、利用者ごとに異なる情報や機能を提供することができます。
また利用者からのアクセス要求に従って、所定のソフトウェアを実行し、動的なWebページを生成して送信したり、他のシステムと連携して複雑な処理を行う機能を持ったりするWebサーバーもあります。こうした複雑な処理を行うWebサーバーは、Webアプリケーションサーバ(Web application server)と呼ばれています。
Web サーバーソフトはいくつもの種類があり、Apacheはその中の1つで、正式名称は「Apache HTTP Server」です。他にはApacheと人気を二分するnginx(エンジンエックス)、Microsoft社のIIS(Internet Information Services)が有名です。
【参考】:Home : The Official Microsoft IIS Site
Apacheの歴史
ここでは、Apacheの歴史を確認しておきます。
Webサーバーソフトの第1号である「CERN httpd」が1990年にスイスにあるCERN(欧州原子核研究機構)によって開発されました。
続いて、1993年にNCSA(米国立スーパーコンピューター応用研究所)によって「NCSA httpd」が開発されました。これらのWebサーバーソフトは一部の研究機関や団体で利用される程度で、開発自体も大きく進展していませんでした。
それらを引き継いだのがApacheプロジェクトで、有志が集まってソフトの改良に努め、1995年にApacheの初版がリリースされました。リリース後は当時主流だったNCSA httpdのシェアを追い越し、一気に普及しました。
現在のApacheは米国のApacheソフトウェア財団によって開発が進められ、当初ベースとなったNCSA httpdのコードは残っていません。
【参考】:Apache HTTP Server - Wikipedia
ApacheとTomcatの違い
Apacheを扱うと必ず登場するものに「Tomcat」があります。Apache、すなわち『Apache HTTP Server』とTomcat『Aoache Tomcat』の違いですが、ApacheはWebサーバー、Tomcatはアプリケーションサーバーであり、どちらもApacheソフトウェア財団が開発し、公開している点は共通しています。
Tomcatはわかりやすく説明すると、Javaで作られたWebアプリケーションを実行するためのソフトウェアです。Tomcat自体も簡易的なWebサーバーの機能を持っていますが、メインは「サーブレットコンテナ」です。
サーブレットコンテナとはサーバー上でサーブレット(Webサーバー上で動くJavaで作られたプログラム)を動かす役目をもったソフトの呼称です。
Apacheの特徴
Apacheの概要を理解できたところで、ここからApacheの特徴についてより詳しく紹介します。主にApacheの機能、メリットやデメリット、用途などについて解説します。
Apacheの機能
Apacheは開発から20数年の歴史を有し、その間に大変多くのモジュールが開発されています。その豊富なモジュールによってApacheの機能が支えられています。それらの機能一覧は、Apacheのモジュール一覧※で確認ができます。
【参考】:モジュール一覧 - Apache HTTP サーバ バージョン 2.4
Apacheのメリット
Apacheのメリットは以下の通りです。これらのメリットがApacheの人気の理由とも言えます。
▪OSS(オープン・ソース・ソフトウェア)のため、無償で入手ができる ▪伝統と実績があるソフトウェアのため、Apacheに関する情報が豊富にある ▪豊富なモジュールにより、機能が豊富 ▪C言語で書かれており、動作が軽快で安定している ▪マルチプラットフォームのため、動作環境を選ばない
Apacheのデメリット
以上のような多くのメリットによって人気を博しているApacheですが、以下のような問題点もありますので、Apacheを導入する際には問題点についても認識し、必要に応じて対策を講じておくことが重要です。
▪ApacheにはUNIX系OSの弱点であるプロセス数の限界※(32768リクエスト)が最大の同時接続台数となり、大規模ユーザーを抱えるWebサービスではアクセス上限台数を超えると遅延が起きる問題がある
【参考】:※c - Maximum PID in Linux - Stack Overflow
▪OSSであるがゆえに動作保証や技術サポートを受けられない(世界中で長年に渡り使われているソフトウェアのため、問題解決はしやすい)
Apacheの主な用途
Apacheは元々汎用性が高く、軽快で安定性が高いため、個人サイトからECサイトまで幅広く対応可能です。ただし、デメリットで説明したように、同時アクセス数の限界があるため、SNSなど大勢のユーザーが集うようなサイトは対策が必要になります。
物理的な環境の整備・対応モジュールの適用・運用見直しなどでデメリット緩和は可能ですが、他のWebサービスの採用や併用策も1つの方法です。
Apache Log4j とは
2021年12月に、「Log4j」※というキーワードが大きな話題になりました。Log4jは、Javaアプリでよく使用される「API」で、正式には「Apache Log4j」です。
Log4jはJavaアプリの標準的なログ入出力用のライブラリ(API)で、世界中のJavaアプリで広く利用されていますが、悪用される重大なリスクが発見され話題になりました。「Apache Log4j 2.15.0」以降の新しいバージョンの適用でリスク回避が図れます。
Webサーバーは私たちの生活に欠かせない重要な機能ですが、逆にリスクにさらされやすいという問題をはらんでおり、便利な機能を利用する際には常にリスクに目を向けておくことが大切です。
【参考】:※Google、Apache Log4j 2の脆弱性の影響受ける1.7万超のJavaパッケージ検出|マイナビニュース
Apacheと他のソフトとの違い
ここまでApacheについて紹介してきましたが、記事の中で触れた他のWebサービスソフトの概要について紹介をしておきます。Apacheを導入する際にはこれらの製品と比較検討することをおすすめします。
Nginxの特徴
Nginx(エンジンエックス)は、2004年にロシアのIgor Sysoevによって開発されたWebサーバーソフトです。オープンソースですが、Nginx社が販売を行っており、サポートがある点がApacheとは異なります。
Nginxのメリットとしては、高い処理能力・並行処理能力を持ちながら、メモリ消費量が少ない点が挙げられます。NginxはApacheの弱点とされる「大規模同時接続」の克服に力を入れて開発を進めてきました。この結果、Ngnixはシェアを確実に伸ばし続け、最近のシェアではトップだったApacheを上回るようになっています。
IISの特徴
IIS(アイアイエス)は、Microsoft社が開発・提供しているWebサーバーソフトです。IISが広がるまでWebサーバーソフトはApacheの独り舞台でしたが、2000年登場のサーバーOS:Windows 2000からIISがOSの標準機能として組み込まれるようになり、Windows系サーバーの展開と合わせてシェアを拡大していきました。
IISはマイクロソフト製品(WindowsOSやSQLServerなど)との親和性が高いのが大きな特徴です。また、IISはAzureサービスの「Azure Web Apps」でもオンプレミス感覚で利用できますので、クラウドでの利用にも適しています。
【参考】:Web App Service | Microsoft Azure
目的に合ったWebサーバーを選択しよう
ここまでWebサーバーソフトのApacheの概要、メリット・デメリットなどを紹介し、併せて競合他製品に関しても概要を解説しました。
Apacheは実績や豊富な機能を持ち、安定性、処理性能に優れたWebサーバーソフトですが、一方で大規模サイトでの大量同時接続に弱い点も指摘されています。
エンジニアを目指す人は、こうした弱点も理解した上で、NginxやIISなど他のWebサーバーソフトと比較し、プロジェクトの目的に合わせて選択する姿勢を持つことが大切です。
Apacheもクラウド対応、AIやビッグデータ分野を視野に入れ、日々進化しています。こうした各製品の動きにも常に注意を払い、最適なシステム環境の構築に努められることをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから