C++、Java、Python、PHP、Rubyのコードを生成
巨大SNSを支える多言語混在RPC開発フレームワーク“Thrift”
2007/04/03
全米で第6位のトラフィックを稼ぐ人気SNSサイト「Facebook」のコアモジュール「Thrift」がオープンソースとして公開された(公式ブログ)。ライセンスは独自の「Thrift Software License」(改変や再配布を許容している点はGPL同様のようだ)。Facebookは学生向けSNSとして2004年にスタートし、その後、学生以外にも会員を拡大。2007年2月現在の会員数は1700万人。アップロードされている写真点数は10億枚以上で、1日600万枚の画像がアップロードされるなど、画像共有サイトとして見てもFlickrよりも大きい。そんな急成長した巨大サイトを支えたのは、独自に作り上げた開発フレームワークだったようだ。
多数の言語で開発したモジュールをシームレスに統合
Facebookが、開発フレームワークとして自ら作成したのがThriftだ。“thrift”は「倹約」という意味で、開発コスト(労力)を最小限に抑える、というほどの意味が込められているようだ。その心は、プログラミング言語には、それぞれ向き不向きがあるので、それぞれの課題によって言語を使い分けよう、というものだ。
マーク・スリー氏はブログの中で、「RSSをC++でパースする? 退屈だね。インメモリのサーチインデックスをPHPで構築する? 理解を超える!」と書き、「ある言語を使うと、他の開発言語よりも速く、簡単に、エレガントに書けるものというのがある」と指摘する。利用可能なライブラリの種類や機能、性能にも言語ごとに違いがある。それぞれの言語やライブラリが持つ機能的な制限や、使いづらさにイライラするよりも、その課題に適したツールを使いたい――、それがThriftを開発した動機だという。急激なサイトの成長はシンプルなLAMPのアプローチでは対応できなかった、とホワイトペーパーで述べている。
Thriftは、シンプルで汎用的な記述言語を使って、型宣言とRPCのインターフェイス定義を行う。例えば、こんな風に:
service StringCache { void set(1:i32 key, 2:string value), string get(1:i32 key) throws (1:KeyNotFound knf), void delete(1:i32 key) }
この記述からThriftは、C++、Java、Python、PHP、Rubyといった言語のコードを生成する。それぞれの課題をこなすモジュールは、言語の違いを超えて、RPCで互いにシームレスに協調動作する。
Facebookのコアメンバーは上記のホワイトペーパーの中で、こうしたアプローチが可能な既存の方法は、制限が多いか、型宣言の自由度が低いか、あるいはパフォーマンスが十分でなかったという。
関連記事
情報をお寄せください:
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|
キャリアアップ
- - PR -
転職/派遣情報を探す
「ITmedia マーケティング」新着記事
Xに迫る新興SNS「Threads」と「Bluesky」 勢いがあるのはどっち?
Metaは最近のBluesky人気をけん制するためか、立て続けに機能アップデートを実施している...
もしかして検索順位に関係する? SEO担当者なら知っておきたい「ドメイン」の話
この記事では、SEOの観点から自社Webサイトに適したドメインの選び方を考えます。適切な...
B2Bマーケターの「イマ」――KPI・KGIはどう設定? 他部門への関与度は?
メディックスがITmedia マーケティングと共同で開催したウェビナー「2024年最新調査から...