Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Daisuke Yamazaki
PPTX, PDF
7,572 views
Ruby World Conference 2019 rubyによる超大量データ配信
Ruby World Conference 2019
Engineering
◦
Read more
4
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 47
2
/ 47
3
/ 47
4
/ 47
5
/ 47
6
/ 47
7
/ 47
8
/ 47
9
/ 47
10
/ 47
11
/ 47
12
/ 47
13
/ 47
14
/ 47
15
/ 47
16
/ 47
17
/ 47
18
/ 47
19
/ 47
20
/ 47
21
/ 47
22
/ 47
23
/ 47
24
/ 47
25
/ 47
26
/ 47
27
/ 47
28
/ 47
29
/ 47
30
/ 47
31
/ 47
32
/ 47
33
/ 47
34
/ 47
35
/ 47
36
/ 47
37
/ 47
38
/ 47
39
/ 47
40
/ 47
41
/ 47
42
/ 47
43
/ 47
44
/ 47
45
/ 47
46
/ 47
47
/ 47
More Related Content
PDF
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
by
Koichiro Matsuoka
PDF
MVV1
by
Masa Tadokoro
PDF
チームワーク、努力、勝利 / スタートアップのチームワークとコミュニケーション
by
Takaaki Umada
PPTX
WayOfNoTrouble.pptx
by
Daisuke Yamazaki
PPTX
スケールアウト再考
by
Daisuke Yamazaki
PPTX
マイクロサービスにおける 結果整合性との戦い
by
ota42y
PDF
アドテク勉強会
by
Shoho Kozawa
PPTX
今まで学び実践してきたこと
by
Daisuke Yamazaki
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
by
Koichiro Matsuoka
MVV1
by
Masa Tadokoro
チームワーク、努力、勝利 / スタートアップのチームワークとコミュニケーション
by
Takaaki Umada
WayOfNoTrouble.pptx
by
Daisuke Yamazaki
スケールアウト再考
by
Daisuke Yamazaki
マイクロサービスにおける 結果整合性との戦い
by
ota42y
アドテク勉強会
by
Shoho Kozawa
今まで学び実践してきたこと
by
Daisuke Yamazaki
What's hot
PDF
「顧客の声を聞かない」とはどういうことか
by
Yoshiki Hayama
PDF
ビジネスとITをリンクさせるアジャイルな組織のつくり方 - アジャイル経営カンファレンス2023
by
Graat(グラーツ)
PDF
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
PDF
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
by
Yoshiki Hayama
PDF
ゼロからはじめるプロダクトマネージャー生活
by
Takaaki Umada
PDF
DXと名の付くプロジェクトで忘れてはならないこと
by
Hagimoto Junzo
PDF
リーンスタートアップ本を振り返る 2018 (Lean Startup Update! 2018)
by
Takaaki Umada
PDF
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
by
Tatsuo Kudo
PDF
やはり俺のスタートアップの意思決定はまちがっている。
by
Takaaki Umada
PDF
正しいものを正しくつくる
by
toshihiro ichitani
PPTX
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
by
DeNA
PDF
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
by
モノビット エンジン
PDF
LEANSTARTUPの現場 #leanstartup
by
Itsuki Kuroda
PDF
企業におけるデータ分析プロジェクトと求められるスキル
by
Rakuten Group, Inc.
PDF
5分でわかった気になるインセプションデッキ
by
Takao Oyobe
PDF
MySQL勉強会 クエリチューニング編
by
MicroAd, Inc.(Engineer)
PPTX
PMBOKで学ぶプロジェクトマネジメントの基礎
by
Hiroyuki Tanaka
PDF
ノリとその場の勢いでPocを作った話
by
zaki4649
PDF
ネットワーク超入門
by
xyzplus_net
PPTX
失敗から学ぶデータ分析グループのチームマネジメント変遷
by
Tokoroten Nakayama
「顧客の声を聞かない」とはどういうことか
by
Yoshiki Hayama
ビジネスとITをリンクさせるアジャイルな組織のつくり方 - アジャイル経営カンファレンス2023
by
Graat(グラーツ)
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
by
Yoshiki Hayama
ゼロからはじめるプロダクトマネージャー生活
by
Takaaki Umada
DXと名の付くプロジェクトで忘れてはならないこと
by
Hagimoto Junzo
リーンスタートアップ本を振り返る 2018 (Lean Startup Update! 2018)
by
Takaaki Umada
PDSを実現するにあたっての技術動向の紹介 (OAuth, OpenID Connect, UMAなど)
by
Tatsuo Kudo
やはり俺のスタートアップの意思決定はまちがっている。
by
Takaaki Umada
正しいものを正しくつくる
by
toshihiro ichitani
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
by
DeNA
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
by
モノビット エンジン
LEANSTARTUPの現場 #leanstartup
by
Itsuki Kuroda
企業におけるデータ分析プロジェクトと求められるスキル
by
Rakuten Group, Inc.
5分でわかった気になるインセプションデッキ
by
Takao Oyobe
MySQL勉強会 クエリチューニング編
by
MicroAd, Inc.(Engineer)
PMBOKで学ぶプロジェクトマネジメントの基礎
by
Hiroyuki Tanaka
ノリとその場の勢いでPocを作った話
by
zaki4649
ネットワーク超入門
by
xyzplus_net
失敗から学ぶデータ分析グループのチームマネジメント変遷
by
Tokoroten Nakayama
Similar to Ruby World Conference 2019 rubyによる超大量データ配信
PDF
ソフトウェア開発の現場風景
by
Koichi ITO
PDF
ゲーム会社でのRuby : rails活用事例
by
Yasutomo Uemori
PPT
RailsとCで広告システムを作って起業した話
by
Daisuke Yamazaki
PPTX
Ruby on Rails を用いたWEBアプリケーションの開発
by
Koichi Shimozono
PPT
Ruby City Matsue
by
Tetsuo NODA
PDF
SIビジネスを変えよう。~ Ruby+Ruby on RailsによるエンタープライズCloudアプリケーション事業とは~
by
Kachi Creo
PDF
能力ファイル 2Tソフトウエアソリューション株式会社
by
Brrs Nguyen(2TS)
PDF
チームにRedmineを適用せよ! #RxTstudy
by
Dai FUJIHARA
PDF
スキニーなシステム開発にぴったりの契約形態
by
Eiwa System Management, Inc.
PDF
Rubyプログラミング教育に対する取り組みと事例紹介
by
Yasushi Ishikawa
PDF
大規模Webを支えるAgileな技術
by
bash0C7
PDF
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
by
Ouka Yuka
PDF
はじめてのScrumこれから大切にしたいこと Release#2
by
Takenori Takaki
PDF
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
by
Ayumu Aizawa
PDF
SGT技術トークス 継続的デリバリー
by
Yukei Wachi
PPT
リアルビジネスRuby
by
Tomoya Kawanishi
PDF
エンタープライズソフトウェア開発とOSS
by
Hiroshi Nakamura
PDF
The Essence of Using Ruby on Rails in Corporations
by
Koichiro Ohba
PDF
Rubyな日々
by
Kazuhiro Nishiyama
PPTX
そんな装備で大丈夫か?
by
2celeb
ソフトウェア開発の現場風景
by
Koichi ITO
ゲーム会社でのRuby : rails活用事例
by
Yasutomo Uemori
RailsとCで広告システムを作って起業した話
by
Daisuke Yamazaki
Ruby on Rails を用いたWEBアプリケーションの開発
by
Koichi Shimozono
Ruby City Matsue
by
Tetsuo NODA
SIビジネスを変えよう。~ Ruby+Ruby on RailsによるエンタープライズCloudアプリケーション事業とは~
by
Kachi Creo
能力ファイル 2Tソフトウエアソリューション株式会社
by
Brrs Nguyen(2TS)
チームにRedmineを適用せよ! #RxTstudy
by
Dai FUJIHARA
スキニーなシステム開発にぴったりの契約形態
by
Eiwa System Management, Inc.
Rubyプログラミング教育に対する取り組みと事例紹介
by
Yasushi Ishikawa
大規模Webを支えるAgileな技術
by
bash0C7
rake:money拡大版@Ruby会議2010 ~Rubyエンジニアと企業の幸せな関係~
by
Ouka Yuka
はじめてのScrumこれから大切にしたいこと Release#2
by
Takenori Takaki
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
by
Ayumu Aizawa
SGT技術トークス 継続的デリバリー
by
Yukei Wachi
リアルビジネスRuby
by
Tomoya Kawanishi
エンタープライズソフトウェア開発とOSS
by
Hiroshi Nakamura
The Essence of Using Ruby on Rails in Corporations
by
Koichiro Ohba
Rubyな日々
by
Kazuhiro Nishiyama
そんな装備で大丈夫か?
by
2celeb
Ruby World Conference 2019 rubyによる超大量データ配信
1.
Rubyによる超大量データ配信 Ruby World Conference
2019 Supership CTO Daisuke Yamazaki
2.
2 About me Supership CTO
Daisuke Yamazaki Supership 取締役 CTO 2006年 スケールアウトを創業 2013年 買収されKDDIグループ入り 2015年 会社が合併し、Supershipとして再出発
3.
3 今日話す順番 ● 弊社の紹介 ● Rubyでいかに大量配信システムを構築したか ●
Rubyでいかにビジネスニーズと相対してきたか 今日のアジェンダは以下の通りです (所要時間:30分)
4.
4Confidential 会社概要 グループ会社 エージェンシー不正広告対策 KDDIから出資を受けるSupershipホールディングスの子会社として、 2015年11月設立。 KDDIの戦略子会社として、インターネット分野で幅広く事業を推進。 AI・データ分析
5.
5 サービス概要 国内最大級広告配信プラットフォーム「Scaleout Ad Platform」の提供 Ad
Platform上の主なプロダクト ▼Ad Generation インプレッション数:約450億/月 登録メディア数:約6,000apps・sites 主要メディア:ジモティー、グノシー、ニコニコ動画、有名メディア多数 ▼ScaleOut DSP リクエスト数:約5,000億/月
6.
6 About ScaleoutAdPlatformについて カジュアル(=安価)にあらゆる広告配信ニーズを満 たすべく開発された純国産広告配信管理システム (弊社メインプロダクト) 1. 現在総アクセスは月間一兆ほど 2.
SSP/DSP/屋外広告/OEMなど、その他デジタル広 告配信に関することなら何でも対応可能
7.
7 Rubyと配信システムについて
8.
8 全体概要 Logs 広告案件データ(PostgreSQL) 配信管理 システム 集計管理 システム 配信部分 C++, ruby, swig 独自DB 管理システム ほとんどRails 配信サーバ C++サーバ
9.
9 配信部分 Logs 広告案件データ(PostgreSQL) 配信管理 システム 集計管理 システム 配信部分 C++, ruby, swig 独自DB 管理システム ほとんどRails 配信サーバ C++サーバ
10.
10 配信部分 • 複数プロセスがSharedMemoryを介してデー タをやりとり 広告案件データ(SharedMemory) C++サーバ User Access 管理プログラム群 管理DB
11.
11 データの管理はruby+swigで 管理DBからDBアップデート用DSLを作成し、各ADSVRで実 行することにより、Sharedメモリを書き換える ADServer DB C++API,SwigなRuby スクリプトを生成 ADServer ADServer 各ADServer loader = SoAdsScheduleLoader.new loader.start_create_adsshm loader.add_constraint(:constraintid
=> "0", :expression => "true;") loader.add_constraint(:constraintid => "true_func", :expression => "true;") loader.add_constraint(:constraintid => "rtb-common-template", :expression => <<-EOT) (function() { var result = candidate_context_get("rtb_result"); set_adrequest_cache("user-common-html", result.template_callback()); return true; })(); EOT
12.
12 データ反映用DSL(抜粋) loader = SoAdsScheduleLoader.new loader.start_create_adsshm loader.add_constraint(:constraintid
=> "0", :expression => "true;”) loader.add_constraint(:constraintid => "true_func", :expression => "true;”) loader.add_constraint(:constraintid => "rtb-common-template", :expression => <<-EOT) (function() { var result = candidate_context_get("rtb_result"); set_adrequest_cache("user-common-html", result.template_callback()); return true; })(); EOT # DSL(Ruby Ofcource)
13.
13 DSLがrubyでうれしいこと(その1) tl = SoAdsTreeLoader.new tl.add("2075500479","784200084") tl.add("2075500768","2075500767") tl.add("2075500505","2075500503") SharedMemoryのデータレイアウトが変わってもDSLは一緒な ので、バージョンアップ時のデータ移行が簡単 データの互換性をrubyレベルで担保できる
14.
14 DSLがrubyでうれしいこと(その2) has_var_loader_class = SoAdsVarLoader
rescue false vl = SoAdsVarLoader.new if has_var_loader_class Rubyなので、メタプログラミングと組み合わせてやりたい放題 新機能をクラス化して、クラスが存在するときだけ 新機能を実行させるなど自由自在。
15.
15 集計部分 • 配信サーバ側で一次処理、集計サーバでマージ集計 • 一次集計はログ形式を工夫することで速度を稼ぐ •
分散処理な為、基本集計に関しては全部rubyでも間に合ってる
16.
16 集計システム概要 広告案件データ(PostgreSQL) マージ&ロード 集計システム (Rails) Logs 一次集計 (Ruby&C++Extention) 配信サーバ processedLog
17.
17 一次集計 配信サーバ側で一次処理を行い、データを圧縮 (数100MB→数100KBに) またログ形式を工夫することで速度を稼ぐ 色々間に合わなかったので、ここはC++Extention Logs 一次集計 (Ruby&C++Extention) 配信サーバ processedLog
18.
18 マージ集計 広告案件データ (PostgreSQL) マージ&ロード(ruby) 各ADSVRで一次集計されたデータをマージ集計し、 DBに流し込み(Rubyでもなんとかなってる)。 processedLog
19.
19 スケーラビリティについてのまとめ • だいたいrubyでなんとかなってる • 速度がどうしても稼げないところはC++など •
上手に役割分担させることで一兆アクセスでもいけてる
20.
20 Rubyとビジネスについて
21.
21 About Scaleout AdPlatform ScaleOut Ad
Platform Supership Inc. TagManagement DMP DSP SSP 3rdParty AdServer Video Reward Video Ads PMPOEM
22.
22 デジタル広告業界を取り巻く状況
23.
23 大企業とベンチャーの相性について 理想 ベンチャーの機動力と大企業のリソースを合わせてうまいことやる 現実 • 大企業そんなにスピード早くない • 突然大企業側が本気出したときに案件のデカさに ベンチャー側が耐えられない(こっちが非常に多い!)
24.
24 ベンチャーとして戦い続けるにはどうすればいいか? 起業前に1ヶ月ほど考えた
25.
25 大企業と協業するにあたって出した結論 • 超スケーラビリティがあって • 超柔軟性があって •
超落ちない 超すごいシステムがあれば大企業の要望に答えられる
26.
26 実装について考えたこと
27.
27 超すごいシステムを作るにあたって考えたこと 普通にプログラムを書いただけだと、普通のプロダクトに なってしまうだろう →成功しているOSSやシステムを参考にすれば 何かしら知見が得られるはずと考えた
28.
28 参考にしたポイント 1. 古くからあるOSS →どうやって長い間成長できたのかを分析 →思想にたどり着けるはず 2. 新しく出たOSS →既存の問題を解くべく現れたはず →差分を見れば思想にたどり着けるはず
29.
29 設計にあたって参考にしたOSSなど • RAID • qmail •
Emacs, Lisp • (もちろん)Ruby, Rails
30.
30 RAID 構成するコンポーネントが不安定だからとい って全体の安定性を諦める必要はない
31.
31 qmail • Sendmailの対抗(今はPostfix?) 複数のプログラムがお互いを過度に信用 せず、協調してシステムを構築する
32.
32 Emacs(Lisp), Firefox(JS) 描画エンジン+ EmacsLisp 描画エンジン+ JavaScript 言語を内蔵していて、機能をあとからじゃんじゃん足せる
33.
33 Emacs(Lisp), Firefox(JS) 今時のユーザからのソフトウェアへの要求は余りに多く, プログラマ にはほとんど予想しきれない.
(略)ユーザの望みを完璧に叶えるソ フトウェアをプログラマが供給できなくとも, プログラマには拡張で きるソフトウェアを供給することはできる (ポール・グラハム On Lispより)
34.
34 なぜRuby及びRailsを選んだか? 会社立ち上げ当時(2006年)、開発機のOSはFreeBSD で、言語はさておき、よいORMを探していた。 Catalystだ!→ CPAN地獄にはまり挫折 PHPだ! →
ORMがほぼなかった(当時) Javaだ! → PHPと同様 Rails? → インストール一発!AR最高! ということでRails(当時1.1)になりました ぶっちゃけたまたまですが、人にも異様に恵まれて とてもよい選択だったと思います。
35.
35 実際の実装について
36.
36 広告システムの正体 「広告システムとは」 その瞬間の状況に応じた最適なコンテンツ (= Markup Languageで記述された小さなテキスト片)を 超柔軟かつ超高速に選択し、配信し、集計できる仕組み
37.
37 小さなHTML片? 広告クリエイティブの正体はテキストと素材データ - Banner(gif,jpg,flash,text) - TextMail -
3rdParty Tag - Video Ads - InGame Ads - Etc.. Text(Metadata) + Raw Material (gif,jpg,swf,flv) 正体は?
38.
38 ScaleoutAdPlatformの構成 コンテンツ配信管理システム(socdm.com) (配信及びログ集計) 広告配信システム 広告アプリA 広告アプリB 広告アプリC まず汎用の配信システムを作り、 その上に汎用の広告配信システムを作り、 更にその上に広告アプリとしてSSP/DSPを構築
39.
39 なぜ別々に作らなかったか? すでに数千億アクセスをさばいており新規のアプリも 頑強なシステムの上でアプリを作るため、安定性が高い 長い時間かけて練られて 実績もあるシステムが土台としてある 安定性が高いものが最初から作れる コンテンツ配信管理システム(socdm.com) (配信及びログ集計) 広告配信システム 広告アプリ1 広告アプリ2 NewApp
40.
40 広告システムに求められる要件(再掲) • 超スケーラビリティがあって • 超柔軟性があって •
超落ちない 配信サーバは当時Cで書かれてたので、 頻繁にアップデートしたくなかった。 →配信サーバに手を入れることなく任意の機能追加ができればいいと 考えた。
41.
41 ビジネスロジックをシステムから分離させた 管理DBにビジネスロジックを登録するとADSVRに 自動でロードされる (=新ロジックの実装にADSVRのVerUp必要なし) ADServer DB (IncludingBusinessLogic) BusinessLogic Description Language ADServer ADServer 各ADServer loader
= SoAdsScheduleLoader.new loader.start_create_adsshm loader.add_constraint(:constraintid => "0", :expression => "true;") loader.add_constraint(:constraintid => "true_func", :expression => "true;") loader.add_constraint(:constraintid => "rtb-common-template", :expression => <<-EOT) (function() { var result = candidate_context_get("rtb_result"); set_adrequest_cache("user-common-html", result.template_callback()); return true; })(); EOT
42.
42 ビジネスロジック記述言語? loader.add_constraint(:constraintid => "rtb-common-template",
:expression => <<-EOT) (function() { var result = candidate_context_get("rtb_result"); set_adrequest_cache("user-common-html", result.template_callback()); return true; })(); EOT ぶっちゃけJavaScriptです。 というかADSVRにJSエンジン積んでます(SpiderMonkey)
43.
43 JavaScriptの嬉しさ • JavaScriptなので、やりたい放題 • 設定するお客さんもまぁ許容してくれる(最初はSchemeとか検討し ました) •
Google(v8)とかMozillaが勝手にエンジンを早くしてくれるかも? →ビジネスロジックであるJSの生成はrubyで行ったわけですが、 実際それは非常にうまく機能し、大企業の要望を満たすことができま した。
44.
44 Yconbinator ポール・グラハムの言葉(その2) Beating The
Averages(普通のやつらの上を行け 2001年) http://pactical-scheme.net/trans/beating-the-averages-j.html 私達のソフトウェアがユニークだったのは、それが主にLispと呼ばれ る プログラミング言語で書かれていたからだ。 (略)そして、パワー において劣る他の言語を使っている競争相手に対して、 Lispは強力な アドバンテージとなった。
45.
45 当時(2006年)私が思ったこと あれ?ポール・グラハムはLispでライバルを蹴散らしたけど、 それって当時Ruby/Rails相当をもってたってことじゃない? →もう確かめる方法はないのですが、私にとってのLispはRubyで、 実際戦い抜くことができてます。たぶんrubyでなかったら途中でビジ ネスが頓挫していた可能性は高かったと思います。
46.
46 まとめ • Rubyで超大規模システムを構築することはもはや当たり前 • 起業は海の向こうだけの話ではなく、我々でも十分可能 (でも結構大変) •
プログラミングはエンジニアにパワーを与えてくれて、世界を変え ることができる
47.
47 ご清聴ありがとうございました
Editor's Notes
#3
エンジニアで起業して
#7
ほとんどrubyで書かれてる
Download