Agile Cat — in the cloud

Facebook 探検隊: どのようなソフトウェアでスケールを達成しているのか _2

Posted in Facebook by Agile Cat on July 3, 2010

Exploring the software behind Facebook, the world’s largest site _2
Posted in
Main on June 18th, 2010
by Pingdom

http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/

imageいよいよ本題です。 Facebook のスケールを支えるソフトウェアたちが登場してきます。知っているものと、知らないものが混在していますが、Facebook オリジナルのオープンソースが多いことに驚きました。ーーー A.C.

ーーーーー

 Memcached

Memcached

Memcached is by now one of the most famous pieces of software on the internet. It’s a distributed memory caching system which Facebook (and a ton of other sites) use as a caching layer between the web servers and MySQL servers (since database access is relatively slow). Through the years, Facebook has made a ton of optimizations to Memcached and the surrounding software (like optimizing the network stack).

Facebook runs thousands of Memcached servers with tens of terabytes of cached data at any one point in time. It is likely the world’s largest Memcached installation.

Memcached は、いまではインターネット上の最も有名なソフトウェアの 1つになっている。 分散メモリ・キャッシュ・システムであり、Web サーバーと MySQL サーバーをつなぐキャッシング・レイヤとして(データベース・アクセスが遅いため)、Facebook は使用している(他の多数のサイトも)。 この何年かの間に、 Facebook はMemcached と周囲ソフトウェアに、大量の最適化を施している(ネットワーク・スタックの最適化など)。

Facebook は、いずれかのポイントに一度にキャッシュされる数 10TB のデータを、数 1000 の Memcached サーバーを走らせて処理している。おそらく、それは世界最大の Memcached 設備となる。

HipHop for PHP

HipHop

PHP, being a scripting language, is relatively slow when compared to code that runs natively on a server. HipHop converts PHP into C++ code which can then be compiled for better performance. This has allowed Facebook to get much more out of its web servers since Facebook relies heavily on PHP to serve content.

A small team of engineers (initially just three of them) at Facebook spent 18 months developing HipHop, and it is now live in production.

スクリプト言語である PHP は、サーバー上のネイティブ・コードとの比較において、その実行速度が遅い。 HipHop により PHP は C++ へとコンバートされ、さらにコンパイルされることで、パフォーマンスが向上する。 つまり、Facebook はコンテント・サービスのために PHP に大きく依存しているが、Web サーバーの概念にとらわれず、より多くの成果を得ることになる。

Facebook のエンジニアで構成される小さなチーム(最初は3人)が、18ヶ月の開発期間を HipHop に費やし、いまではプロダクション環境での運用に至っている。

Haystack

Haystack is Facebook’s high-performance photo storage/retrieval system (strictly speaking, Haystack is an object store, so it doesn’t necessarily have to store photos). It has a ton of work to do; there are more than 20 billion uploaded photos on Facebook, and each one is saved in four different resolutions, resulting in more than 80 billion photos.

Haystack は、Facebook の写真を保存/検索するための、ハイ・パフォーマンスなシステムである(厳密には、 Haystack はオブジェクト・ストアであるため、必ずしも写真に限定されない)。 それは、膨大な処理をこなしている。 つまり、Facebook 上には 200億枚以上の写真がアップロードされているが、それぞれが 4つの解像度をもつため、結果として 800億枚以上の写真となる。

And it’s not just about being able to handle billions of photos, performance is critical. As we mentioned previously, Facebook serves around 1.2 million photos per second, a number which doesn’t include images served by Facebook’s CDN. That’s a staggering number.

そして、何 10億枚という写真を、単に処理できることが重要なのではなく、パフォーマンスが重要なのだ。 前述のとおり、Facebook は 約 120万枚/秒の写真を処理しているが、そのには Facebook CDN によりサポートされるイメージは含まれない。それは、ショッキングな数字である。

BigPipe

BigPipe is a dynamic web page serving system that Facebook has developed. Facebook uses it to serve each web page in sections (called “pagelets”) for optimal performance.

