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
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
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
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
Kürzlich hochgeladen
(9)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
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