もう一度、今回のTodd Hoffによる記事の翻訳を提供したいと思います。彼の記事は、Facebookの購入時のWhatsAppアーキテクチャに関するものです。
注:記事の冒頭で、元の著者はFacebookがすばらしい190億ドルでWhatsAppを購入した理由について説明しています。 これが面白くない場合は、下のアーキテクチャの説明をスクロールしてください。
Rick Reedは、 3月のレポート「Billion with Big 'M':The Next Zoom Level on WhatsApp」で、 whatsappの素晴らしい統計を明らかにしています。
数百のノード、数千のコア、数百テラバイトのRAMを持ち、世界中ですぐに現実になる数十億のスマートフォンに対応したいと考えているものは何ですか? ErlangおよびFreeBSDベースのWhatsAppアーキテクチャ。 増え続けるメッセージングサービスの需要を満たすために多くの困難に直面しましたが、システムのサイズ(>コア数8000)および速度(> 70Mアーランメッセージ/秒)の拡大を続けています。
しかし、このレポートはまだないので、Rick Reedが2年前に作成したレポート「最大数百万の同時接続のスケーリング」を見てみましょう。
ヤフーのC ++で高性能なメッセージングバスを開発した経験があるRick Reedは、スケーラブルなアーキテクチャを知っています。 WhatsAppの創設者は、システムのスケーリングに関するかなりの経験を持つ元Yahoo従業員でもあります。 そのため、WhatsAppはスケーリングスキルを犠牲にして機能します。 そして、彼らの大きな生意気な目標は、世界中のすべてのスマートフォンに搭載されることであるため、数年後には約50億になります。
事実を説明する前に、この驚くべき謎について話しましょう。WhatsAppをFacebookで190億ドルで販売する方法を教えてください。
WhatsAppがお金に見合うかどうかプログラマーとして私に尋ねたら、もちろん、いいえ、答えます! ネットワーク上でデータを送信するだけです! まあ本当に。 確かに、私はブログプラットフォームが不要であると信じている人の一人です。なぜなら、サーバーにリモートで接続し、viでindex.htmlを開き、HTMLで投稿を書くのは難しいことではないからです。 開発は愚かなコードを書くのではなく、すべてのユーザーがあなたの製品を愛するようにする方法であり、それが最も難しいことを理解するのにしばらく時間がかかりました。 愛を買うことはできません。
それでは、WhatsAppの価値が高いのはなぜですか? テクノロジー? 1週間でWhatsAppをPHPで作成できると言う人には注意を払ってはいけません。 これは単に真実ではありません。 後で見るように、これらは非常にクールなテクノロジーです。 しかし、もちろん、Facebookには、必要に応じてWhatsAppを開発するのに十分なリソースがあります。
機能を見てみましょう。 WhatsAppは、世界中の熱心なユーザーに トリック (広告、ゲーム、トリックなし)のない製品であることは誰もが知っています 。 SMSの請求書が恐ろしい過酷な世界で無料のメッセージを提供します。 アメリカ人の訪問者として、WhatsAppを使用して実際に家族や友人と連絡を取り合っている人が本当に多いことに驚きました。 したがって、WhatsAppを使用するとき、誰もが空のソーシャルネットワークの問題を解決する電話を持っているため、知っている人がすでにそこにいる可能性が高いです。 それは積極的なクロスプラットフォームですので、あなたが知っている誰もがそれを使用することができ、それはちょうど動作します。 彼が「うまくいく」というフレーズがよく使われます。 すべての機能を備えています(場所、音声、ビデオ、写真、プッシュツートーク、音声メッセージと写真、配信アラート、グループチャット、WiFi経由のメッセージ送信などを共有できます。これらはすべてネットワークに関係なく実行できます。宛先かどうか)。 また、全国書記体系のマッピングもサポートしています。 そして、携帯電話番号を識別子として使用し、連絡先をソーシャルグラフとして使用するのは非常に簡単です。 確認メール、ユーザー名、パスワード、クレジットカード番号は必要ありません。 それだけで動作します。
それはすべてクールですが、190億ドルの価値はありません。 他の製品は、機能の点で彼と競合する可能性があります。
考えられる理由は、 Googleがユーザーあたり99セントを提供するWhatsAppを購入したかったからです。 これはFacebook にとって脅威であり 、彼らはただ必死です。 このお金は、 電話帳とメタデータに提供されます(WhatsAppには保存されませんが)。
これは、毎日4億人の成長と10億人のユーザーの可能性がある4億5000万人のアクティブユーザー向けです。 Facebookは、次の10億人のユーザーを獲得するためにWhatsAppを必要としています。 しかし、これがそうであれば、これはほんの一部です。 また、ユーザーごとに約40ドルという価格は、特に株の支払いの場合、不適切に見えません。 Facebookはユーザーあたり30ドルで Instagramを購入した。 Twitterユーザーの費用は110ドルです。
ベネディクトエヴァンスは 、モバイル通信市場は1兆ドルを超えており、WhatsAppは1日あたり180億通のメッセージを送信することでSMS業界の1,000億ドルの部分を損なっていると主張しています。 パーソナルコンピューターからほぼ普遍的なスマートフォンへの根本的な移行により、機会の大きさはFacebookが使用している市場よりもはるかに大きなターゲット市場に匹敵します。
しかしFacebookは、広告もサービスのプーリングもないと約束したので、何の利点があるのでしょうか?
モバイルテクノロジーの使用による興味深いビジネス開発があります 。 WhatsAppは、プロジェクトチームによるグループディスカッションを作成するために使用され、投資家はWhatsAppを介してトランザクションの進捗状況について話し合います。
Instagramはクウェートで羊の取引に使用されています。
WhatsAppのライバルであるWeChatは、1月にタクシーレンタルサービスを開始しました;最初の月に2,100万台の車が雇われました。
モバイルメッセージングアプリによって駆動されるeコマースの将来において、この分野でプレイする価値はありますか?
ビジネスでは、かつてデスクトップまたはWebアプリケーションで処理されていたタスクにWhatsAppを使用するだけではありません。 スペインの警察はWhatsAppを使用して犯罪者を捕まえ、イタリア人はそれを使ってバスケットボールチームを編成します。
商用およびその他のアプリケーションは、明らかな理由で携帯電話に切り替えています。 誰もが携帯電話を持っており、これらのメッセンジャーは、無料で安価に使用できる機会に満ちています。 物事を行うためにデスクトップコンピューターはもう必要ありません。 モバイルアプリケーションによって多くの機能がブロックされる場合があります。
したがって、インスタントメッセージングはGoogleとFacebookにとって脅威です。 デスクトップコンピューターは死んでいます。 ウェブは死にかけています。 インスタントメッセージング+モバイルテクノロジーは、それらを置き換えることができるエコシステムです 。 インスタントメッセージングは、検索ではなくモバイルテクノロジーの相互作用の中心になり、検索をどのようなものにするか、どのアプリケーションが未来を征服するかを変えています。 PageRankの序文だけでなく、Webに優先します。
Facebookはこの市場に参入するか、役に立たなくなるはずです。
モバイルへの移行に伴い、Facebookの国外追放が行われています。 そのデスクトップインターフェイスは、すべてのバックエンド機能へのアクセスを提供するポータルです。 彼は大きく、混乱し、きしみがありません。 Facebookインターフェースが本当に好きなのは誰ですか?
Facebookがモバイルデバイスにアクセスしたとき、彼らはポータルアプローチを試みましたが、うまくいきませんでした。 そこで、彼らは、単一のタスクのための 、より小さくて焦点の合ったアプリケーションの戦略に移りました。 モバイル第一! 小さな画面ではあまりできません。 携帯電話では、わかりにくいポータルアプリケーションの奥深くにメニューが埋め込まれているよりも、別のアプリケーションを見つける方が簡単です。
しかし、Facebookは一歩先を行っています。 特定のタスク用に個別のアプリケーションを開発するだけでなく、同様の機能を提供するいくつかの競合するアプリケーションを提供し、これらのアプリケーションには必ずしも共通のバックエンドがありません。 これはWhatsAppとMessengerの例で見られ、InstagramはFacebookの写真と競合します。 Paperは、制限された機能を提供する代替のFacebookインターフェイスですが、その機能は優れています。
ここではコンウェイの法律が適用される場合があります。 その考え方は、「システムを設計する組織は、通常、これらの組織の通信構造を複製するアーキテクチャを生成する」ということです。 モノリシックバックエンドインフラストラクチャを使用すると、 Borgに似たポータルデザインを取得できます。 モバイル技術への移行により、組織はそのような考え方から解放されます。 Facebookインフラストラクチャの一部のみを使用するアプリケーションを開発できる場合、Facebookインフラストラクチャをまったく使用しないアプリケーションを開発できます。 また、Facebookインフラストラクチャを使用しない場合、Facebookで開発されない可能性があります。 それではFacebookは何ですか?
FacebookのCEOであるマーク・ザッカーバーグは、 モバイルワールドコングレスで、WhatsAppの買収はInternet.orgに密接に関連しているという自身の見解を持っています。
アイデアは、基本的な無料インターネットサービスのセット-911インターネットを開発することです。 Facebook、メッセンジャーなどのソーシャルネットワーク、検索、および天気などのその他のものを指定できます。 これらの無料サービスのセットは一種の麻薬として機能します。データサービスと電話を購入できるユーザーは、これらのサービスに料金を支払う意味がありません。 これにより、サービスが重要である理由を示すコンテキストが提供され、他の同様のサービスへの支払いが求められます-そのような希望があります。
これは長いゲームですが、プレイするのに理にかなう十分な値が含まれています。
合意に達しましたか? そうは思いません これは驚くほどの金額であり、短期的なメリットは明らかではないため、長期的なゲームがどのように意味をなすかを説明します。 私たちはまだモバイル技術の夜明けにいます。 未来がどのように見えるか誰も知らないので、未来を過去のようにしようとしないのが最善です。 Facebookはまさにそれを行っているようです。
しかし、それで十分です。 わずか32人のエンジニアで4億5,000万人のアクティブユーザーにどのように対応しますか? 見てみましょう...
ソース
警告:WhatsAppアーキテクチャ全般についてはあまり知りません。 さまざまなソースから収集された断片とスクラップのみ。 Rick Reedのレポートは、アーキテクチャ全体の概要ではなく、Erlangを使用して1つのサーバーで200万の接続を処理できる最適化に専念しています。
統計
これらの統計は主に現在のシステムに関するものであり、レポートがあるシステムに関するものではありません。 現在のシステムに関するレポートには、データストレージ、メッセージング、メタクラスタリングのハッキングに関する詳細、およびBEAM / OTPのパッチに関する詳細が含まれます。
- 4億5000万人のアクティブユーザーが、この数字に世界中のどの会社よりも早く到達しました。
- 32人のエンジニア、1人の開発者が1400万人のアクティブユーザーを占めています。
- 7つのプラットフォーム(インバウンドおよびアウトバウンド)で毎日500億メッセージ。
- 毎日100万人以上の新しいユーザーが登録しています。
- 広告に費やす0ドル。
- セコイア・キャピタルからの6000万ドルの投資。 セコイアは34億ドルを獲得します。
- Facebookはこの取引に現金の35%を費やしました。
- 何百もの結び目。
- 8000以上のプロセッサコア。
- 数百テラバイトのRAM。
- 1秒あたり7000万を超えるアーランメッセージ。
- 2011年、WhatsAppは、空きメモリとCPUリソースを備えた単一サーバーで100万のアクティブなTCP接続に到達しました。 2012年に接続数は200万に達しました。 2013年に、彼らはツイートしました:「12月31日に新しい記録を設定しました:70億の着信メッセージ、110億の発信メッセージ= 1日で180億のメッセージを処理しました!Happy New 2013!」
プラットフォーム
バックエンド
- アーラン
- Freebsd
- ヤウズライト
- Php
- BEAMの独自のパッチ(JavaのJVMのようなビームですが、Erlangの場合)
- 自分のXMPP
- ホスティング、おそらくSoftlayerから
フロントエンド
- 7つのクライアントプラットフォーム:iPhone、Android、Blackberry、Nokia Symbian S60、Nokia S40、Windows Phone?
- Sqlite
ハードウェア
- ユーザーと連携する標準サーバー:
- 2つの6コアWestmereアーキテクチャプロセッサ(24の論理プロセッサ)。
- 100GB RAM、SSD;
- 2つのネットワークインターフェイス(ユーザーとの通信用のパブリックインターフェイス、バックエンドの内部)
製品
- メッセージングに焦点を当てます。 多くのお金を払うことなく、世界中の人々をどこにいてもつなげます。 創設者のヤン・クムは、1992年に世界中の家族と連絡を取ることがどれほど難しかったかを覚えています。
- プライバシー ウクライナで育ったヤン・クムの記憶によって形成された。 メッセージはサーバーに保存されません。 チャット履歴は保存されません。 目標は、ユーザーについてできるだけ少ししか知らないことです。 あなたの名前と性別は不明です。チャット履歴は携帯電話にのみ保存されます。
全般
- WhatsAppサーバーは、ほぼ完全にErlangで作成されています。
- メッセージをルーティングするサーバーシステムは、Erlangで記述されています。
- 大きな成果は、そのような多数のユーザーが少数のサーバーでサービスを受けることです。 チームは、多くの点でこれがアーランのおかげであることに同意します。
- Facebook Chatは2009年にErlangで作成されましたが、資格のあるプログラマを見つけるのが困難だったため、その後放棄されました。
- Whatsappサーバーはejabberdから生まれました
- Ejabberdは、Erlangで書かれた有名なオープンソースのJabberサーバーです。
- 当初は、オープンであり、優れた開発者レビューがあり、使い始めるのが簡単で、Erlangが長期的に大規模な通信システムに適しているという保証があるため、最初に選択されました。
- 今後数年間は、XMPPからプロトコルへの切り替え、コードベースの再構築、いくつかの主要なコンポーネントの再設計、パフォーマンスを最適化するためのErlang仮想マシンの多くの重要な変更など、ejabberdの少数の部分の書き換えと変更に費やされました。
- 1日に500億通のメッセージを処理するには、動作する信頼性の高いシステムの構築に集中する必要があります。 収益化については後で考える必要がありますが、それはずっと先に進んでいます。
- システムの「健全性」の主な指標は、メッセージキューの長さです。 1つのノード上のすべてのプロセスのメッセージキューの長さは常に監視されており、許容値を超えるとアラートが送信されます。 1つ以上のプロセスが他のプロセスより遅れており、そのプロセスに対して警告が送信されている場合、これは別のボトルネックの兆候です。
- マルチメディアメッセージを送信すると、画像、音声、またはビデオがHTTPSサーバーに送信され、その後、コンテンツへのリンクがBase64でエンコードされたサムネイルと共に受信者に送信されます。
- 毎日一定量のコードが配置されます。 通常、これは1日に数回行われますが、通常のピーク負荷時には計算は行われません。 Erlangを使用すると、プロダクションの修正または新機能の計算に積極的にアプローチできます。 ホットスワップコードとは、トラフィックを再起動したりリダイレクトしたりすることなく、更新がポストされることを意味します。 エラーは通常、ホットスワップを使用して非常に迅速に修正できます。 このようなシステムは疎結合である傾向があり、変更の増分伝播を促進します。
- WhatsAppで使用されるプロトコルは何ですか? SSLソケットはサーバープール間で共有されます。 クライアントが接続してメッセージを受信するまで、すべてのメッセージはサーバーのキューに入れられます。 メッセージが正常に受信されたという通知がWhatsApp northに送信され、元の送信者(メッセージの横に「チェックマーク」として表示されます)にリダイレクトされます。 メッセージは、クライアントが受信するとすぐにサーバーのメモリから削除されます。
- WhatsApp内で登録プロセスはどのように実装されますか? WhatsAppは携帯電話のIMEIを使用してユーザー名とパスワードを作成しました。 これは最近変更されました。 現在、WhatsAppはアプリケーションからの定期的な要求を使用して、一意の5文字のPINを送信します。 次に、WhatsAppは、このコードを含むSMSを指定された電話番号に送信します(これは、WhatsAppクライアントが同じ電話で実行されないことを意味します)。 PINコードに基づいて、アプリケーションはWhatsAppに一意のキーを要求します。 このキーは、以降の呼び出しのパスワードとして使用されます(この「永続的な」キーはデバイスに保存されます)。 また、新しいデバイスを登録すると、古いデバイスのキーが無効になります。
- AndroidはGoogleのプッシュ通知サービスを使用します。
- Androidユーザーの詳細。 Andoidでの作業はより楽しいです。 開発者はプロトタイプを作成し、それを数億人のユーザーに即座に送信できます。問題があれば、すぐに修正できます。 iOSでは、物事はそれほど単純ではありません。
サーバーあたり200万を超える接続という課題
- 彼らは多くのユーザーの流入に直面しましたが、これは前向きな問題ですが、追加のハードウェアの購入にお金を費やす必要があり、これらすべてのマシンを管理する複雑さが増しています。
- トラフィックの急増を計画する必要があります。 例は、スペインとメキシコでのサッカーの試合や地震です。 これは、ほぼピーク負荷で発生するため、ピークおよびバーストに対処するための十分な空き容量が必要です。 最近のサッカーの試合では、まさにピーク時に発信メッセージの数が35%増加しました。
スケーラビリティを高めるために使用されるツールとテクノロジー
- システムステータス監視ツール(wsar)を開発しました。
- OS、ハードウェア、BEAMの特性を含む、システム全体の特性を記録します。 仮想メモリの測定など、他のシステムのメトリックを簡単に接続できるように設計されました。 システムは、CPU消費、総負荷、ユーザー時間、システム時間、割り込み時間、コンテキストスイッチング、例外、受信/送信パケット、プロセスキュー内のメッセージの合計数、ビジーポートを持つイベント、トラフィック、送信/受信バイトを監視します、スケジューラー統計、ガベージコレクター統計など。
- 当初、情報の収集は1分間に1回開始されました。 システム負荷の増加に伴い、ポーリング期間を1秒に短縮する必要がありました。1分以内に発生したイベントは目に見えないためです。 これらは非常に詳細な統計であり、すべてがどのように機能するかを確認できます。
- ハードウェアCPUパフォーマンスカウンター(pmcstat):
- 彼らは、時間の経過に伴うプロセッサの負荷を調べます。 これにより、仮想マシンの実行に費やされた時間を知ることができます。 彼らの場合、これは16%です。つまり、仮想マシンのコードの実行に費やす時間はわずか16%であるため、Erlangコードの実行中にすべての時間をクリーンアップできたとしても、合計の16%しか節約できません。システム稼働時間。 これは、システムの効率を高めるために、他の領域に集中する必要があることを意味します。
- dtrace、カーネルロックカウント、fprof
- Dtraceは、パフォーマンスの監視ではなく、主にデバッグに使用されました。
- CPUタイムスタンプを取得するために、FreeBSDでBEAMにパッチを適用しました。
- スクリプトは、時間の無駄を理解するために、すべてのプロセスの集計された概要を取得するために作成されました。
- 最大の成果は、ロックカウンターをオンにしてエミュレーターをコンパイルしたことです。
- いくつかの問題
- 以前は、ガベージコレクションの手順に多くの時間が費やされていましたが、これは修正されました。
- ネットワークスタックに問題があることに気付きましたが、それらを設定することにしました。
- ほとんどの問題はロックレーシングの状態が原因であり、ロックカウンターからの出力に深刻な影響を及ぼします。
- 測定:
- 合成負荷、つまりスクリプトによるトラフィックの生成は、ユーザーと連携する巨大なシステムを構成する意味がほとんどありません。
- ユーザーテーブルなどの単純なインターフェイスでうまく機能し、挿入と読み取りを可能な限り迅速に生成しました。
- サーバーが100万の接続を処理できる場合、適切な数のIPポートを開いてサーバーに十分な接続を生成するために30のホストが必要です。 200万の接続を保持するサーバーには60のホストが必要です。 このようなスケールを作成するのは難しいです。
- 実際の使用のように、トラフィックを生成することは困難です。 通常の負荷を想定できますが、実際にはネットワークイベントで世界のイベントが検出され、マルチプラットフォームにより、顧客の行動の違いと国の違いが見つかります。
- 複合負荷:
- 本番から定期的にトラフィックを取得し、別のシステムに転送します。
- これは、副作用が制限される可能性があるシステムに非常に便利です。 トラフィックをリダイレクトし、ユーザーの一定の状態に影響を与えたり、ユーザーに送信されるメッセージの複数のコピーにつながる可能性のあることをしたくない。
- Erlangはホットスワップコードをサポートしているため、プログラムの実行中にコンパイル、コンパイル、変更のロードを行い、それが良いか悪いかを即座に確認するために、完全な負荷の下で何かを思いつくことができます。
- スイッチを追加して、実稼働からワークロードを動的に変更し、パフォーマンスにどのように影響するかを確認しました。 彼らはsarからの出力を読み取り、CPU負荷、メモリ消費、キューオーバーフローを監視し、スイッチを切り替えてシステムがどのように応答するかを確認します。
- 実負荷
- 絶対テスト。 入力と出力の両方のタスクを実行します。
- サーバーを数回DNSに追加して、通常よりも2〜3倍のトラフィックを受信するようにします。 クライアントはDNSからのTTLを無視するため、TTLに問題が生じ、遅延が発生し、処理が必要なトラフィックの受信に迅速に対応できなくなります。
- IPFW。 あるサーバーから別のサーバーにトラフィックをリダイレクトして、必要な数のクライアント接続を取得します。 カーネルパニックを引き起こすバグがあるため、これはあまりうまく機能しません。
- 結果:
- サーバーへの20万の同時接続から始めました。
- 最初のボトルネックは425千で見つかりました。 システムが複数のロック状態になりました。 作業は停止しました。 スケジューラを使用して、実行されている有用な作業の量、待機しているプロセスの数、ロックされているプロセスの数を測定しました。 負荷がかかると、予想が増加したため、CPUの35〜45%が使用され、そのうち95%がスケジューラーによって消費されました。
- 修正の最初のフェーズでは、100万の接続に到達できました。
- メモリ消費は76%で、プロセッサは73%でロードされました。 BEAMはリソースの45%を消費しました。これは、BEAMがユーザーの代わりに機能するため、ユーザースペースからのリソース消費の値に近い値です。
- 通常、スケジューラもCPUを消費するため、CPU消費は最良のメトリックではありません。
- 1か月後、ボトルネックを修正した後、200万の化合物に到達しました。
- BEAMはメモリの80%を消費します。これは、FreeBSDがメモリからページをアンロードし始めたときの数値に近い値です。 CPU消費量はほぼ同じですが、接続数が2倍に増加します。 スケジューラはロックに遭遇しますが、かなりうまく機能します。
- 停止するのは良い瞬間に思えたので、Erlangコードのプロファイリングを開始しました。
- 2.8
- 3 , .
- , . , .
- BEAM . , , .
- 10 , , 600 , 15 40 , 41 .
- 結論:
- Erlang + BEAM + — SMP . . すごい。 , 85% CPU . .
- —
- , BEAM.
- BEAM.
- , .
- , , , , .
- . (BIF, build-in-function).
- , , , -.
- mseg — . .
- . , .
- , . , .
- .
- TSE FreeBSD 9 8. . , , .
- .
- Pmcstat , c PCB . -, .
- BEAM
- . , , , "" , , , . Erlang, c procinfo, .
- , .
- : 1, 10 100 . .
- .
- .
- カスタマイズ
- , "" .
- mseg, malloc.
- FreeBSD, . FreeBSD -. TLB CPU.
- .
- BEAM real-time , , cron . .
- , .
- Mnesia
- os:timestamp, erlang:now.
- , . , .
- .
- , . , , , . , , , , , , , , . , , .
- , . . . . , , , , . , .
- . . . . , .
- Erlang rocks! Erlang , , . , .
- . , , .
- . , . WhatsApp . WhatsApp , - , . . .
- - . WhatsApp , , , . . , , , .
- — . , , . -. .
- . , WhatsApp, Twitter Facebook 2009 - , , , .
- , . , ejabberd. , Erlang. , Erlang .
- . , , , . , .
- . , , , , .
- , . , WhatsApp , 10000 . , 1000 . , , , .
- . Skype, , .
- On Hacker News
- Keynote: Benedict Evans — InContext 2014 ,
- Whatsapp and $19bn
- WhatsApp's blog: The telling diary of a 16 billion dollar startup —
- Erlang Github
- WhatsApp :
- WhatsApp: The inside story
- The Open Source projects used at WhatsApp
- Whatsapp, Facebook, Erlang and realtime messaging: It all started with ejabberd
- Quora: How does WhatsApp Work? , How does WhatsApp work out of mobile network? , How did WhatsApp grow so big?
- WhatsApp is broken, really broken —
- WhatsApp CEO Jan Koum Hates Advertising and the Tech Rumor Mill (Full Dive Video)
- Singapore is progressively doing business over WhatsApp. Are You?
- Four Numbers That Explain Why Facebook Acquired WhatsApp
- Announcement from Mark Zuckerberg
- A Million-user Comet Application with Mochiweb, Part 3
- Inside Erlang, The Rare Programming Language Behind WhatsApp's Success
- WhatsApp Is Actually Worth More Than $19B, Says Facebook's Zuckerberg, And It Was Internet.org That Sealed The Deal
- Facebook buys Whatsapp for $19 billion: Value and Pricing Perspectives
- Facebook's $19 Billion Craving, Explained By Mark Zuckerberg
- IMHO: Lessons learned from WhatsApp
- You May Not Use WhatsApp, But the Rest of the World Sure Does
- The WhatsApp Story Challenges Some Of The Valley's Conventional Wisdom
- What WhatsApp Did Right, According to Jan Koum (Video)
- Why did Facebook buy WhatsApp?
- Can Someone Explain WhatsApp's Valuation To Me?
- Google's Unusual Offer to WhatsApp
.