BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース WebサイトをスケールするためにMozillaで学んだこと

WebサイトをスケールするためにMozillaで学んだこと

原文(投稿日:2013/02/08)へのリンク

 

MozillaのWebオペレーションエンジニアであるBrandon Burton氏によると、Mozillaは自ら学んできた単純なスケーリングパターンによって、Webサイトを何千ユーザから何億ユーザまでスケールしている。彼らが学んだ教訓には、キャッシュ、Webサーバのスケールアウト、非同期ジョブ、データベースが含まれる。Brandon氏は先週、Los Angeles DevOpsミートアップにおいて、こうしたトピックに関するMozillaの考察について発表した。さらには、セルフサービスデプロイメントやPaaS、パブリッククラウドの利用など、MozillaのDevOpsに関する今後の計画について紹介した。Brandon氏のプレゼンの要点を以下にまとめる。

キャッシュ: 3種類のキャッシュ(インメモリデータキャッシュ、ローカルアセットキャッシュ、グローバルアセットキャッシュ)を使うことで、Webサイトを効率的に運営している。インメモリデータキャッシュ(たとえば、セッション状態のためのmemcache)は、ステートレスプロトコルであるHTTPリクエスト間の状態を保持するのに最適な方法だ。次に、Webサイトの直前に置くローカルアセットキャッシュ/プロキシは、画像をはじめとする静的ファイルを格納することで、Webサーバに処理の負荷をかけることなく、すばやく情報を提供することができる。これにはStingrayVarnishSquidといったツールがある。最後に、グローバルアセットキャッシュ(たとえば、コンテンツ配信ネットワーク(CDN))は、先ほどのローカルアセットキャッシュと同様の責務を持つが、よりエンドユーザに近いキャッシュファイルを格納し、ユーザの場所に基づいて動的に最適なインターネットルートを選択することができる。Brandon氏によると、MozillaはCDNとしてAkamaiEdgeCastを使っているそうだ。

Webサーバのスケールアウト: Webサーバは自動的に利用、設定することで、スケールアウトすることができる。それぞれのWebサーバは、自身もしくは(HTTPリクエスト経由で)ほかのWebサーバのために永続性を必要とするステートをローカルに保持しない。事実上「何も共有しない」とうことだ。WebサーバはmemcacheNFSS3といった技術を利用して、ステートを自身の外部に格納する。これによって、WebサーバはほかのWebサーバに悪影響を及ぼすこなく、破棄したり追加したりすることができる。自動化ツール(たとえば、cfengineOpscode ChefPuppetなど)を使うことで、Webサーバを既知の運用状態にセットアップし、スケールするためのWebサーバのプールに追加することができる。こうしたツールはWebサーバ全体のアップデートも管理することができる。

非同期ジョブ: ユーザはWebサイトにすばやいレスポンスを期待している。ユーザリクエストを非同期に処理することで、サーバにおける計算リソースの競合を取り除き、エンドユーザのリクエストに対する反応を改善することができる。パフォーマンスを維持するためには非同期にするしかないような、複雑なタスクをリクエストする場合がある。Brandon氏によると、MozillaではCeleryRabbitMQといったツールを組み合わせることで、タスクの非同期処理をうまくやっているそうだ。

データベース: MozillaはマルチマスターMySQLによって、高い可用性を提供している。MySQLスレーブは、データへの読み出し専用アクセスを提供するために使われる。さらにスレーブはロードバランサの背後にあるので、読み出しリクエストは処理分散され、個々のサーバのオーバーロードが避けられる。またFusion-IOKingston SSDストレージによって、データベースのパフォーマンスを向上させることができる。また、こうしたデータベースシステムを維持する「すぐれたデータベースアーキテクト(Awesome DBA)」の重要性についても言及していた。

Brandon氏はMozillaにおけるDevOpsの改善計画について紹介した。彼らはJenkinsによるセルフサービスデプロイメントを構築する予定で、さらに、ActiveStateのStackato技術をベースとする内部開発チームのためのPaaSを構築中だ。MozillaはAWSパブリッククラウドへのスケーリングにも取り組んでいる。

Brandon氏は今月ロサンゼルスで開かれるScale11xカンファレンスにおいて、その技術的詳細を説明するそうだ。彼は毎週1時間、DevOpsの話をするGoogleハングアウト、hangopsの運営を支援している。そこでは、文化、遠隔作業、運用ツールなどのトピックが取り上げられている。

 

この記事に星をつける

おすすめ度
スタイル

BT