Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

RailsとCで広告システムを作って起業した話

17,776 views

Published on

Published in: Technology
  • high quality☆ reasonable price☆
    free shi pping accept pay pal,
    you can order all kind of things you want,
    believe me , trust me .
    ☆☆☆ www.happyshopping100.com -=★
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

RailsとCで広告システムを作って起業した話

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

×