$30 off During Our Annual Pro Sale. View Details »
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
150
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
0
740
さくらインターネット研究所 アップデート2025年
matsumoto_r
PRO
0
800
リモートワークにおけるパッシブ疲労
matsumoto_r
PRO
6
5.4k
エンジニアのキャリアパスはどう描く? まつもとりーさんと考える後悔しないキャリア選択
matsumoto_r
PRO
10
2.3k
まつもとりーのこれまでとCOGNANOのこれから
matsumoto_r
PRO
0
330
2022年の研究所の評価制度振り返りと今後
matsumoto_r
PRO
0
820
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
AIエージェント開発と活用を加速するワークフロー自動生成への挑戦
shibuiwilliam
4
720
AI-DLCを現場にインストールしてみた:プロトタイプ開発で分かったこと・やめたこと
recruitengineers
PRO
2
200
文字列の並び順 / Unicode Collation
tmtms
3
630
AI時代のワークフロー設計〜Durable Functions / Step Functions / Strands Agents を添えて〜
yakumo
3
1.6k
ExpoのインダストリーブースでみたAWSが見せる製造業の未来
hamadakoji
0
180
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
9.8k
NIKKEI Tech Talk #41: セキュア・バイ・デザインからクラウド管理を考える
sekido
PRO
0
180
AWS re:Invent 2025~初参加の成果と学び~
kubomasataka
0
160
AWSに革命を起こすかもしれない新サービス・アップデートについてのお話
yama3133
0
440
Strands AgentsとNova 2 SonicでS2Sを実践してみた
yama3133
1
1.3k
Fashion×AI「似合う」を届けるためのWEARのAI戦略
zozotech
PRO
2
1.1k
New Relic 1 年生の振り返りと Cloud Cost Intelligence について #NRUG
play_inc
0
140
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
0
22
Tell your own story through comics
letsgokoyo
0
750
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
70k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
250
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
120
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
390
Prompt Engineering for Job Search
mfonobong
0
120
Crafting Experiences
bethany
0
20
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
34
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