Agile Cat — in the cloud

PHP サーバー 1台で 30000人のユーザーを同時サポート : 5つの簡潔なレシピとは?

Posted in Big Data, DevOps, Research by Agile Cat on July 10, 2013

5 Rockin’ Tips for Scaling PHP to 30,000 Concurrent Users Per Server
http://wp.me/pwo1E-6lX

July 3, 2013
http://highscalability.com/blog/2013/7/3/5-rockin-tips-for-scaling-php-to-30000-concurrent-users-per.html

_ highscalability

Jonathan Block, CTO at RockThePost.com, a crowd funding company, has written a nice set of tips for smaller sites on how to scale a service on EC2 using a small two person development team.

クラウド・ファンディング会社 RockThePost.com の CTO である Jonathan Block は、二名だけの小さな開発チームが EC2 上のサービスをスケールさせるという、小規模サイトのための素敵なヒント集を記述している。

Their service has a typical small scale structure:

  • PHP’s Zend Framework 2
  • Two m1.medium for web servers
  • ELB to split the load
  • master/slave MySQL database
  • Siege for load testing

彼らのサービスは、典型的な小規模スケールの構造を持っている:

  • PHP のための Zend Framework 2
  • Web サーバーのための 2つの m1.medium
  • 負荷分散のための ELB
  • MySQL Database(master/slave)
  • 負荷テストのための Siege

The very sensible tips that can handle 30,000 concurrent users per web server:

  • Use PHP’s APC feature. APC is opcode cache that is "really a requirement in order for a website to have a chance at performing well."
  • Put everything that’s not a .php request on a CDN. Don’t serve static files from your web server. They put everything on S3 and use CloudFront as their CDN. Recent CloudFront problems have caused them to serve directly from S3.
  • Don’t make connections to other servers in your PHP code. Making connections to other servers blocks the server and slows down processing. Use the APC key/value store for data storage and Varnish for caching full pages.
  • Use Varnish. Using Varnish mage the single biggest difference to their performance under a load test.
  • Use a c1.xlarge. The c1.xlarge has 8 CPUs which really helps under load. The m1.medium has only 1 CPU for processing requests.

1つの Web あたりで、30,000 人のコンカレント・ユーザーを処理するための、とても気の利いたティップス:

  • Use PHP’s APC feature. APC は Opcode Cache であり、きわめて適切なパフォーマンスを、Web サイトが発揮できるようにするための用件である。
  • Put everything that’s not a .php request on a CDN. 対象となる Web サーバーから、スタティック・ファイルを提供してはならない。彼らは、すべてのものを S3 にストアし、 CloudFront をCDN として使用している。最近の CloudFront における課題は、S3 からダイレクトに配信する状況を作ってしまうことである。
  • Don’t make connections to other servers in your PHP code. 他のサーバーへの接続を行うと、そのサーバーがブロックされ、処理が遅くなってしまう。データ・ストレージのために APC key/value ストアを使用し、フル・ページをキャッシュするために Varnish を使用する。
  • Use Varnish. Varnish マジックを利用することで、負荷テストにおけるパフォーマンスのばらつきを軽減する。
  • Use a c1.xlarge. c1.xlarge は、大きな負荷に対して、現実的な効力を持つ 8 CPU で構成されている。また、m1.medium は、1つの CUP でリクエストを処理する。

Pretty straightforward, yet good advice. The original article has many more details and is well worth reading.

かなりシンプルであるが、それなりのアドバイスになっていると思う。 オリジナルの記事は、詳細までの述べているので、読む価値があると思う。

ーーーーー

TAG index次々とマーケットに投入される、新しい概念と常識をベースにした、各種のオンライン・サービスを活用することで、ここで紹介されているような小規模なシステムであっても、信じられないようなパフォーマンスを引き出せる時代になったのですね。それにしても、先日に Google が、GAE での PHP サポートを表明したように、ものすごい勢いで、PHP の勢力が拡大しているように思えます。__AC Stamp 2

ーーーーー

<関連>

Google App Engine ケース・スタディ:その API が Angry Birds を元気にする
PHP のクラウド API とオープンソース
PHP SDK for Windows Azure
Heroku の Java サポートと、その背景について
f8 終了後の 24時間で、34000本の Facebook アプリが Heroku 上で量産された
単純/安価/高速 : .NET から Node + Heroku に乗り換えた Playtomic

Web デベロッパーが知っておくべき、15種類の オープンソース・プロジェクト

Posted in API, Big Data, Research by Agile Cat on January 27, 2011

15 open source projects you should know about as a web developer
Posted in Main on January 25th, 2011 by Pingdom
http://royal.pingdom.com/2011/01/25/15-open-source-projects-you-should-know-about-as-a-web-developer/

_ pingdom

Building websites and web applications today is not only about being a great programmer, it’s even more important to be a smart programmer. This means to re-use existing code and applications when possible instead of re-inventing the wheel.

現代的な Web サイトおよび Web アプリケーションを構築するには、素晴らしいプログラマーであること、そして更に、スマートなプログラマーであることが重要である。 つまり、全体を再構築する代わりに、既存のコードやアプリケーションの再利用を考えることが、スマートなプログラマーの条件となる。

Open source has been around for ages and much of the web is built using it. Every developer knows about Linux, Apache, MySQL and PHP (LAMP).

オープンソースは長い歴史を持っており、また、それを用いて、多数の Web が構築されている。 そして、すべてのデベロッパーが、Linux と、Apache、MySQL、PHP の総称である LAMP を知っている。

But what about all the other open source projects out there? As a web developer you can save lots of time or optimize the performance of your applications by using many of the other projects that’s available.

しかし、その他のオープンソース・プロジェクトについて、その存在を知っているだろうか? Web デベロッパーとして、それらの多様なプロジェクトを活用することで、開発時間の大幅な短縮と、パフォーマンスの最適化が、あなたのアプリケーションにもたらされる。

Lets take a look on what’s out there, free for everyone to use.

さぁ、誰もがフリーで利用できる、それらのプロジェクトを見ていこう。

New databases on the block

Traditionally you might have been using MySQL. Although MySQL still is a great database many new alternatives has shown up trying to solve some of the issues MySQL has.

これまでにも、MySQL を使ってきたかもしれない。 依然として、MySQL は偉大なデータベースであるが、それに代わる新しいプロジェクトが、MySQL の問題を解決するものとして注目されている。

MongoDB

MongoDB is one of the new so called “NoSQL” databases. It’s scalable and offers high performance.

MongoDB は、いわゆる ”NoSQL” データベースの 1つである。 そして、スケーラビリティと高度なパフォーマンスを提供している。

Apache Cassandra

Apache Cassandra is similar to MongoDB in that it’s a “NoSQL” database, which is scalable, and offers high performance. It works well with very large and active data sets.

Apache Cassandra も、”NoSQL” データベースという意味では MongoDB に類似している。 しかし、さらに大規模でアクティブなデータセットに対して、スケーラビリティと高度なパフォーマンスを提供する。

More

There are lots of more alternatives out there to choose from depending on your needs. Take a look at this list in Wikipedia.

それ以外にも、ニーズに応じて多様なプロジェクトを選択できる。 この、Wikipedia のリストを参照して欲しい。

Cache your data

As some data is used frequently it makes sense to put it in memory instead of querying a database each time. This can speed up a web application greatly.

なんらかの、頻繁に使用されるデータが存在するとき、毎回のようにデータベースにクエリーをかけるのではなく、イン・メモリで処理することは、とても意味がある。 それにより、Web アプリケーションの処理速度が大幅に改善される。

Memcached

Memcached is a simple but powerful way to cache small chunks of data in memory.

Memcached は、小さなチャンクのデータを、インメモリでキャッシュする際の、シンプルだがパワフルな方式を提供する。

Redis

Redis can be used in the same way as Memcached but also includes many more features. For example it can also store data persistent on disk.

