Opera’s newest Web browser introduces a new technology platform, Opera Unite, allowing you to stream music or share files, photos and more, right from the browser. |
Cosimo Streppone - My Opera front page caching and Varnish hackingにおいて、My Operaのフロントページのアクセスを高速化するためにVarnishを導入した経緯と、効果的にVarnishを使うために実施したチューニングが紹介されている。大規模サイトにおけるVarnishの採用事例としてや、モバイルデバイスに対するVarnishの適用事例、カスタム設定の方法として参考になる。
Varnishはアクセラレーションを目的としたリバースキャッシュプロクシ。アクセスの高速化を目的にオペレーティングシステムの機能をフルに発揮するように開発されている。余計なIOを発生させず、設定ファイルすらコンパイルしてバイナリとして読み込むなど、高速化という一点に絞って最適化されている。既存のサーバインフラに挟み込み、あとは設定を記述するだけでよく、高い効果が期待できる。
- 超高速HTTPアクセラレータ最新版"Varnish 1.1"登場
- 【レポート】高速化プログラミングの参照実装としても活用される「Varnish」 (1) OSの機能をフル活用してHTTPサーバの動きを高速化するHTTPアクセラレータ
Cosimo Streppone - My Opera front page caching and Varnish hackingによれば管理しているサーバのトラフィックはMy Operaのフロントページのアクセス数の増減に一致しており、同サーバのチューニングに長い時間をかけているという。Opera Mini 5.0のデフォルトのスピードダイヤル候補にOpera Mini 5.0が含められることになってからは、さらに詳しく状況を調査し、迅速にさらなる高速化の手を検討する必要がでたという。その結果採用したのがVarnishというわけだ。最初の導入は2009年10月であり、特に静的コンテンツを対象として動作させたと説明されている。
My Operaのフロントページはおもに次の区分向けにコンテンツが作成されているという。
- 4種類のブラウザタイプ - Opera Mini、Opera Mobile、IE、そのほか標準規約に準拠したブラウザ
- 18種類の言語
- 2種類のビュー - モバイル、デスクトップ
この組み合わせですでに単一ページに対して100を超えるバージョンのページが存在することになる。画像といった特定のコンテンツのみならず、HTMLページ全体にまでVarnishを適用するには、これらの対象をどこまで絞り込むかが課題というわけだ。特に問題となったのがAccept-Languageの内容だという。分析結果では10,000ブラウザリクエストに対して500の違う値が存在するという。提供している言語は18だから、できればここを500から18にまで絞り込む必要がある。
de-DE,tr;q=0.999,en;q=0.75,fr;q=0.9,it;q=0.8,ja;q=0.2,ru;q=0.1
そこでVarish VCLファイルへAccept-Languageの値をパースして最終的に18言語に落とし込む関数を実装。そのままVarish VCLファイルへ組み込んで利用することにしたという。これで500という対象を18に絞り込むことができ、Varnishでキャッシュが効果的に働くようになったという。
注目されることが少ないポイントではあるが、Varnishの設定ファイルにはC言語のソースコードを組み込むことができる。設定ファイルはGCCでコンパイルされVarnishに読み込まれて利用される。この特徴を活かしてMy Operaの状況に合うように機能を拡張したというわけだ。同機能は設定ファイルよりもVarnishそのもので処理できた方がスケールが出るため、Varnishへの統合にも取り組んでいるという。ソースコードはcosimo's varnish-accept-language at master - GitHubにて公開されている。