Suche senden
Hochladen
Async Programming on Ruby
•
5 gefällt mir
•
1,239 views
Kazki Matsumoto
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 14
Empfohlen
mrubyのfiberを試してみた
mrubyのfiberを試してみた
Kindai University
Hyperlapse for Azure Media Servicesを本気で使ってみた
Hyperlapse for Azure Media Servicesを本気で使ってみた
Naoto MATSUMOTO
組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
Takehiko YOSHIDA
Shell で制限付き並列処理をしよう
Shell で制限付き並列処理をしよう
博文 斉藤
All Your Mistake Are Belong To Us
All Your Mistake Are Belong To Us
Kazki Matsumoto
Linuxカーネル解読室輪講@はてな 第6章
Linuxカーネル解読室輪講@はてな 第6章
Kazki Matsumoto
the Lingo project (Esper2010 LT)
the Lingo project (Esper2010 LT)
Kazki Matsumoto
Lang-8 got updated on SimpleResource
Lang-8 got updated on SimpleResource
Kazuki MATSUMOTO
Empfohlen
mrubyのfiberを試してみた
mrubyのfiberを試してみた
Kindai University
Hyperlapse for Azure Media Servicesを本気で使ってみた
Hyperlapse for Azure Media Servicesを本気で使ってみた
Naoto MATSUMOTO
組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
組込みシステムでIoTへの扉を開こう! mruby on LEGO Mindstorms EV3 (R)
Takehiko YOSHIDA
Shell で制限付き並列処理をしよう
Shell で制限付き並列処理をしよう
博文 斉藤
All Your Mistake Are Belong To Us
All Your Mistake Are Belong To Us
Kazki Matsumoto
Linuxカーネル解読室輪講@はてな 第6章
Linuxカーネル解読室輪講@はてな 第6章
Kazki Matsumoto
the Lingo project (Esper2010 LT)
the Lingo project (Esper2010 LT)
Kazki Matsumoto
Lang-8 got updated on SimpleResource
Lang-8 got updated on SimpleResource
Kazuki MATSUMOTO
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
VirtualTech Japan Inc.
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
Naoto Gohko
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場
Toshiaki Baba
20120405 setsunaセミナー
20120405 setsunaセミナー
Takahiro Iwase
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
AWSによるグラフDB構築
AWSによるグラフDB構築
Alexander Patrikalakis
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
Kohei KaiGai
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコシステムズ合同会社
第6回インターネットと運用技術シンポジウム WIPセッション
第6回インターネットと運用技術シンポジウム WIPセッション
Hiroki Kashiwazaki
Architecting on Alibaba Cloud - Fundamentals - 2018
Architecting on Alibaba Cloud - Fundamentals - 2018
真吾 吉田
高速ネットワーク技術と周辺動向(特別講義)
高速ネットワーク技術と周辺動向(特別講義)
Naoto MATSUMOTO
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
Tomoya Hibi
Crooz meet fusion io3 open
Crooz meet fusion io3 open
takaoka susumu
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
Kohei KaiGai
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
Takanori Suzuki
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
NTT Communications Technology Development
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2
Kuniaki Igarashi
Amazon Web Servicesのご紹介 - 東北クラウド実践カンファレンス2011
Amazon Web Servicesのご紹介 - 東北クラウド実践カンファレンス2011
SORACOM, INC
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Weitere ähnliche Inhalte
Ähnlich wie Async Programming on Ruby
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
VirtualTech Japan Inc.
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
Naoto Gohko
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場
Toshiaki Baba
20120405 setsunaセミナー
20120405 setsunaセミナー
Takahiro Iwase
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
AWSによるグラフDB構築
AWSによるグラフDB構築
Alexander Patrikalakis
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA OSS Professional Services
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
Kohei KaiGai
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコシステムズ合同会社
第6回インターネットと運用技術シンポジウム WIPセッション
第6回インターネットと運用技術シンポジウム WIPセッション
Hiroki Kashiwazaki
Architecting on Alibaba Cloud - Fundamentals - 2018
Architecting on Alibaba Cloud - Fundamentals - 2018
真吾 吉田
高速ネットワーク技術と周辺動向(特別講義)
高速ネットワーク技術と周辺動向(特別講義)
Naoto MATSUMOTO
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
Tomoya Hibi
Crooz meet fusion io3 open
Crooz meet fusion io3 open
takaoka susumu
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
Kohei KaiGai
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
Takanori Suzuki
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
NTT Communications Technology Development
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2
Kuniaki Igarashi
Amazon Web Servicesのご紹介 - 東北クラウド実践カンファレンス2011
Amazon Web Servicesのご紹介 - 東北クラウド実践カンファレンス2011
SORACOM, INC
Ähnlich wie Async Programming on Ruby
(20)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
GMOインターネットにおけるOpenStack Swiftのサービス化とその利用事例のご紹介 - OpenStack最新情報セミナー 2015年2月
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場
物理サーバとクラウドの運用管理の違い 2010 03 24 馬場
20120405 setsunaセミナー
20120405 setsunaセミナー
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
AWSによるグラフDB構築
AWSによるグラフDB構築
NTT DATA と PostgreSQL が挑んだ総力戦
NTT DATA と PostgreSQL が挑んだ総力戦
20191211_Apache_Arrow_Meetup_Tokyo
20191211_Apache_Arrow_Meetup_Tokyo
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
第6回インターネットと運用技術シンポジウム WIPセッション
第6回インターネットと運用技術シンポジウム WIPセッション
Architecting on Alibaba Cloud - Fundamentals - 2018
Architecting on Alibaba Cloud - Fundamentals - 2018
高速ネットワーク技術と周辺動向(特別講義)
高速ネットワーク技術と周辺動向(特別講義)
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
[D20] 高速Software Switch/Router 開発から得られた高性能ソフトウェアルータ・スイッチ活用の知見 (July Tech Fest...
Crooz meet fusion io3 open
Crooz meet fusion io3 open
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
デブサミ2014-Stormで実現するビッグデータのリアルタイム処理プラットフォーム ~ストリームデータ処理から機械学習まで~
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
【たぶん日本初導入!】Azure Stack Hub with GPUの性能と機能紹介
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2
Amazon Web Servicesのご紹介 - 東北クラウド実践カンファレンス2011
Amazon Web Servicesのご紹介 - 東北クラウド実践カンファレンス2011
Kürzlich hochgeladen
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
Kürzlich hochgeladen
(10)
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
Async Programming on Ruby
1.
RubyでEvent-DrivenなWebプログラミングを楽しむ環境が整ってきた件 @KazkiMatz
2.
Background ’08 3月
’07 4月 国土交通省 ’02 4月 ’83 9月 ’07 3月 ’09 12月 IPA未踏案件 京都大学 工学部 電気電子工学科 head ’06 8月 ’09 11月 ’08 4月
3.
(復習)Event-Drivenなアーキテクチャが重要である理由 20ms 100ms
80ms 前処理 DBレスポンス待ち View レンダリング View レンダリング 前処理 DBレスポンス待ち View レンダリング View レンダリング DBレスポンス待ち DBレスポンス待ち 前処理 View レンダリング 前処理 CPUリソースを有効活用するには? -> 1CPUにつき、2インスタンス以上立ち上げる
4.
思考実験 10ms 10sec
(10,000ms) 40ms 前処理 バックエンドレスポンス待ち 後処理 前処理 バックエンドレスポンス待ち 後処理 … 1CPUにつき、約200インスタンス必要!?
5.
思考実験 Railsの場合: 1インスタンスにつき、フットプリントが100MB
×200個 = 20GB 現実的ではない C10K問題
6.
解決策 Event-Drivenに処理する(Reactorモデル) 軽量スレッドを活用(Fiber,
Neverblock) コンテキストの保持面から考えると… 1 ⇒ closureベース(JSにそっくり!) 2 ⇒ 軽量スレッドの継承ベース
7.
現時点での顔ぶれ(Ruby界隈) EventMachine Async-Webサーバ
Thin Ebb Async-Webフレームワーク Cramp async_sinatra 周辺環境 Gearman
8.
Gearman? 分散処理フレームワーク Event-Driven
サーバプログラミングと抜群に相性がいい(重い処理をバックエンドに投げ、レスポンスが帰ってくるまで待つ) ブロックしないクライアントが無かったので、EventMachine::Protocols::GearmanをGithub上で作成中。 http://github.com/KazkiMatz/em-gearman-client
9.
Cramp? 登場して間もないWebフレームワーク 手軽にEvent-DrivenなWebアプリケーションを書ける
EventMachineを使っている Rackをサポート Thin / Rainbows! 上で動作 http://m.onkey.org/2010/1/7/introducing-cramp
10.
Cramp JSONを返すAPIエンドポイントの実装例 classTestController
< Cramp::Controller::Action on_start :main def main ~~~ self.respond({ … }) end defrespond hash render hash.to_json finish end end
11.
Cramp defmain
res = {} joint = AsyncJobsJoint.new joint.callback = Proc.new{ self.respond(res) } ticket4memcache = joint.take_ticket @@cache ||= EM::P::Memcache.connect'localhost', 11211 @@cache.get(someKey.to_sym){|item| res[:memcache_response] = item if item joint.return_ticket ticket4memcache } ticket4gearman = joint.take_ticket gearman = EM::P::Gearman.connect‘localhost', 7003 task = gearman.create_task(‘someJob’, someInput) task.on_complete{|item| gearman.close_connection_after_writing res[:gearman_response] = item joint.return_ticket ticket4gearman } task.on_fail { gearman.close_connection_after_writing joint.return_ticket ticket4gearman } task.queue! ticket4db = joint.take_ticket User.where(User[:id].eq(params[:user_id])).first {|user| res[:db_response] = user joint.return_ticket ticket4db } end 全体終了後の コールバックを 登録 Memcached, Gearman, MySQLの3者に、“同時並行的に”データを取りに行き、AsyncJobsJoint(後述)で待ち合わせている。
12.
Cramp内、待ち合わせのお供に… classAsyncJobsJoint defcallback=
proc @callback = proc end deftake_ticket @tickets ||= [] ticket = (@tickets.max || 0) + 1 @tickets << ticket ticket end defreturn_ticket ticket @tickets.delete(ticket) @callback.callif@tickets.empty? end end
13.
Summary 2007年にEventMachineが登場してはや3年、環境はかなり整ってきた 使いこなせるかどうかで、必要なサーバリソースが一桁以上変わることがある
Crampよさげ 一つのアプリケーション内で、同期Webフレームワーク(ex. Rails)と非同期Webフレームワーク(ex. Cramp)を使い分ける 一歩踏み出すのに、今ほどいい時期はない
14.
ご清聴ありがとうございました 松本 一輝
(KazkiMatz) email: kazki.matz@gmail.com blog: http://d.hatena.ne.jp/kazuk_i/ twitter: @KazkiMatz