Redis も Memcached と同じ方式で利用できるが、より以上の機能を含んでいる。 たとえば、取り扱うデータを、パーシスタントなものとして、ディスクにストアすることも可能である。

Speeding up web requests

Most websites use the Apache web server to serve pages. This works great for most sites, but as soon as you start to get lots of traffic you might want to optimize things a bit.

数々の Web サイトにおいて、そのページを表示するために Apache Web サーバーが用いられている。 それらは、大半のサイトにおいて適切に機能しているが、膨大なトラフィックが生じてくると、その最適化が必要になるはずだ。

NGINX

NGINX is a web server, much like Apache, but it’s extremely fast. It’s often used to serve static content such as images or as a load balancer.

NGINX は Apache に似た Web サーバーであるが、きわめて高速なものとなっている。 写真などのスタティックなコンテンツの提供などで頻繁に使用され、また、ロード・バランサーの役割を担うことも多い。

Varnish

Varnish is a cache that you put in front of your regular web server. It works by putting all your popular content in memory and serves it directly, instead of having to pass everything on to your web server.

Varnish は、一般的な Web サーバーのフロントに配置するキャッシュである。 それは、通常のコンテンツをインメモリに保持し、また、ユーザーに対してダイレクトに提供する。

Manage your content easily

If you’re building a website which will have content that will be added and edited by writers you want to have a content management system (CMS). A CMS makes it easy to manage blogs and websites and also offers lots of plugins that can extend the functionality of your site.

コンテンツ・ライターが追加・編集する Web サイトを構築していく場合は、CMS(content management system)が必要となる。 CMS により Blog と Web サイトの管理が容易になり、また、たくさんの Plug In におりサイトの拡張が実現される。

WordPress

While WordPress is a blogging platform it can also be used to manage whole websites, big and small.

WordPress はブログ・プラットフォームであるが、大小の Web サイトを管理するためにも利用できる。

Drupal

Drupal is a complete platform that can be used to build scalable and flexible websites.

Drupal は、スケーラブルで柔軟な Web サイトを構築するための、完璧なプラットフォームである。

More

There are lots of Content Management Systems available. See this huge list at Wikipedia.

その他の Content Management Systems に関しては、Wikipedia の膨大なリストを参照して欲しい。

Having a interactive web user interface

Today you can build a web application that works in many ways just as a desktop application using techniques such as JavaScript and AJAX. Using JavaScript frameworks it has become really easy to build great web applications.

JavaScript や AJAX などのテクノロジーを用いて、まさにデスクトップ・アプリケーションのように機能する Web アプリケーションを、さまざまな手法で構築できる。 JavaScript のフレームワークを活用することで、素晴らしい Web アプリケーションの構築が、きわめて容易になった。

JQuery

JQuery is a framework with plugins to help build dynamic websites with AJAX interaction and animations.

JQuery は、AJAX のインタラクションとアニメーションを用いて、動的な Web サイトの構築を促進するフレームワークである。

MooTools

MooTools is just like JQuery a framework to help build powerful web applications using Javascript.

MooTools は JQuery ライクなフレームワークであり、Javascript を用いたパワフルな Web アプリケーションの構築を促進する。

More

If you want to try any of the other alternatives look through the list in this Wikipedia entry.

その他のプロジェクトに関しては、Wikipedia のリストを参照して欲しい。

Other cool stuff

When you start to build complex web applications there are lots of software, libraries and modules that can help you solve problems that would otherwise take a lot of time. Below are two examples just to get you started.

複雑な Web アプリケーションの構築に着手するとき、膨大な時間を費やすことになる問題の解決を促進するための、ソフトウェア/ライブラリ/モジュールがある。以下の 2つの例は、まさに構築を開始するときに、利用するものである。

Node.js

Node.js is an event-driven I/O framework where you write applications in Javascript that runs on the V8 JavaScript engine. It’s a great way to build fast and scalable network programs.

Node.js は、V8 JavaScript エンジン上で実行される Javascript を用いて、アプリケーションを記述する場合の イベント・ドリブンな I/O フレームワークである。それにより、高速でスケーラブルなネットワーク・プログラムの構築が促進される。

