eZ PublishとデモサイトとVarnishと
テクニカルディレクター 水上 勇人本年は弊社が取り扱っている2つのWebCMSツール(eZ PublishとExpressionEngine)について、ご理解やご興味を深めていただけるよう以下のような取り組みをしてまいりました。
- CMS Blog、セミナーなどでのWebCMSツールや事例のご紹介
- WebCMSツール別のデモサイト公開
また、コラム後半ではワンランク上を目指す取り組みを紹介させていただきます。
- Varnish(リバースプロキシ)を利用したパフォーマンス向上と負荷軽減
CMS Blog、セミナーなどでのWebCMSツールや事例のご紹介
本年スタートしましたCMS Blogでは、eZ PublishやExpressionEngineなどのWebCMSについて、その手法、ノウハウ、参考になりそうなリソースなど、WebCMSの活用情報をさまざまな角度からお届けしております。2009年は各ツール別のデモサイトを開発した際の舞台裏や、失敗しないCMS導入の勘所などを連載形式で更新しております。
弊社セミナールームにて開催いたしましたCMSをメインテーマとして扱うセミナーでは、WebCMSの全般的な動向、eZ Publish とExpressionEngine それぞれの概要説明および事例紹介をベースとした課題解決についてご紹介させていただきました。2009年は3回実施しましたが、2010年も引き続き実施させていただく予定でおります。
また、7月にノルウェー大使館で行なわれたeZ Systems主催のeZ Publishサービス・ソリューションセミナーでは、弊社の取り組みやeZ Publishの教育サービス(弊社エンジニアがeZ Publishの設計思想や実装ステップについてオリジナルテキストを用いて実践的な内容でご提供)のご案内をさせていただきました。
本年いただいております各種お問い合わせや、CMSを活用したWebサイトのご提案させていただく機会を通じてeZ Publishを実際に使ってみたいという要望をお持ちの企業、組織の方々が複数いらっしゃることが実感できております。そして、弊社の豊富な実績と共に何らかの形でサポートできる部分があるのではないかと感じています。
WebCMSツール別のデモサイト公開
CMSをベースに構築した2つのデモサイトは、実際にお客様と同じモニタを確認しながらデモンストレーションや、管理画面に実際に触れていただくという形でご案内させていただいております。デモサイトのモデルとなっているのは本年から新たに提供させていただいておりますCMSのソリューションパッケージ「セミナー情報管理ソリューション」です。デモサイトができたことで、デモサイトを通じてお客様とその場で意見交換していけるようになりました。デモサイトがコミュニケーションツールとなったことで、お客様が“組織として”必要とされている機能やしくみについて、お打ち合わせの中でご意見をいただく機会や勉強させていただける機会が増えている状況となっております。いただいたご意見を参考にさらなる発展を目指したいと考えております。
なお、デモサイト構築に関する詳細はCMS BlogにてeZ Publish、ExpressionEngineそれぞれのツール別に触れております。
Varnish(リバースプロキシ)を利用したパフォーマンス向上と負荷軽減
ここからは、WebCMSを活用したWebサイト構築においてワンランク上を目指す取り組みのご紹介となります。オープンソースのリバースプロキシソフト(Varnish)とEdge Side Include(ESI)を活用した、動的なWebアプリケーションの高速化と負荷軽減に関する試みです。(eZ PublishとExpressionEngineはWebブラウザからの要求に対して要求毎にページを生成して応答する動的WebCMSに分類されます。)
Varnishの利用で期待できる効果
Webページの表示は、WebブラウザとWebサーバの間でやり取りされる複数の要求と応答で成り立っています。リバースプロキシの大きな役割は、WebブラウザとWebサーバの間に立って要求を代理で処理(応答)することであり、Webページを構成するhtmlファイル、画像ファイル、動画ファイルなどをキャッシュすることができます。その結果、リバースプロキシの活用は以下のような効果が期待できます。
- 頻繁に要求されるデータ、ファイルをより迅速に応答できる(高速化)
- WebサーバやDBサーバのWebページ生成に関する負荷を軽減することができる(負荷軽減)
異なるWebブラウザ(サイトビジター)からの同じファイルに関する要求は、メモリ上に格納しているキャッシュ済みのデータを応答するのみで完了します(動的サイトでありながら要求毎のWebページ生成の処理は必要なくなります)。同じファイルへの不特定多数の要求はキャッシュしたデータから応答が行なわれるため、動的サイトが行なうDBから素材を調達してWebサーバで加工して応答する必要はなくなります。調達と加工(Webページ生成)の処理が必要な場合にのみ行なわれるようになり、結果としてWebページ生成に関する負荷を軽減することができます。
ESIの利用で期待できる効果
ESIを利用することで、Webページ(htmlファイル)単位ではなく、Webページを構成するパーツ単位でのキャッシュも可能となります。ESIは、XML形式のマークアップ言語によってWebページのパーツ(ブロック)をキャッシュする、キャッシュしないに区別することができ、区別された情報をリバースプロキシにて1つのWebページとして動的に組み立ててWebブラウザからの要求に対して応答することができます。その結果、ESIの活用は以下のような効果が期待できます。
- 動的なWebアプリケーションのWebページの部分キャッシュによる高速化と負荷軽減
さて、ここでどんなシーンでESIの利用が有効となるかについて触れてみたいと思います。
htmlファイルは特定の時間はキャッシュを利用してWebブラウザからのリクエストに応答していきたい状況で、1つのページに“キャッシュさせてはいけないパーツ”があるとします。たとえばログイン処理をした後によくみかける“ようこそAさん”の要素(図1の緑のブロック)を考えてみます。Aさんは、キャッシュが存在しない状態でログインした最初の人である場合、リバースプロキシでのみの処理・応答(ESIを利用しない)となるとhtmlファイルをキャッシュしてしまいますので、後から訪れたAさんではない方にも“ようこそAさん”が表示されてしまいます。リバースプロキシキャッシュの粒度がファイル単位(たとえばhtmlなどのページ全体)であるものがESIを利用することで、“特定のhtmlファイルのこのパーツはキャッシュさせない”というより細かい粒度に分割することができるようになります。大きな枠で区切るとすれば、コーポレートサイト(情報配信がメイン目的であるサイト)はリバースプロキシの利用、コミュニティサイト(サイトビジターからのリアクションがあるサイト)はリバースプロキシとESIの利用が有効と言えるでしょう。
また、図1にある通り、ESIブロックはそれぞれ自動キャッシュさせる時間を指定することが可能です。ほぼ更新が行なわれないであろうテンプレートは3日毎にキャッシュを更新し、動画ファイルなど更新頻度の少ないであろうESIブロック程キャッシュ更新頻度を長く、新着記事など更新頻度の高いであろうESIブロック程キャッシュ更新頻度を短くすることができます(もちろん、キャッシュを自動更新まで待たずに破棄させることもできます)。そして、メモリ上にキャッシュされたESIブロックをIncludeしてWebページを組み立てるのはリバースプロキシの役割です。
このように、リバースプロキシとESIの利用によりWebアプリケーションサーバがWebページの生成と配信の2つの大変な役割を担当する状況から、Webページの生成をメインの役割とし、リバースプロキシがWebページのパーツの統合とWebページ配信の役割を担う状況となり、Webアプリケーション高速化とWebサーバやDBサーバの負荷軽減につながります。
Varnish、ESI、eZ Publishとその技術検証に関する今後の話
リバースプロキシを実現するソフトウェアはいくつかあり、代表的なところではSquidがあります。VarnishはSquidとは設計思想が異なるリバースプロキシ向けオープンソースソフトです。Squidはプロキシサーバ向けとしてもよく利用されますが、Varnishは最初からリバースプロキシ向けに設計・開発されており、高速化のためVCL(Varnish Configuration Language)という独自の設定言語を利用しています。また、ESIを部分サポートしています。LinuxのKernel2.6系やFreeBSDの6あるいは7系、Soraris10で動作します。2006年にバージョン1がリリースされており、執筆時点での最新版は2009年11月9日にリリースされているバージョン2.0.5となります。
eZ PublishとVarnish、ESIに関する詳細は弊社CMS Blogにて連載を開始しています。また、前出のデモサイトでは、Varnishを導入しております。CMSに限った話ではありませんが、近年のWebアプリケーションは動的にページを生成するものがほとんどであり、Webアプリケーションの役割であるコンテンツ生成と配信の負荷は高まるばかりとなっています。インフラ面のコストを最小限に抑えて最適なパフォーマンスを実現するために、VarnishとESIの利用を積極的に行なっていきたいと考えております。
Newsletter
メールニュースでは、本サイトの更新情報や業界動向などをお伝えしています。ぜひご購読ください。