Pinterestはいかにスケーラビリティと格闘してきたのか(前編)。QCon Tokyo 2013 - Publickey

Pinterestはいかにスケーラビリティと格闘してきたのか(前編)。QCon Tokyo 2013

2013年5月14日

4月23日に都内で開催されたエンジニア向けのイベント「QCon Tokyo 2013」。急速に人気サイトへと成長したPinterestが、その裏でいかにスケーラビリティと格闘してきたのかをPinterestのエンジニア自身が紹介するセッション「Scaling Pinterest」が行われました。

この記事では、その内容をダイジェストで紹介しましょう。

つねにシステムのどこかが壊れている

Pinterest、Marty Weiner氏。

fig

Pinterestはオンラインのピンボードで、ユーザーが「ボード」を作成して、そこに画像など好きなものをアップロードしてシェアできるというもの。「ピン」ひとつひとつが画像やリンクになっている。

ユーザーやボードをフォローすることもできるし、再ピンしたりイイネしたり、コメントの入力もできる。

fig

発足したのは2010年3月。当時は創業者が2人エンジニアが1人。Rackspaceのホスト上にWebエンジンが1つ、MySQLエンジンが1つ。

fig

最初の1年はステルスモードで、2011年1月にサービスをオープン。Amazon EC2を使ってWebエンジンが4つ、MySQLにリードのスレーブ。MongoDBも使い始めた。エンジニアは2人。

fig

その後の9カ月は悪夢のような状態で、1カ月半ごとにスケールが2倍になっていく。こういうときにはつねにシステムのどこかが壊れており、エンジニアは睡眠をとる時間もないほど対応に追われる。そこへベンダがやってきて、この製品がすべてを解決するといって商品を売り込んでくる。

fig

で、これは読むというより恐怖するスライドだ。データベースだけでMySQL、Cassandra、Membase、Redis、MongoDBと使われていて、3人のエンジニアがとにかく動かし続けるだけで手一杯になった。

fig

そこで私たちが学んだこと、「Lesson Learnd #1」。あらゆるものは壊れるので、とにかくシンプルにすることだ。

fig

2012年にシステムの再構築へ

2012年1月にシステムの再構築を行った。いまや90のWebエンジンと66のMySQLデータベースとMemcache。エンジニアも増えて、フルタイムの運用担当もいる。ここで行ったことが正しければ、システムはこのままスケーラブルになっているだろう。

fig

2012年5月の時点でエンジニアが25名と、アーキテクチャはそのままで各項目の数字が増えているだけになっている。

fig

なぜAmazonを選んだのか?

なぜAmazon EC2/S3を選んだのか。選んだ理由はたまたまなのだけれど、もういちどシステムをやり直すとしてもAmazonを選ぶだろう。

Amazonは信頼性も高いしサポートも良く、周辺ツールも揃っている。いまでもDNSやMapReduceの運用はまかせているし、新しいインスタンスがわずか数秒で使い始められるため、キャパシティプランニングに時間をかけずに済む。

ただし、例えば以前はSSDが使いたくてもサービスとして提供されていなければ使えないなど、任意の構成が利用できるわけではない。これはいまでもそうだ。

しかし選択肢が限られているから悩まなくて済むというメリットもある。

fig

なぜMySQLを利用しているか?

なぜMySQLを利用しているのか? 非常に成熟したソフトウェアでユーザーも多い。破壊的なデータ損失もほとんどない。ほかのテクノロジーでは、がんばってがんばって突然破滅するのに比べると、レスポンスタイムも負荷に応じてリニアに遅くなっていくため扱いやすい。

疑問があれば検索すれば見つかることも多く、フリーであるのも新興企業にとってありがたい。

fig

また、Memcacheは非常に成熟度が高い。コンフィグレーションを間違えない限り障害はないし使い方も分かりやすくクラッシュもせず、フリーである点も有利だ。

後編に続く。後編ではスケーラビリティの鍵となったシャーディングの具体的な方法について

あわせて読みたい

MySQL クラウド 運用・監視




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本