BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Instagramはいかにしてステートフルサービスを分割したか

Instagramはいかにしてステートフルサービスを分割したか

ブックマーク

原文(投稿日:2018/11/29)へのリンク

先日開催されたLarge Installation System Administration (LISA) 2018 Conferenceで、InstagramのプロダクションエンジニアのSherry Xiao氏は、自身のチームが、米国と欧州にまたがるデータセンタ間でInstagramのサービスを分割した方法について説明した。氏らは、Facebookのエンジニアリングチームによる新ツールと修正版ツールを使用することで、同社のステートフルサービス – CassandraとTAO – におけるデータのローカリティを達成した。

Facebookは2012年にInstagramを買収し、その後、Facebookのインフラストラクチャに移行した。Facebookのデータセンタは米国と欧州の両方にあるが、当時のInstagramのインフラストラクチャは米国のみであった。Instagramのスタックは、Django、Cassandra、分散データストアのTAO、Memcached、非同期ジョブのCeleryを中心に構成されている。データストレージスペースの制約を解決するためには、サービスを米国と欧州で分割する必要があった。分割に際しては、Cassandraのクォーラム(quorum)要求のレイテンシの高さ、データローカリティのためのデータセットのパーティショニング、EUリージョン内のフェールオーバ、TAOのマスタレプリカの同期といった課題を克服する必要があった。

画像提供 – https://www.youtube.com/watch?v=2GInt9E3vrU

Instagramでは、汎用のキーバリューストレージサービスとしてCassandraを使用している。同社はそれを、他のコンポーネントとともに、AWSからFacebook自身のデータセンタに移動した。Cassandraは、データセンタ間で読み込みと書き込み両方の一貫性を保つため、レプリカによるクォーラムを使用する。データコピーを欧州内のデータセンタに保持することは、ストレージの浪費につながると同時に、クォーラム要求が海を越えることによってレイテンシが高くなるという不都合もあった。そのためInstagramのチームは、Akkioと呼ばれるツールを使用して、米国のユーザのデータは米国内に分散したデータセンタに、欧州のユーザは欧州の3つのデータセンタに持つようにデータを分割した。AkkioはFacebookが構築したデータ配置ツールで、データ検索の最適化が可能である。このツールは、データを論理セットにグループ化した上で、頻繁にアクセスするエンドユーザに最も近いデータセンタに格納する。Xiao氏によると、Akkioは“エンドユーザのアクセスパターンを追跡し、データマイグレーションを起動”する。

このアーキテクチャにより、各データセンタにすべてのデータのコピーを保持する必要はなくなった。米国と欧州のDCは独立して運営可能になり、クォーラム要求は同じ大陸内に留まることになった。InstagramではSocial Hashパーティショナも使用して、多くのフォロワを持つアカウントを中心に、リクエストを適切なバケットにルーティングする処理を行なっている。

TAOはFacebookのソーシャルグラフ用のストレージで、Instagramでも使用されている。分割(sharded)モードでは、TAOはシャード毎にひとつのマスタを持つ。書き込みはマスタ – 米国のデータセンタで稼働している – にのみフォワードされ、レプリカは読み取り専用だ。チームはTAOに手を加えて、欧州内のリージョンローカルなマスタへの書き込みを可能にすることで、大西洋を越えた呼び出しを回避した。なぜここでAkkioを使わなかったのだろうか?“TAOはCassandraと違って、さまざまなデータモデルを持っています”、とXiao氏は説明する。“Cassandraでは、大部分のユースケースがユーザIDをキーとしており、データはユーザ自身に属しています”。これと対照的に、TAOが処理するメディアオブジェクトは、世界中のユーザによってアクセスが可能であるため、Akkioを使ってローカリティを基準としたデータ配置の最適化を行うことはできないのだ。

最終的なアーキテクチャは、Djangoティアをフロントに、パーティショニングされたCassandraとローカルマスタノード書き込みを備えたTAOがバックに配置したものになった。レイテンシとデータセットの相違により、海を越えたディザスタリカバリ(DR)は不可能であるため、マイグレーション作業ではDRプランの変更も行われた。各データセンタに20パーセントの余裕を確保しておくことで、それぞれのリージョンが、フェールしたデータセンタのロードを処理することができる、とXiao氏は説明している。

 
 

この記事を評価

採用ステージ
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT