Develop with pleasure!

福岡でCloudとかBlockchainとか。

JRuby本

JRuby本頂きました。あまりお手伝いできてなかったのでちょっと心苦しい…。

JRuby 徹底入門

JRuby 徹底入門

Rubyで開発を行う場合、全てRubyだけで閉じれると良いけど、サードパーティの製品などを利用する際は、JavaやCのインターフェースはあってもRubyの連携インターフェースは存在しないことがほとんどだと思う。結局、WebServiceを介して連携したりする。
でも、JRubyであれば、Rubyから直接Javaオブジェクトを利用できるので、わざわざWebServiceで連携する必要も無く、よりシームレスな連携が望めるため期待度は大きい。

あとは運用環境面。Ruby on RailsだとApacheのmod_proxy_balancer + Mongrel Clusterのクラスタ構成で負荷分散するといった構成が主流かと思う。Apacheのmod_proxy_balancerの不具合とかでMongrelの使用メモリが増え続けるといった現象があったり、アプリケーションを長期に渡って動作させ続けるという点では少々不安が残る。あと、Javaのヒープサイズのように使用メモリの上限を設定することができないというのも大丈夫なのか?とか。
これがJRubyになると、GoldSpikeプラグイン(ちょっと古い?)とか使えばRuby on RailsなアプリケーションをWARアーカイブにしてServletコンテナにデプロイできる。リクエストのライフサイクルは全てServletコンテナの管理下になる。といことは、今までJavaのVM進化の恩恵がそのまま受けられるってことになると思う。

ちなみに、Ruby on Railsアーキテクチャは基本的にシングルスレッドモデルで、1プロセスが1リクエストを処理することになる。だからViewのerbファイルからControllerのインスタンス変数へアクセスできるということも可能になってる。でもServletの場合はマルチスレッドモデルになる。だから単純にRuby on RailsのアプリケーションをそのままServletコンテナにデプロイするとプログラミングモデルの違いから問題になるのでは?と疑問に思うが、GoldSpikeプラグインが複数のRubyのランタイムをロードし並列処理をさせることでシングルスレッドモデルのRailsアプリケーションをマルチスレッドモデルのServlet環境で動作可能にしてるみたい。なるほど!って思ったけど、メモリの消費量って大丈夫なんだろうか?中身が気になる。

徐々にJRubyも中身を追っていきたいなぁ。