本連載について
WordPressは、W3Techsの統計情報によると世界中のおよそ26%のWebサイトで利用されているオープンソースCMSソフトウェアであり、CMSソフトウェアに限定するとおよそ59%と過半数以上のシェアを有しています。WordPressは当初、GPLライセンスで誰もが無償で利用できることもあり、ブログソフトウェアとして広く利用されてきましたが、最近では、その開発生産性の高さや圧倒的なマーケットシェアを背景に、CMSソフトウェアとしてまたWebアプリケーションフレームワークとしても利用されており、エンタープライズ領域での採用も加速しています。
一方で、WordPressはPHP、MySQLベースの動的なCMSソフトウェアであり、Webシステムそのものとして活用できるというメリットがある反面、エンタープライズ領域での利用が増えるに従って、動作速度としてのパフォーマンス、セキュリティ、高負荷環境での安定性・信頼性、可用性などの要件が求められるようになりました。
そのような要件に応えるべく開発されたのが高速WordPress実行環境のKUSANAGIです。KUSANAGIは標準のLAMP環境に比べておよそ10倍~15倍の実行速度でWordPressを動作させることが可能です。
この連載では、インフラエンジニアの方、また、アプリケーション開発エンジニアの方向けに、KUSANAGIのパフォーマンスを実現させているKUSANAGIが採用する各ミドルウェアなどのサーバの技術を解説していきます。
KUSANAGIはWordPressの高速実行環境ではありますが、実は、KUSANAGIはPHP、MySQLベースのソフトウェアであれば、スクラッチでもフレームワークでもWordPress以外のCMSでも高速に動作させることが可能です。ですから、本連載で解説するサーバの技術の多くは、そのままPHP、MySQLベースのシステムへの導入も可能ですし、WordPress固有の技術についても、その考え方や原理を他のPHP、MySQLベースのシステムへも応用できるものと考えています。
KUSANAGIの概要と特徴
KUSANAGIはプライム・ストラテジー株式会社が開発し、仮想マシンイメージ(仮想アプライアンス)として、オープンソースライセンスで無償提供しているCentOS 7ベースの高速WordPress実行環境です。
2016年3月現在、Microsoft Azure(マイクロソフト)、IBM SoftLayer(IBM)、Amazon Web Services(アマゾン ウェブ サービス)、Cloudn(NTTコミュニケーションズ)、IDCFクラウド(IDCフロンティア)、さくらのクラウド(さくらインターネット)、ConoHa/Z.com Cloud(GMOインターネット)、S-Portクラウド(鈴与シンワート)の9つのクラウドプラットフォームで仮想マシンイメージとして採用されており、すべて無償で利用することができます(各プラットフォームのサービス利用料自体は発生します)。
最大の特徴は、高速であることです。プライム・ストラテジー株式会社のプライベートクラウド上での性能試験の結果では、4vCPUの最大性能時において、WordPressの実行時間3ミリ秒台、1秒あたり1000リクエスト超をページキャッシュ非使用で実現しています。また、同一仮想マシンインスタンス同士での比較では、CentOS 7ベースの標準のLAMP環境に比べておよそ10~15倍の実行速度でWordPressを動作させることが可能です。
ですが、もともとKUSANAGIはエンタープライズ領域での現場のニーズに基づいて開発されてきた経緯があり、高速であることの他にも、エンタープライズ領域で必要とされる要件を満たせるように、いくつかの方針に従っています。
例えば、KUSANAGIの採用するミドルウェアやライブラリはすべてyumリポジトリで管理されており、HTTP/2、Let's Encryptなどの新しい技術がリリースされた場合も、セキュリティリリースの際も基本的にはyum updateコマンドでアップデートが可能です。
また、CentOS 7をはじめ、ミドルウェアなどについても、標準的なメインストリームの技術のみを採用することによって、極力、環境への依存性を除去し、ブラックボックス化を防いでいます。
さらに、Webサーバについては、Apacheとnginxを、PHP処理系については、PHP 7、HHVM、PHP 5のそれぞれを採用しており、例えば、Apache+PHP 7、nginx+HHVMのような構成を同一の仮想マシン内でコマンド一つで切り替えることが可能です。これも、「どうしても.htaccessを使いたい」「同じ仮想マシン内の環境で採用するミドルウェアとの適合性をテストしたい」「最新のミドルウェアを使いたいがフォールバックできるものを用意しておきたい」などの現場の切実なニーズに応える工夫の一つです。
ですから、KUSANAGIの採用するサーバの技術を学ぶことは、みなさんにとって、複数の最新の技術を学ぶ機会になるとともに、プラットフォームなどに依存しない、標準的な知識の習得となるものと思います。
CentOS 7をはじめとする標準的な技術しか採用していないKUSANAGIがなぜこれだけのパフォーマンスを出すことができるかというと、それは、オペレーティングシステムのレイヤーから、ミドルウェア、アプリケーションのレイヤーまで、すべてのレイヤーで高速化のためのチューニング技術を導入しているからです。
Webアプリケーションを垂直に構成する要素が7つあるとして、一つ一つの要素にチューニングを施して、一つ一つのパフォーマンスを50%向上できたと仮定すると、全体のパフォーマンスは1.5の7乗で約17倍向上することになります。これが、KUSANAGIのヒミツです。本連載では、その一つ一つとなる、KUSANAGIを支えるサーバの技術を解説していきます。