For example, the chat window is retrieved separately, the news feed is retrieved separately, and so on. These pagelets can be retrieved in parallel, which is where the performance gain comes in, and it also gives users a site that works even if some part of it would be deactivated or broken.

BigPipe は、Facebook が開発した、Web ページを動的に提供するためのシステムである。 Facebook は 、最適なパフォーマンスを得るためにBigPipe を用いる。 そして、pagelets と呼ばれるセクションで、それぞれの Web ページをサポートする。

たとえば、チャット・ウインドウは別に検索され、また、ニュース・フォードも別に検索される。 これらの pagelets は、並列に検索することが可能であり、パフォーマンスが向上する。 そして、いくつかのパートが正常に機能しない場合や、破壊されている場合であっても、ユーザーには正常なサイトが提供される。

Cassandra

Cassandra

Cassandra is a distributed storage system with no single point of failure. It’s one of the poster children for the NoSQL movement and has been made open source (it’s even become an Apache project). Facebook uses it for its Inbox search.

Other than Facebook, a number of other services use it, for example Digg. We’re even considering some uses for it here at Pingdom.

Cassandra は、シングル・ポイント・フェイルを排除した分配ストレージ・システムである。 Cassandra は、NoSQL ムーブメントを代表する 1つであり、オープンソースとして提供されている(Apache プロジェクトでもある)。 Facebook は、それを Inbox サーチのために利用している。

Facebook 以外にに、たとえば Digg などの、数多くのサービスがも Cassandra は利用されている。 実は、この Pingdom でも利用を検討している。

Scribe

Scribe is a flexible logging system that Facebook uses for a multitude of purposes internally. It’s been built to be able to handle logging at the scale of Facebook, and automatically handles new logging categories as they show up (Facebook has hundreds).

Scribe は柔軟なログ・システムであり、Facebook の内部において、多様な目的のために使用されている。 Scribe は、Facebook スケールでのログ処理ために構築され、また、新しいカテゴリ(Facebook には何100とある)が現われるときに、新しいログ・カテゴリを自動的に処理する。

Hadoop and Hive

Hadoop Logo

Hadoop is an open source map-reduce implementation that makes it possible to perform calculations on massive amounts of data. Facebook uses this for data analysis (and as we all know, Facebook has massive amounts of data). Hive originated from within Facebook, and makes it possible to use SQL queries against Hadoop, making it easier for non-programmers to use.

Both Hadoop and Hive are open source (Apache projects) and are used by a number of big services, for example Yahoo and Twitter.

Hadoop は、オープンソースの MapReduce 実装であり、大量のデータの計算を実現する。 Facebook では、Hadoop をデータ分析(Facebook が大量のデータを有していることは周知の事実)に利用している。もともと、Hive は Facebook で開発されたものであり、Hadoop に対する SQL のクエリーの使用を可能にすることで、ノン・プログラマによる容易な利用を実現する。

Hadoop と Hive は、どちらもオープンソース(Apache プロジェクト)であり、たとえば Yahoo や Twitter などの、数多くの大規模サービスにおいて利用されている。

Thrift

Facebook uses several different languages for its different services. PHP is used for the front-end, Erlang is used for Chat, Java and C++ are also used in several places (and perhaps other languages as well). Thrift is an internally developed cross-language framework that ties all of these different languages together, making it possible for them to talk to each other. This has made it much easier for Facebook to keep up its cross-language development.

Facebook has made Thrift open source and support for even more languages has been added.

Facebook は、それぞれのサービスのために、何種類かの言語を使用している。 PHP はフロント・エンドのために使われ、また、Erlang は Chat に使われ、Java と C++ も各所で使われている(おそらく、それ以外も言語も)。 Thrift は、それら全ての言語を接続する、インターナルなクロス言語フレームワークであり、その結果として、各言語が相互に交信できるようになる。 それにより、Facebook におけるクロス言語での開発が、きわめて容易に維持されることになった。

Facebook は Thrift をオープンソースにしており、また、そこに加えられた言語までもサポートしている。

Varnish

Varnish

Varnish is an HTTP accelerator which can act as a load balancer and also cache content which can then be served lightning-fast.

Facebook uses Varnish to serve photos and profile pictures, handling billions of requests every day. Like almost everything Facebook uses, Varnish is open source.

Varnish は、ロード・バランサとして振舞う HTTP アクセラレータであり、また、瞬時にコンテントを提供するためのキャッシュでもある

Facebook は、通常の写真と、プロファイル用の写真を提供するために Varnish を使用し、数10億のリクエストを、毎日処理している。 Facebook で用いられる、ほとんど全てのソフトウェアと同様に、Varnish もオープンソースである。

ーーーーー

すばらしい好循環が実現されている ・・・ という感じです。一言で、『 圧巻 』 ですなぁ。 ーーー A.C.

ーーーーー

<関連>
Facebook 探検隊: どのようなソフトウェアでスケールを達成しているのか _1
Facebook 探検隊: どのようなソフトウェアでスケールを達成しているのか _2
Facebook 探検隊: どのようなソフトウェアでスケールを達成しているのか _3
ーーーーー
わずか四半期の間に、サーバー数が倍増した Facebook の事情
Facebook の HDFS クラスターは 21 PB !!!
Facebook のスケール感覚に驚愕! _1
Facebook のスケール感覚に驚愕! _2
Facebook で Office ドキュメントを共有する Docs.com を触ってみた
Microsoft TownHall : Windows Azure と Facebook の連携が始まった!
Facebook は RFID タグで、アメリカ版 お財布ケータイを狙うのか?

あなたは、右脳派? 左脳派?

Posted in Out Of Scope, Weekend by Agile Cat on July 3, 2010

右脳・左脳テスト:Right Brain vs. Left Brain test
June 26, 2010
http://longtailworld.blogspot.com/2010/06/right-brain-vs-left-brain-test.html

_weekend

まずは、Long Tail World さんへ行っていただき、以下の絵が回転していますので、時計回りに見えるのか、反時計回りに見えるのか、ご確認ください。時計回りに見えると右脳が働く人で、反時計回りに見えると左脳が働く人、ということです。

___space

左 脳

論理を使う

ディテール主導

事実が何にも勝る

言葉・言語

現在・過去

数学・理科

理解する

知る

unou_sanou

右 脳

感性 を使う

“大局”主導

想像力が何にも勝る

シンボル、イメージ

現在・未来

哲学・宗教

直感で「掴む」(意味)

信じる

___space

ちなみに、Agile_Cat の場合は圧倒的に時計回りで、バシバシと瞬きをすると、2割くらいの確率で反時計回りに見えることがありました。 なかなか、面白いですよ~~~

 

Facebook 探検隊: どのようなソフトウェアでスケールを達成しているのか _1

Posted in .Selected, Big Data, Facebook by Agile Cat on July 3, 2010

Exploring the software behind Facebook, the world’s largest site _1
Posted in Main on June 18th, 2010
by Pingdom
http://royal.pingdom.com/2010/06/18/the-software-behind-facebook/

facebook_logo

At the scale that Facebook operates, a lot of traditional approaches to serving web content break down or simply aren’t practical. The challenge for Facebook’s engineers has been to keep the site up and running smoothly in spite of handling close to half a billion active users. This article takes a look at some of the software and techniques they use to accomplish that.

Facebook の運用スケールにおいて、 Web コンテントをサービスするための、数多くの伝統的なアプローチは失敗し、また、現実的ではなくなっている。 Facebook のエンジニアによるチャレンジは、5億人に近いアクティブ・ユーザーをハンドリングしながら、このサイトを維持して、順調に走らせることにある。 この記事では、その目標を達成するために、Facebook が要しているソフトウェアとテクニックを見ていく。

Facebook’s scaling challenge

Before we get into the details, here are a few factoids to give you an idea of the scaling challenge that Facebook has to deal with:

詳細に入る前に、Facebook が取り組むスケーリングへの挑戦において、その考え方を把握するために有用な、いくつかの事実と思われる項目を提供する:

● Facebook serves 570 billion page views per month (according to Google Ad Planner).
There are more photos on Facebook than all other photo sites combined (including sites like Flickr).
More than 3 billion photos are uploaded every month.
Facebook’s systems serve 1.2 million photos per second. This doesn’t include the images served by Facebook’s CDN.
More than 25 billion pieces of content (status updates, comments, etc) are shared every month.
Facebook has more than 30,000 servers (and this number is from last year!)

Facebook サーバーの PVs は 5700億/月間である(oogle Ad Planner によると)
Facebook にストアされる写真の枚数は、その他すべてのサイトの合計よりも多い(Flickr なども含む)
30億枚以上の写真が、毎月アップロードされる
Facebook のシステムは、毎秒 120万枚の写真を処理する(Facebook CDN での処理は除く)
毎月 250億以上のコンテントがシェアされていく(ステータス・アップデートやコメントなど)
Facebook は 30,000 台以上のサーバーを保有している(2009年末のデータ

Software that helps Facebook scale

In some ways Facebook is still a LAMP site (kind of), but it has had to change and extend its operation to incorporate a lot of other elements and services, and modify the approach to existing ones.

ある意味で、Facebook は依然として LAMP サイトであるが、多数のエレメントとサービスを取り込むために、そのオペレーションを革新し拡張し、また、既存のアプローチを修正しなければならない。

For example:

Facebook still uses PHP, but it has built a compiler for it so it can be turned into native code on its web servers, thus boosting performance.
Facebook uses Linux, but has optimized it for its own purposes (especially in terms of network throughput).
Facebook uses MySQL, but primarily as a key-value persistent storage, moving joins and logic onto the web servers since optimizations are easier to perform there (on the “other side” of the Memcached layer).

 

Facebook は PHP を使い続けているが、コンパイラを構築している。 そのため、Web サーバー上ではネイティブ・コードに置き換えられ、そのパフォーマンスをブーストしている。
Facebook は Linux を使っているが、その目的に合わせて最適化している(とりわけネットワーク・スループットの視点で)。
Facebook は MySQL を使っているが、join と logic を Web サーバーに移行するための、最適化が容易であるという理由から、プライマリーとして key-value persistent storage を使っている(Memcached レイヤの受け側として)。

Then there are the custom-written systems, like Haystack, a highly scalable object store used to serve Facebook’s immense amount of photos, or Scribe, a logging system that can operate at the scale of Facebook (which is far from trivial).

それ以外にも、Facebook における膨大な写真を処理するために用いられる、ハイスケールなオブジェクト・ストアである Haystack や、Facebook のスケールにおいて機能するログ・システムである Scribe のような、カスタム記述されたシステムがある(詳細は不明だが)。

But enough of that. Let’s present (some of) the software that Facebook uses to provide us all with the world’s largest social network site.

しかし、それだけ分かれば充分だろう。さあ、世界最大の SNS を提供するために、Facebook が使用しているソフトウェア(すべてではないが)を見ていこう。

<続く>

ーーーーー

今回を含めて、3回くらいに分けてポストする予定です。それにしても、5700 億 PVs/月 には、笑うしかないですね。 ーーー A.C.

ーーーーー

<関連>
Facebook 探検隊: どのようなソフトウェアでスケールを達成しているのか _1
Facebook 探検隊: どのようなソフトウェアでスケールを達成しているのか _2
Facebook 探検隊: どのようなソフトウェアでスケールを達成しているのか _3

ーーーー
わずか四半期の間に、サーバー数が倍増した Facebook の事情
Facebook の HDFS クラスターは 21 PB !!!
Facebook のスケール感覚に驚愕! _1
Facebook のスケール感覚に驚愕! _2
Facebook で Office ドキュメントを共有する Docs.com を触ってみた
Microsoft TownHall : Windows Azure と Facebook の連携が始まった!
Facebook は RFID タグで、アメリカ版 お財布ケータイを狙うのか?

Tagged with: , , , , , ,
%d bloggers like this: