Pinterestの急成長を支えてきたアーキテクチャとは? Pythonで開発しAmazonクラウドで運用

2012年5月24日

Web上の画像や動画などを気軽にクリップしたり共有できるサービス「Pinterest」が大人気です。楽天が出資したことでも話題になっています。

Pinterest / Home

急速に人気が急上昇するWebサービスでは、どのようにスケールするアーキテクチャを構築し運用していくのかはサービスの成否を分けるほど重要です。Pinterestのように急成長してきたサービスのソフトウェア構成やリソース構成はどうなっているのでしょうか、Web上でいくつか情報が公開されているのでまとめてみました。

Pythonで開発し、Amazonクラウドで運用

1年ほど前なので少し古い情報ではあるのですが、Q&AサイトのQuoraにPinterestのco-founder Paul Sciarra氏が書き込んだソフトウェア構成の説明があります。

PinterestはPythonで開発されており、MemcachedやNginxなど高速なレスポンスに配慮した構成になっている様子がうかがえます。

Pinterest: What technologies were used to make Pinterest? - Quora」の情報を整理して引用します。

  • アプリケーションレイヤにはPythonと大きな変更を入れたDjango
  • WebサーバにはTornadoとNode.js
  • オブジェクトキャッシュ、ロジカルキャッシュにはMemcachedとMembase/Redis
  • メッセージキューイングにRabbitMQ
  • ロードバランシングと静的配信にはNginx、HAproxyとVarnish
  • データストアにはMySQL
  • マップリデュースにはAmazon EMRの上にMrJob
  • そしてコード管理にgit

運用はAmazonクラウド上で行われているようです。Web層だけで150個以上のインスタンスを利用し、データの保存容量は410テラバイト。クラウドでないととてもこの成長を支えられませんね。

今週公開された記事「High Scalability - Pinterest Architecture Update - 18 Million Visitors, 10x Growth,12 Employees, 410 TB of Data」から、ポイントを整理して引用します。

  • Web層には150個のAmazon EC2インスタンスを利用
  • データベースへのロードを減らすために、90個のインスタンスをメモリキャッシュに利用
  • 内部処理用に35個のインスタンス
  • 8000万個のオブジェクトをAmazon S3に保存、総容量は410テラバイト
  • 昨年8月と比較してS3の利用は10倍、EC2の利用は3倍に
  • 70個のマスターデータベースと並列にバックアップ用のデータベースがあり、冗長性のために世界中のアベイラビリティゾーンに分散している
  • もっともトラフィックが増大するのは午後から夕方なので、コスト削減のために夜にはEC2のインスタンスを40%まで減らしている。ピーク時には時間当たり52ドルのEC2の費用は、オフピーク時には15ドルにまで減少する
  • Amazonクラウドの費用は、S3に3万9000ドル(約312万円)、EC2に3万ドル(約240万円)
  • 昨年12月時点の従業員は12人、現在は31人の模様

この記事では「Pinterestの急成長、多数のユーザー、大規模データ、少人数はInstagramにとても似ている」と書いています。シリコンバレーではこのクラスの急成長サービスが複数存在し、そのためのノウハウも蓄積と共有されていっているのでしょう。

追記(2012/5/24):オブジェクトシリアライザMessagePackの作者 古橋貞之氏から「Pinterestではmemcachedに「MessagePack」を組み合わせて使っているらしいですよ。(略)Pinterestのエンジニアから直接聞いたので間違いないです」とのコメントをいただきました

関連記事

Publickeyでは、これまでも大規模なスケーラビリティを実現してきたサービスの仕組みを紹介してきました。よろしければあわせて以下の記事もお読みください。

あわせて読みたい

AWS クラウド




タグクラウド

クラウド
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本


<!- script for simple analytics events -->