17 Mar 2012

foursquare のソフトウエアスタック

About - foursquare

4sq のアバウトページに 4sq のシステム構成が割りとガチに書いてあるらしいので読んでみた.

サーバ構成

  • EC2
  • CentOS
  • nginx でリバースプロキシ. リクエストを static なものとそうでないものに振り分け
  • HAProxy でロードバランス

データストア

  • live site data (?) は MongoDB に保存
  • memcached でキャッシュ
  • オフラインでのデータ解析は, 定期的にデータを Hadoop クラスタにインポート
    • 基本的に Hive
  • Solr と Elasticsearch で検索. 位置, Tips, ユーザ, イベントの検索に.
  • geo-indexing 検索は Google s2 library, サーチインデックス内に cellid を保管 (?)
  • PostGIS と geonames.org のデータセットで geocode address を座標に変換
  • Kestrel を非同期タスクのためのキューとして使用
  • 写真は Amazon S3 に保存して Akamai で配信

アプリケーションフレームワーク

  • Web サイト, API, バッチの多くは Scala
    • サイトと API は Lift web framework
  • ビルドの自動化やデプロイ, オペレーションの自動化には Python や シェルスクリプト
  • フロントエンドは Backbone.js + jQuery + Soy (templating)

地図データ

  • 地図データは MapBox と OpenStreetMap のデータ

Refs