Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
mod_mruby ngx_mruby Fukuoka Ruby Award 2014
Search
MATSUMOTO Ryosuke
PRO
January 22, 2014
Technology
0
140
mod_mruby ngx_mruby Fukuoka Ruby Award 2014
MATSUMOTO Ryosuke
PRO
January 22, 2014
Tweet
Share
More Decks by MATSUMOTO Ryosuke
See All by MATSUMOTO Ryosuke
リモートワークにおけるパッシブ疲労
matsumoto_r
PRO
6
4.8k
エンジニアのキャリアパスはどう描く? まつもとりーさんと考える後悔しないキャリア選択
matsumoto_r
PRO
10
2k
まつもとりーのこれまでとCOGNANOのこれから
matsumoto_r
PRO
0
280
2022年の研究所の評価制度振り返りと今後
matsumoto_r
PRO
0
670
VUCAワールドから紐解く組織や評価制度の変遷と再設計
matsumoto_r
PRO
9
26k
コンテナの研究開発から学ぶLinuxの要素技術
matsumoto_r
PRO
2
1.5k
開発者体験をさらに向上させる 事業と研究との連携
matsumoto_r
PRO
2
2.2k
企業研究の価値と事業との連携
matsumoto_r
PRO
0
1.3k
誇りを持って研究していくために
matsumoto_r
PRO
1
1.5k
Other Decks in Technology
See All in Technology
機械学習を「社会実装」するということ 2025年版 / Social Implementation of Machine Learning 2025 Version
moepy_stats
4
870
AWSサービスアップデート 2024/12 Part3
nrinetcom
PRO
0
140
自社 200 記事を元に整理した読みやすいテックブログを書くための Tips 集
masakihirose
2
320
技術に触れたり、顔を出そう
maruto
1
140
【JAWS-UG大阪 reInvent reCap LT大会 サンバが始まったら強制終了】“1分”で初めてのソロ参戦reInventを数字で振り返りながら反省する
ttelltte
0
130
Building Scalable Backend Services with Firebase
wisdommatt
0
110
0→1事業こそPMは営業すべし / pmconf #落選お披露目 / PM should do sales in zero to one
roki_n_
PRO
1
980
My small contributions - Fujiwara Tech Conference 2025
ijin
0
1.4k
RubyでKubernetesプログラミング
sat
PRO
4
150
AWS Community Builderのススメ - みんなもCommunity Builderに応募しよう! -
smt7174
0
170
シフトライトなテスト活動を適切に行うことで、無理な開発をせず、過剰にテストせず、顧客をビックリさせないプロダクトを作り上げているお話 #RSGT2025 / Shift Right
nihonbuson
3
2.1k
いま現場PMのあなたが、 経営と向き合うPMになるために 必要なこと、腹をくくること
hiro93n
9
7.3k
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Designing for humans not robots
tammielis
250
25k
The Invisible Side of Design
smashingmag
299
50k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
It's Worth the Effort
3n
183
28k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
Making the Leap to Tech Lead
cromwellryan
133
9k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
A designer walks into a library…
pauljervisheath
205
24k
Automating Front-end Workflow
addyosmani
1366
200k
RailsConf 2023
tenderlove
29
970
Transcript
mod_mruby × ngx_mruby スクリプト言語で高速かつ省メモリに拡張可能な Web サーバの機能拡張支援機構 京都大学 松本 亮介 -
第6回 フクオカRuby大賞 -
目次 1. 本研究の概要 2. mrubyによる実装 3. パフォーマンス評価 4. 貢献 -
第6回 フクオカRuby大賞 - 2
本研究の概要 - 第6回 フクオカRuby大賞 - 3 - 特徴 -
研究の背景 • Webサービスの大規模・複雑化 – Webサービスの無料・低価格化に伴う普及 – スマートフォンからサービスを利用する機会の増加 – Webサーバへのアクセス数が日々増加 •
Webサービスの低価格化と安定性向上が課題 – セキュリティやリソースの管理の効率化 – サービスの運用・管理コストの低減 – サービス形態によってWebサーバの機能を最適化 - 第6回 フクオカRuby大賞 - 4
Webサーバの機能拡張 • Webコンテンツでは難しい処理を実現可能 – Webコンテンツ処理前後に処理を追加 – 効率の良いアクセス制御やリソース制御を実現 – Webサービスの運用・管理を効率化 •
従来のWebサーバの機能拡張手法 – C言語による実装が定番 • 高速かつ省メモリ ⇔ 保守性や生産性が低い – スクリプト言語による実装 • 保守性や生産性が高い ⇔ 低性能・安全性の問題 - 第6回 フクオカRuby大賞 - 5
mod_mruby × ngx_mruby[1] • スクリプトで高速・省メモリにWebサーバを拡張 – 生産性に関する組込みソフトウェア開発の課題を参考 – 性能とスクリプトによる生産性を両立した機能拡張機構 –
性能面と安全性を両立した汎用的なアーキテクチャ設計 – 複数の異なるWebサーバの振る舞いを共通のDSLで記述 – 実装に最適な組込みスクリプト言語mrubyを採用 省メモリ、コンパイルが低コスト、機能の取り外しが可能 [1] 松本亮介,岡部 寿男, mod_mruby: スクリプト言語で高速かつ省メモリに拡張可能なWebサーバの機能拡 張支援機構, 情報処理学会第6回インターネットと運用技術シンポジウム, 2013年12月. 優秀論文賞受賞 - 第6回 フクオカRuby大賞 - 6
mrubyによる実装 - 第6回 フクオカRuby大賞 - 7 - mrubyの適用箇所 -
mod_mruby ・ ngx_mruby • できるだけ同じ記述で拡張できるように設計 • Webサーバの実装の違いをmruby DSLで吸収 • Rubyのアプリケーション開発者がコンテンツ開発の延長でWeb
サーバの機能拡張も総合的に実装できる Apache API mruby script 1 mod_mruby mruby script 2 ・ ・ ・ ・ mruby script n Nginx API ngx_mruby mruby script 3 Apache Core Nginx Core mruby DSL for Web - 第6回 フクオカRuby大賞 - 8
mod_mrubyとngx_mrubyの特徴 • 特徴 – 設定が容易 – インタプリタを共有する事で高速・省メモリに動作 – スクリプト間でグローバル変数やクラスの干渉を防止 –
Webサーバの振る舞いをRuby DSLで容易に記述可能 – プロセスを再起動する事なく変更可能(キャッシュも可能) • 採用例 – オリジナルのリバースプロキシ(20行程度) – 複雑な条件によるリダイレクト – サーバの負荷によって処理を変更 – サーバプロセスの内部情報を利用したアクセス制御 – 管理者が自由にWebサーバの振る舞いを定義可能 - 第6回 フクオカRuby大賞 - 9
Apache httpd 設定例 # コンパイル方式: コードの変更可 <Location /mruby-test> mrubyHandlerMiddle /path/to/test.rb
</Location> # キャッシュ方式: コード変更不可だが高速に動作 <Location /mruby-test-cache> mrubyHandlerMiddle /path/to/test.rb cache </Location> - 第6回 フクオカRuby大賞 - 10
nginx 設定例 # コンパイル方式: コードの変更可 Location /mruby-test { mruby_contenx_handler /path/to/test.rb;
} # キャッシュ方式: コード変更不可だが高速に動作 Location /mruby-test-cache { mruby_contenx_handler /path/to/test.rb cache; } - 第6回 フクオカRuby大賞 - 11
Reverse Proxy by mod_mruby - 第6回 フクオカRuby大賞 - 12
BasicAuth with Redis by mod_mruby - 第6回 フクオカRuby大賞 - 13
リソース制御の応用例[2] r = Apache::Request.new if r.user == “matsumoto_r” cpu =
Cgroup::CPU.new “cpu_group” # CPUを10%に制御したい場合 cpu.cfs_quota_us = 10000 cpu.create cpu.attach end [2] 松本亮介, 岡部寿男, リクエスト単位で仮想的にコンピュータリソースを分離するWebサーバのリソース制 御アーキテクチャ, 情報処理学会研究報告 Vol.2013-IOT-23, No.4, 2013年9月. 学生奨励賞受賞 - 第6回 フクオカRuby大賞 - 14
パフォーマンス評価 - 第6回 フクオカRuby大賞 - 15 - Hello World文字列レスポンスベンチマーク -
15688.92 21098.05 21435.75 22330.84 46571.37 52503.36 64887.54 0 10000 20000
30000 40000 50000 60000 70000 mod_mruby mod_mruby cache apach httpd index.html mod_hello ngx_mruby nginx index.html ngx_mruby cache REQUESTS/SEC mod_mruby ngx_mruby Peformance (ab -k -c 100 -n 100000 http://127.0.0.1/*)
貢献 - 第6回 フクオカRuby大賞 - 17 - Rubyを活用したことによる効果 -
貢献 • 生産性と性能の両立が困難であるという従来のスクリプト言 語によるWebサーバの機能拡張の問題を解決 • 大規模・複雑化しているWebシステムに必要な機能拡張を性 能を維持しながら馴染みのあるRubyで容易に実現可能 • Rubyのアプリケーション開発の延長でWebサーバソフトウェ アの違いを気にする事なく複数のWebサーバの機能拡張も
総合的に実装可能となりミドルウェアとの親和性が向上 • 性能と生産性を両立したWebサーバの機能拡張によって WebサーバがInternet of Thingsにおけるハブの役割を担う - 第6回 フクオカRuby大賞 - 18