Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
mod_mruby ngx_mruby Fukuoka Ruby Award 2014
Search
MATSUMOTO Ryosuke
PRO
January 22, 2014
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
920
さくらインターネット研究所 アップデート2025年
matsumoto_r
PRO
0
970
リモートワークにおけるパッシブ疲労
matsumoto_r
PRO
6
5.6k
エンジニアのキャリアパスはどう描く? まつもとりーさんと考える後悔しないキャリア選択
matsumoto_r
PRO
10
2.5k
まつもとりーのこれまでとCOGNANOのこれから
matsumoto_r
PRO
0
390
2022年の研究所の評価制度振り返りと今後
matsumoto_r
PRO
0
950
VUCAワールドから紐解く組織や評価制度の変遷と再設計
matsumoto_r
PRO
9
27k
コンテナの研究開発から学ぶLinuxの要素技術
matsumoto_r
PRO
2
1.6k
開発者体験をさらに向上させる 事業と研究との連携
matsumoto_r
PRO
2
2.6k
Other Decks in Technology
See All in Technology
Coil3を内部実装から読み解く~キャッシュ戦略とAVIF画像の描画〜/nikkei-tech-talk50
nikkei_engineer_recruiting
0
120
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
3
21k
AWS FinOps Agent 結局何が得意なの?
siromi
0
220
セルフサービスのオブザーバビリティ基盤をOpenTelemetryで作る / Building a Self-Service Observability Platform with OpenTelemetry
ymotongpoo
3
430
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
4
760
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
280
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
7
810
IR Today: Theory, Practice, and Agents
dtunkelang
0
200
【ゲームメーカーズスクランブル2026】『Shadowverse: Worlds Beyond』UIとアニメーションで実現する最高のユーザー体験を叶えるプロトタイピング
cygames
PRO
1
690
「今盗んで、後で解く」に備える ― AWSのポスト量子暗号入門
yama3133
2
260
Cloudflare Workers 向けアプリを C# で構築する ~WASM Native AOT への道~
nenonaninu
1
1.8k
Terraformを用いたJamf Pro構成のIaC, GitOps化への挑戦
yukun
0
110
Featured
See All Featured
The Invisible Side of Design
smashingmag
301
52k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
The agentic SEO stack - context over prompts
schlessera
0
940
Navigating Team Friction
lara
192
16k
Paper Plane
katiecoart
PRO
4
53k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Building Applications with DynamoDB
mza
96
7.2k
New Earth Scene 8
popppiees
4
2.6k
Amusing Abliteration
ianozsvald
1
320
Fireside Chat
paigeccino
43
4k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
510
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
500
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