真夏の技術部&BPR室 TechMTG #3(ペパボ社内勉強会)
![ミドルウェアにmrubyを組み込む方法 / How to Embed mruby into Middlewares Written in C](https://cdn-ak-scissors.b.st-hatena.com/image/square/6a5485bc8aed26fde98cc6bbe0a013bff7c522b4/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fcc8f5403d0ad4cfd90b82b1c1b84790f%2Fslide_0.jpg%3F8354128)
RubyKaigiに行くと本にサインを求められるすごいエンジニアが書いたhaconiwaというmruby製のコンテナエンジン(コンテナ環境構築の基盤ツール)があるのですが、少し試してみようと思って、とりあえず1サーバ上に1万コンテナぐらい動かそうとしてみました。久々に今回は自分の作ったOSSではなく、OSSの検証レポート的な記事になります。 haconiwaは僕の好きなOSSの一つで、それはなぜかと言うと、 haconiwaでコンテナを作る際に、haconiwa実行環境にはコンテナの要素機能が全て入っている必要はない 必要なコンテナの要素機能を簡単に組み合わせて、自分が実現したいコンテナ、あるいは、それに準ずる環境を作れる haconiwaによるコンテナ定義をRubyのDSLで表現でき、動的な設定や組み合わせの設定を簡単にかける ということができるからです。その特性から、CentOS6のよ
僕が博士課程で研究していた「Webサーバの高集積マルチテナントアーキテクチャに関する研究」という内容で、僕が通っている京都大学大学院情報学研究科博士課程の予備審査にいってきました。研究室は岡部研究室になります。 予備審査は、僕が所属する大学院の場合、基本的には博士課程の研究で3本以上ジャーナルを通す事を条件に、内容的にも指導教員の許可が受けられれば予備審査へと進むことができます。 博士課程においては、博士課程の入学資格審査の面接で情報学研究科のほぼ教員全員(数十人)の前でプレゼンし、博士課程が半分経過した際に受ける中間審査のプレゼン(これまた同様に教員数十人)に続く、大変厳しい審査のうちの一つです。プレゼン時間は1時間、質疑応答は30分です。また、そこに参加される先生方は、各専門分野でも世界トップクラスの研究者であるため、そのような方々の前で学術研究の発表をするのは、とにかくプレッシャーと
Goとmrubyを使ってitamae-goを作った github.com Pokemon Goが流行っていたので流行に乗じてItamae Goを作った。 というのは冗談で、手元の開発環境のセットアップにitamaeを使っているのだけど、まっさらな環境でitamaeを実行したい時にRubyやitamaeをどういれるかについて考えるのが面倒なので、Rubyなしで実行できるitamaeを作った。Goで実装し、mrubyでレシピを読むことによりRubyなしでの実行を実現した。 インストール方法 Releasesにバイナリを置いてあるのでこれをダウンロードする。基本的には環境セットアップ用のシェルスクリプトからこれをcurlなりwgetなりでダウンロードして使うことを想定している。 なんか動かなかったらgit cloneしてmakeすればその環境用のバイナリが作れるはず。 *1 使い方 普通にita
mruby を Loadable Kernel Module (LKM) として Linux カーネル内動作させて printk する方法をメモしておきます。 1年以上前に書きかけていたものを完成させたので、mrubyのバージョンが古いです。最近のバージョンだとどうなるのかは分かりません。 mruby のビルド まず GitHub から mruby のソースコードをダウンロードします。今回試したのは f65a39f4d19b1de019b0b805ccfb081757e5b7b5 (Wed Sep 18 20:00:35 2013 -0700) です。 $ git clone https://github.com/mruby/mruby.git $ cd mruby $ git checkout f65a39f4d19b1de019b0b805ccfb081757e5b7b5 次にカーネル
Nginx 初心者のかっぱ(@inokara)です。 追記(1) ngx_mruby 作者の @matsumotory さんに以下オンようなコメントを頂きました! 有難うございます! 追記(2) 連載(笑)にしようと思いますのでタイトルに数字つけました。 はじめに Nginx は設定に if が使えたりとデブオプスのココロを擽る Web サーバーだと思っていますが、細かい制御をしたいなと思った時に設定ファイルをグリグリ書くのはどうもなあと思っていたら mruby でイジれる ngx_mruby があるではないですか! しかも、事例が既に載っているではないですか! Dockerとmrubyで迅速かつ容易にnginxとapacheの柔軟なリバースプロキシ構成を構築する ということで、自分も試してみたいと思います。(以下、作業中の内容も含まれますのでご注意ください) やりたいこと リバースプロキ
Docker してますか! 実は実験的に Docker で Web アプリを数ヶ月運用しており、色々と試行錯誤してきたので、少しずつアウトプットしていきます。 ちなみに Ruby 製のアプリで、AWS の EC2 上で運用している、小〜中規模ぐらいのものです。 2014-06-16 16:00: 追記あり Docker イメージのビルドについて Dockerfile を普通に書いてます。 今のところ、2層構造にしていて、 ベースとなるイメージ Ruby アプリケーションサーバー (Puma) アプリケーションのソース (git clone) bundle install デプロイされるイメージ (ベースイメージを元に作る) git pull してソース更新 bundle install し直してベースにない gem を入れる asset の precompile という感じでやってます。
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 OSvがとても面白いので色々いじっていると、結果的にmruby-simplehttpserverというWebサーバをmrubyで動かすためのmrubyモジュールができてしまいました。 これは、OSvのようにライブラリをがんがん入れられないような環境でも、とりあえずSocketとIOがあれば動くシンプルなWebサーバを動かすためのmrubyモジュールです。 そもそもOSvって何?という方はこの辺りを見るか、syuu1228さんに聞くのが良いと思います。簡単に言うと、これからの時代、ハイパーバイザにがんがん仮想マシンをデプロイする際に、その仮想マシンにリッチなOSがあまり必要ないケースって結構あって(例えばmemcachedだけが動いているVMと
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 IOT研究会やコンテナ勉強会で発表した内容を制御コード例を交えて具体的なリソース制御の書き方を紹介したいと思います。 詳しい内容は上の行のエントリへのリンクを見て頂くとして、簡単にまとめると、Apacheへのリクエスト単位でCPUやDISK I/O等のコンピュータリソースを制御しようという話になります。今回はその仕組(mod_mrubyでcgroupを制御)の導入から具体的な制御DSLコードのサンプルを紹介します。 導入 導入はこれまでに何度も紹介していた内容とかぶるのですが、mod_mrubyのインストールと同様です。まずはgithubからmod_mrubyをcloneして、mod_mrubyディレクトリにあるbuild_config.rb
注:この記事はカーネル/VM+K*BUG勉強会@関西 ごかいめのダイジェスト版です。 詳しくは、以下の動画とスライドをご覧下さい。 OSvは、OpenJDKを仮想環境で高速に動かす事を目指していて、ユーザは基本的にJavaアプリケーションしか実行しないという前提になっています。 メモリプロテクションやリングプロテクションなどは使われず、JavaVMがユーザアプリケーションからの不正アクセスを保護します。 イメージ図: RubyプログラムやPythonプログラムはJRubyやJythonによって実行する事が可能ですが、CRubyやCPythonは含まれていません。 しかし、ユーザアプリケーションを実行する言語環境は別にJavaVMじゃなくてもいいのではないか?という考えも成り立つと思われます。 例えばCRubyを動かしてみるとか。 …という訳で、やってみようと思ったんですが、いきなりCRub
Linux KernelのControl Group機能によって、プロセスの様々なリソース管理を行うcgroupをmrubyから呼び出せるようにしました。 それをmruby-cgroupと呼ぶことにします。 これがなかなか素晴らしくて、C言語で書いたプログラムにmrubyを組み込むことで、そのC言語で書かれたホストプログラムをとても簡単にリソース管理できてしまいます。 使い方 mrbgemsとして作っているので、mruby-cgroupのREADMEに従ってbuild_config.rbにgitのURLを書くと簡単にrakeでlibmruby.aに組み込めます。 現状は、CPUとIOリソースの管理の機能のみですが、cgroupのコンテキストのやり取り等、ベースとなる部分の実装はできているので、後はどんどんcgroupの機能を追加していくだけです。 例えば、以下のように書きます。 cpu =
人間とウェブの未来(旧) 「ウェブの歴史は人類の歴史の繰り返し」という観点から色々勉強しています。2014年までの人間とウェブの未来の旧ブログです。 なぜWebサーバソフトウェアであるApacheやNginx等にmrubyを組み込もうと思ったのかを整理しておきたいと思いました。 目的はWebサーバの開発支援 Webサーバの開発支援をしたい という壮大な目的が以前からありました。 それがどういうことかは後述するとして、ここでいうWebサーバの開発とは、Webサーバの内部機能拡張を指しています。それを行うにはどうしたら良いかをまず簡単に説明したいと思います。(スクラッチでWebサーバを1から実装するのもよいですが、ここではスコープ外とします) 例えば、Apacheを例にあげると、Webサーバの内部機能拡張はモジュール単位で組み込むという方法が取られています。ApacheやNginxはWebサー
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く