RailsとCで広告システムを作って起業した話
-
Upload
daisuke-yamazaki -
Category
Technology
-
view
14.637 -
download
1
Transcript of RailsとCで広告システムを作って起業した話
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
Railsと Cで広告システムを作って起業した話
~大江戸 Ruby会議 01~
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
今日話すること1. Railsと Cで大量配信システムをつくりました。
3. アーキテクチャさえしっかりしてればほとんどの部分は rubyでいけるよ
5. 秘密はあんまりなくやってることは割と普通です
7. メンバー募集中です ([email protected]まで! )
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
その前に
Asakusa.rb だいたい第 100回目
誠におめでとうございます。
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
弊社について株式会社スケールアウト代表取締役 山崎大輔 (@yamaz)Blog: 最速配信研究会http://d.hatena.ne.jp/yamaz/
• 2006年に門前仲町で起業• 広告配信システム「 ScaleAds」の提供及びWeb大量配信に関するコンサルティング
• 主に億を超えるようなアクセスに対するシステム開発を得意としてます
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
ScaleAdsとは
2. カジュアル (=安価 )に数十億アクセス /dayを捌くことを目指して開発された純国産広告配信管理システム
4. PCサーバ 1台あたり 5000万アクセス /day以上な性能
6. 月間数千億アクセスも可
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
アーキテクチャ概要
配信サーバ
DeliveryEngine
Logs
広告案件データ (PostgreSQL)
配信管理システム
集計管理システム
C+ruby+swig
Rails
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
配信部分
• Apache+独自 DB+Cモジュール
• 複数プロセスが SharedMemoryを介してデータをやりとり
• SharedMemoryの管理はruby +swigで
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
配信システム概要図
配信サーバ
DeliveryEngine
Logs
広告案件データ (PostgreSQL)
配信管理システム Rails
Apacheモジュール
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
Apache+独自 DB+Cモジュール
配信サーバ
DeliveryEngine
Logs
広告案件データ (PostgreSQL)
配信管理システム Rails
Apacheモジュール
RDB+LLな構成だと 1桁以上速度が落ちるので、ここだけは Cで書かれています。
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
配信部分
• 複数プロセスが SharedMemoryを介してデータをやりとり
広告案件データ (SharedMemory)
ユーザからのアクセス 管理 DB
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
SharedMemoryの管理はruby+swigで
管理 DBからDBアップデート用 DSLで記述された rubyスクリプトを作成し、各 ADSVRで実行することにより、Sharedメモリを書き換える
広告データ(SharedMemory)
管理 DB
Rubyスクリプトを生成+実行
C-API+Swig
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
集計部分
• 配信サーバ側で一次処理、集計サーバでマージ集計 (プチmap/reduce)
• 一次集計は apacheのログ形式を工夫することで速度を稼ぐ
• 分散処理な為、基本集計に関しては全部rubyでも間に合ってる
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
集計システム概要
配信サーバ
DeliveryEngine
Logs
広告案件データ (PostgreSQL)
集計管理システム Rails
各サーバで一次集計 (Ruby)
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
一次集計
配信サーバ
DeliveryEngine
Logs
各サーバで一次集計 (Ruby)
配信サーバ側で一次処理を行い、データを圧縮(数100MB→数 KBに )
また apacheの combineログはパースが遅いので、ログ形式を工夫することで速度を稼ぐ
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
マージ集計
広告案件データ (PostgreSQL)
集計管理システム
各 ADSVRで一次集計されたデータを rubyでマージ集計し、DBに流し込み。
各 ADSVRの一次集計後のデータは数 10Kなため、Rubyでも余裕。
Logs Logs Logs Logs Logs
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
管理 DB、 UI部分
• DBスキーマは数個のトランザクションテーブルと大量のマスタデータの構成
• 大量のマスタ管理画面はほぼ全部ActiveScaffoldで構築
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
ActiveScaffold++
http://activescaffold.com/
マスタ管理部はほぼ全部これ。関連テーブルの UIもコントローラ部を足すことで勝手に UIを作ってくれる優れもの (ただし Rails3には非対応 )
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
ActiveScaffold++
class UserController < ApplicationController active_scaffold :user do |config| endend
これだけの記述で↓こんなのを作ってくれる
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
なぜ ruby及び Railsを選んだか?
会社立ち上げ当時、開発機のOSは FreeBSDで、言語はさておき、よいORMを探していた。
• Catalyst だ!→ CPAN地獄にはまり挫折• PHP だ! → ORMがほぼなかった (当時 )
• Java だ! → PHPと同様• Rails? → インストール一発! AR最高!
ということで Railsになりましたぶっちゃけたまたまですが、人にも異様に恵まれてとてもよい選択だったと思います。
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
ご参考: 弊社と rubyistの関係弊社がスタートアップにもかかわらず、いかに人に恵まれているかをご紹介します
今まで手伝ってくれた Rubyistの方々 @shachi @maiha @genki @yugui
今手伝ってくれてる&今後手伝ってくれる Rubyistの方々
@yuumi3 @a_matsuda @ukstudio
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
とある人曰く
「なにそのメンバー?国家転覆でも狙ってるの?」
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
まとめ1. Railsと Cで大量配信システムを作りました
3. アーキテクチャさえしっかりしてればほとんどの部分は rubyでいけるよ
5. 秘密はあんまりなくやってることは割と普通です
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
メンバー募集中!1. 大規模配信、大規模解析に興味ある方2. Ruby、デザパタが大好きな方3. 東京の西側よりも東側の下町文化が好きな方4. 興味ある方は[email protected]まで!
下町で働くのも悪くないですよ
© 2011 Scaleout Inc. All right reserved.© 2011 Scaleout Inc. All right reserved.
ご静聴有り難うございました
Railsと Cで広告システムを作って起業した話
~大江戸 Ruby会議 01~