Slide 1

Slide 1 text

mrubyによるWebサーバ機能の拡張 京都大学 松本 亮介 (技術者として)

Slide 2

Slide 2 text

自己紹介 • 松本亮介 – Twitter @matsumotory • 所属 – 京都大学 大学院 情報学研究科 岡部研究室 – 博士課程 D2 • 専門分野 – OS・Middlewareのセキュリティ・リソース管理・運 用技術改善・パフォーマンス・大規模対応 – http://research.matsumoto-r.jp/ 2 Ruby東京プレゼンテーション2014

Slide 3

Slide 3 text

Webサーバの機能拡張の分類 1. 動的コンテンツの高速処理を主な目的 • レスポンス生成をいかに効率よくするか • CGIはforkのコストが大きい • サーバプロセスが直接スクリプトを解釈 • アプリケーションサーバの登場 2. レスポンス生成以外の内部処理が主な目的 • Webサーバそのものの振る舞いを定義 • 軽量な処理が求められる(アクセス制御等) • この目的に特化したオーバーヘッドの少ない仕組み • mruby使うには最適では? ⇒ mod_mruby開発 3 Ruby東京プレゼンテーション2014

Slide 4

Slide 4 text

mod_mrubyの良い点 4 • Apache2.0から2.4の最新版で動く • ApacheモジュールをRubyで書ける • オーバーヘッドが少ない • 設定が簡単 • ngx_mrubyでも同じような記述で書ける • 機能追加や改善要望を出しやすい 松本亮介,岡部 寿男, mod_mruby: スクリプト言語で高速かつ省メモリに拡張可能なWebサーバの機能拡張 支援機構, 情報処理学会第6回インターネットと運用技術シンポジウム, 2013年12月. 優秀論文賞受賞 Ruby東京プレゼンテーション2014

Slide 5

Slide 5 text

Apache httpd 設定例 # コンパイル方式: コードの変更可 mrubyHandlerMiddle /path/to/test.rb # キャッシュ方式: コード変更不可だが高速に動作 mrubyHandlerMiddle /path/to/test.rb cache Ruby東京プレゼンテーション2014 5

Slide 6

Slide 6 text

nginx 設定例 # コンパイル方式: コードの変更可 Location /mruby-test { mruby_contenx_handler /path/to/test.rb; } # キャッシュ方式: コード変更不可だが高速に動作 Location /mruby-test-cache { mruby_contenx_handler /path/to/test.rb cache; } Ruby東京プレゼンテーション2014 6

Slide 7

Slide 7 text

Reverse Proxy by mod_mruby Ruby東京プレゼンテーション2014 7

Slide 8

Slide 8 text

BasicAuth with Redis by mod_mruby Ruby東京プレゼンテーション2014 8

Slide 9

Slide 9 text

リソース制御として応用 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 松本亮介, 岡部寿男, リクエスト単位で仮想的にコンピュータリソースを分離するWebサーバのリソース制御 アーキテクチャ, 情報処理学会研究報告 Vol.2013-IOT-23, No.4, 2013年9月. 学生奨励賞受賞 Ruby東京プレゼンテーション2014 9

Slide 10

Slide 10 text

まとめ • レスポンス生成処理以外の内部処理を目的 • mrubyによってオーバーヘッドを低減 • Rubyで複数のWebサーバの振る舞いを記述 • Webサービスの各種サーバの連携に最適 • Web以外のサーバソフトウェアにも応用可能 – メールサーバ、ファイルサーバ… 10 Ruby東京プレゼンテーション2014