RabbitMQ

RabbitMQ is a reliable and scalable messaging system that can handle high throughput. If you need to exchange data between systems or applications a messaging system is a great way to do this with lots of benefits compared to a custom solution or storing the data in a database.

RabbitMQ は、ハイ・スループットに対応し、信頼性とスケーラビリティを実現する、メッセージング・システムである。 システムおよびアプリケーションの間で、データ交換を行う必要がある場合には、カスタムなソリューションやデータベースへのストアに替えて、メッセージング・システムを活用することで、数多くのメリットがもたらされる。

Use a framework to speed up development

Weather you are using PHP or another language there are several different frameworks available that can help you speed up development and make your code easier to manage.

PHP を使うにしろ、その他の言語を使うにしろ、その開発速度を高め、コードの管理を容易にするための、数々のフレームワークが存在する。

Symfony

Symfony is a PHP framework that includes components and tools to help you build complex web applications faster. It also has over 1000 plugins contributed by the community.

Symfony は、複雑な Web アプリケーションを短期間で構築するための、コンポーネントとツールを取り込んだ、PHP フレームワークである。さらに言えば、コミュニティからコントリビュートされた、1000 個以上のプラグインも利用できる。

Ruby on Rails

For fans of the Ruby language, Ruby on Rails is the most popular framework available.

Ruby ファンための、最も人気のあるフレームワークが Ruby on Rails である。

Django

Django is a Python web framework developed to help you build high-performing and elegant web applications quickly.

Django は、ハイ・パフォーマンスで洗練された Web アプリケーションを促進するために構築された、Python Web フレームワークである。

More

See this list on Wikipedia for a more complete list of web application frameworks available for different languages.

さらに詳細な情報に関しては、Wikipedia における 言語別アプリケーション・フレームワークを参照して欲しい。

Spend your time wisely

As a developer it’s always worth the time to keep up to date on which new software that are available as it can help you solve complex tasks easily. Often time spent planning and doing research at the start of a project is well worth it since you can identify upcoming issues and how to solve them in the best way. The days where you program your way out of every issue are over, it’s more about using existing technology in a smart way.

デベロッパーとして重要なことは、ソフトウェアを最新の状態に保ち、複雑なタスクを容易に解決できるようにしておくことだ。プロジェクトを開始するときに、計画と調査に時間を費やすことで、問題の識別が促進され、解決のための最適な方式が見つかる。そして、すべての問題を独自の方式で解決することは、すでに古い考え方となっており、よりスマートな方法で、既存テクノロジーを活用することに、価値が見出されている。

ーーーーー

この、Agile_Cat も利用している WordPress は、典型的な LAMP スタックの上に構築されている Web アプリケーションです。しかし、最大の LAMP スタックといえば、それは Facebook になるでしょう。 こうしたオープンソース・プロジェクトにより、インターネットの記録とスケールの記録が、毎日のように塗り替えられているわけです。 スゴイ! ーーー __AC Stamp 2

ーーーーー

<関連>
Facebook における 1300万/秒 クエリーの秘密
Facebook の HBase は、毎月 1350億 メッセージを処理する!
Facebook は 20分間で、2.7M Photos/10.2M Comments/4.6M Messages を処理する!
Google Megastore – 1日で 30億 Write/200億 Read のトランザクションを実現
Amazon S3 – 5 TB のシングル・オブジェクトは お好き?

 

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

Posted in Facebook by Agile Cat on July 9, 2010

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

image_thumb2

いよいよ最終回です。 前回は Facebook が利用しているソフトウェアをリストアップしていましたが、そこには含まれなかった運用に関するノウハウを、今回は紹介してくれます。 スケールという視点からして、参照できる事例のない Facebook としては、道なき道を切り開いていかざるを得ないわけです。 したがって、他では聞くことのできない貴重な情報が、たっぷりと含まれている記事となっています。 楽しんでくださ~~~い。 ーーー A.C.

ーーーーー

Other things that help Facebook run smoothly

We have mentioned some of the software that makes up Facebook’s system(s) and helps the service scale properly. But handling such a large system is a complex task, so we thought we would list a few more things that Facebook does to keep its service running smoothly.

ここでは、Facebook のシステムを構築し、サービスのスケールを適切に支援する、いくつかのソフトウェアを説明してきた。 ただし、このような大規模システムの取り扱いには、複雑なタスクがつきものだ。 したがって、Facebook がサービスを円滑に提供するために用いている、いくつかの事柄についてリストアップしておく。

Gradual releases and dark launches

Facebook has a system they called Gatekeeper that lets them run different code for different sets of users (it basically introduces different conditions in the code base). This lets Facebook do gradual releases of new features, A/B testing, activate certain features only for Facebook employees, etc.

Facebook は、それぞれのユーザーのグループに対して、異なるコードを実行させる、Gatekeeper というシステムを持っている(基本的にコードベースに異なる条件を導する)。 それにより Facebook は、新しい機能の段階的なリリースや、A / B テスト、従業員に限定した特定機能のアクティベーションなどを実現している。

Gatekeeper also lets Facebook do something called “dark launches”, which is to activate elements of a certain feature behind the scenes before it goes live (without users noticing since there will be no corresponding UI elements). This acts as a real-world stress test and helps expose bottlenecks and other problem areas before a feature is officially launched. Dark launches are usually done two weeks before the actual launch.

さらに Gatekeeper は、Facebook における運用前の機能を、“Dark Launche” と呼ばれる仕組みの中で実施していく(そのための UI は存在しないため、ユーザーは気付かない)。それは、現実世界のストレス・テストの役割を担い、また、対象となる機能が公開される前に、ボトルネックなどの問題点を明らかにしていく。Dark Launche には通常、公開前の 2週間が費やされる。

Profiling of the live system

Facebook carefully monitors its systems (something we here at Pingdom of course approve of), and interestingly enough it also monitors the performance of every single PHP function in the live production environment. This profiling of the live PHP environment is done using an open source tool called XHProf.

Facebook はシステム(ここで Pingdom が取り上げている)を慎重にモニターする。 そして、きわめて興味深いことに、実運用環境における全ての PHP 機能にいたるまで、そのパフォーマンスルをモニターする。PHP 運用環境のためのプロファイリングは、XHProf と呼ばれるオープンソース・ツールを用いて実施される。

Gradual feature disabling for added performance

If Facebook runs into performance issues, there are a large number of levers that let them gradually disable less important features to boost performance of Facebook’s core features.

Facebook はパフォーマンスの問題に遭遇すると、そのコア機能の性能を引き上げるために、それほど重要ではない機能を段階的に停止する、たくさんのレバーを持っている。

The things we didn’t mention

We didn’t go much into the hardware side in this article, but of course that is also an important aspect when it comes to scalability. For example, like many other big sites, Facebook uses a CDN to help serve static content. And then of course there is the huge data center Facebook is building in Oregon to help it scale out with even more servers.

この記事では、あまりハードウェアについて取り上げていない。 しかし、もちろん、スケーラビリティの話になると、それも重要な局面となる。 たとえば、他の大規模サイトのように、スタティック・コンテントのサービスを促進するために、Facebook も CDN を活用している。 それに加えて、Facebook は Oregon に巨大データセンターを構築しており、さらに多くのサーバーを用いたスケールアウトを促進していく。

And aside from what we have already mentioned, there is of course a ton of other software involved. However, we hope we were able to highlight some of the more interesting choices Facebook has made.

また、ここで取り上げてきた内容とは別に、もちろん Facebook は膨大なソフトウェアを活用している。 とは言え、Facebook の興味深い選択に、スポットライトを当てることができたと信じている。

Facebook’s love affair with open source

We can’t complete this article without mentioning how much Facebook likes open source. Or perhaps we should say, “loves”.

この記事では、どれほど Facebook がオープンソースを好むのかという点を、充分に説明することができなかった。 それについては、『 Love 』と言うべきかもしれない。

