BT

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

| 作者: Aslan Brooke フォローする 0 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2013年2月25日. 推定読書時間: 4 分 |

原文(投稿日: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の運営を支援している。そこでは、文化、遠隔作業、運用ツールなどのトピックが取り上げられている。

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT