ShareThis' Meteorアプリを大規模に構築する経験

By Vijay Annapureddy

ShareThis 、Meteorを使ってWebアプリを構築しています。Meteorは、純粋なJavaScriptでWebアプリやモバイルアプリを構築するためのフルスタックプラットフォームです。Meteorアプリには、クライアント(ブラウザ)上で実行されるクライアントサイドコンポーネントが含まれており、これによりMeteorはデータベース・エブリシングと呼ばれる作業を行うことができます。Meteorはデータベースのサブセットを取得し、それをクライアントにコピーします。HTMLコードをクライアントに送信する代わりに、Meteorアプリは実際の生データを送信し、クライアントにそれを処理させます。

ShareThis' インフラの65%はドッカー化されており、Kubernetes上で動作しています。また、Meteorを効果的に使用するためには、月に数百万のリクエストを処理する能力を持つMeteorアプリをスケールアップして構築する必要があります。そのために、まずMeteorアプリの負荷テストを行い、大量の同時リクエストが発生したときの1秒あたりのリクエスト数に対するパフォーマンスを観察しました。MongoDBのUIのバックエンドからデータをレンダリングするために、Meteorサーバーはレコードのセットをパブリッシュしました。MeteorにMongoDBを加えて動作させたアプリのレスポンスタイムは満足のいくものではありませんでした。同時実行レベル125で185リクエスト/秒のテストを行ったところ、meteorが5,000のMongoドキュメントを更新するのに1.5秒かかりました。理想的なレスポンスタイムは1秒以下であるべきです。

MeteorをKubernetes上で大規模に運用することで観察された重要なことがあります。
MeteorのデフォルトのPublisherとSubscriptionでは、大量のMongoDBアップデートをリアルタイムにレンダリングできない。
Meteorのsock.jsと付箋セッション要件により、ロードバランサーの後ろで複数のMeteorインスタンスが並行して動作している場合、UIが不安定になる。

Meteorのスケーリングに対するアプローチと、Meteorのアーキテクチャに加えた変更点についてはこちらをご覧ください。

著者について
ShareThis

ShareThis は、2007年以来、ソーシャルシェア、インタレスト、インテントのデータを統合することで、グローバルなデジタル行動の力を引き出してきました。300万以上のグローバルドメインにおける消費者の行動をもとに、ShareThis は、実際のデジタルデスティネーションにおける実際の人々の行動をリアルタイムに観察しています。

会社概要

ShareThis は、2007年以来、ソーシャルシェア、インタレスト、インテントのデータを統合することで、グローバルなデジタル行動の力を引き出してきました。300万以上のグローバルドメインにおける消費者の行動をもとに、ShareThis は、実際のデジタルデスティネーションにおける実際の人々の行動をリアルタイムに観察しています。