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
160
0
Share
mod_mruby ngx_mruby Fukuoka Ruby Award 2014
MATSUMOTO Ryosuke
PRO
January 22, 2014
More Decks by MATSUMOTO Ryosuke
See All by MATSUMOTO Ryosuke
問いを起点に、社会と共鳴する知を育む場へ
matsumoto_r
PRO
0
820
さくらインターネット研究所 アップデート2025年
matsumoto_r
PRO
0
890
リモートワークにおけるパッシブ疲労
matsumoto_r
PRO
6
5.5k
エンジニアのキャリアパスはどう描く? まつもとりーさんと考える後悔しないキャリア選択
matsumoto_r
PRO
10
2.4k
まつもとりーのこれまでとCOGNANOのこれから
matsumoto_r
PRO
0
370
2022年の研究所の評価制度振り返りと今後
matsumoto_r
PRO
0
890
VUCAワールドから紐解く組織や評価制度の変遷と再設計
matsumoto_r
PRO
9
26k
コンテナの研究開発から学ぶLinuxの要素技術
matsumoto_r
PRO
2
1.6k
開発者体験をさらに向上させる 事業と研究との連携
matsumoto_r
PRO
2
2.5k
Other Decks in Technology
See All in Technology
色を視る
yuzneri
0
320
大学職員のための生成AI最前線 :最前線を、AIガバナンスとして読み直すためのTips
gmoriki
2
3.3k
国内外の生成AIセキュリティの最新動向 & AIガードレール製品「chakoshi」のご紹介 / Latest Trends in Generative AI Security (Domestic & International) & Introduction to AI Guardrail Product "chakoshi"
nttcom
4
1.7k
Digital Independence: Why, When and How
wannesrams
0
260
20260423_ハドソンのエロゲを追え_レトロゲーム
poropinai1966
0
110
「SaaSの次の時代」に重要性を増すステークホルダーマネジメントの要諦 ~解像度を圧倒的に高めPdMの価値を最大化させる方法~
kakehashi
PRO
3
3.6k
「QA=テスト」「シフトレフト=スクラムイベントの参加者の一員」の呪縛を解く。アジャイルな開発を止めないために、10Xで挑んだ「右側のしわ寄せ」解消記 #scrumniigata
nihonbuson
PRO
3
680
Cortex Codeのコスト見積ヒントご紹介
yokatsuki
0
140
MySQL 9.7がやってきた ~これまでのあらすじと基本情報~ @ 日本MySQLユーザ会会2026年04月 / mysql97-yattekita
sakaik
0
170
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
7.9k
Agent の「自由」と「安全」〜未来に向けて今できること〜
katayan
0
240
Microsoft 365 / Microsoft 365 Copilot : 自分の状態を確認する「ラベル」について
taichinakamura
0
450
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.4k
The Cult of Friendly URLs
andyhume
79
6.9k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
180
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
140
Become a Pro
speakerdeck
PRO
31
5.9k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.5k
4 Signs Your Business is Dying
shpigford
187
22k
Documentation Writing (for coders)
carmenintech
77
5.3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.1k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
130
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
54k
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