Not only is Facebook using (and contributing to) open source software such as Linux, Memcached, MySQL, Hadoop, and many others, it has also made much of its internally developed software available as open source.

Facebook は、Linux や、Memcached、MySQL、Hadoop などを単に利用するだけではなく、オープンソースとして利用できるソフトウェアを、その内部で開発している。

Examples of open source projects that originated from inside Facebook include HipHop, Cassandra, Thrift and Scribe. Facebook has also open-sourced Tornado, a high-performance web server framework developed by the team behind FriendFeed (which Facebook bought in August 2009).

Facebook がオリジナルを開発したオープンソース・プロジェクトには、たとえば HipHop、Cassandra、Thrift などが含まれる。 さらに Facebook は、オープンソース化された Tornado を有している。 それは、FriendFeed(Facebook が2009年8月に買収)のチームにより開発された、ハイ・パフォーマンス Web サーバーのフレームワークである。

(A list of open source software that Facebook is involved with can be found on Facebook’s Open Source page.)

(Facebook が関連するオープンソース・ソフトウェアのリストは、Facebook’s Open Source page で参照できる)

More scaling challenges to come

Facebook has been growing at an incredible pace. Its user base is increasing almost exponentially and is now close to half a billion active users, and who knows what it will be by the end of the year. The site seems to be growing with about 100 million users every six months or so.

Facebook は、信じ難いペースで成長している。 そのユーザー数は急激に増加していて、現時点では約 5億人のアクティブ・ユーザーがいることから、この年末の状況も予想できるだろう。 このサイトでは、6カ月ごとに、約 1億人のユーザーが増えているように思われる。

Facebook even has a dedicated “growth team” that constantly tries to figure out how to make people use and interact with the site even more.

さらに Facebook は、彼らのサイトの用法と運用について、継続的な理解を促進するための、Growth Team を盛り立てている。

This rapid growth means that Facebook will keep running into various performance bottlenecks as it’s challenged by more and more page views, searches, uploaded images, status messages, and all the other ways that Facebook users interact with the site and each other.

この素早い成長が意味するのは、さらなるページビューや、検索、アップロード・イメージ、ステータス・メッセージ、そしてFacebook とユーザーの相互作用がもたらす挑戦につれて、様々なパフォーマンス・ボトルネックに、Facebook が遭遇し続けるという状況である。

But this is just a fact of life for a service like Facebook. Facebook’s engineers will keep iterating and coming up with new ways to scale (it’s not just about adding more servers). For example, Facebook’s photo storage system has already been completely rewritten several times as the site has grown.

しかし、Facebook のようなサービスにとって、それこそが生き抜いていくための現実である。 Facebook のエンジニアたちは反復を実施して、スケールを維持するための新しい方法を考え続けるだろう(単にサーバーを追加するだけではない)。 たとえば、Facebook の写真ストレージ・システムは、その成長につれて、スクラッチから何度も書き直されている。

So, we’ll see what the engineers at Facebook come up with next. We bet it’s something interesting. After all, they are scaling a mountain that most of us can only dream of; a site with more users than most countries. When you do that, you better get creative.

したがって、Facebook のエンジニアたちが、次に生み出すものに注目することになるだろう。 そこには、面白いことがあると確言する。 結局のところ、Facebook がスケールする山のようなものは、人々が夢でしか見ることのできないものであり、また、大半の国々をつなぐというより、より多くの人々をつなぐというものである。 そして、それを望む人に、さらに創造的な方式を提供する。

Data sources: Various presentations by Facebook engineers, as well as the always informative Facebook engineering blog.

ーーーーー

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

ーーーーー
わずか四半期の間に、サーバー数が倍増した Facebook の事情
Facebook の HDFS クラスターは 21 PB !!!
Facebook のスケール感覚に驚愕! _1
Facebook のスケール感覚に驚愕! _2

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 タグで、アメリカ版 お財布ケータイを狙うのか?

%d bloggers like this: