Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Storm0.8.1公開。開発における足回りが充実しました。

こんにちは。kimukimuです。

つい先日、Stormの最新版、0.8.1の正式版リリースが公開されました。
Stormのダウンロードページから取得可能

前回の0.7系 > 0.8系のように大きな機能の追加・・・があるわけではないのですが、
実際に開発を行う上で非常に重要な足回りが複数リリースされています。
細かいバグフィックスやインタフェース追加もありますので、個人的に重要だと思う要素をかいつまんで紹介します。

では、追加された機能について挙げてみますね。
前回と同じく、nathanmarzさんが投稿している0.8.1リリース通知を基にしています。

1.Stormのユニットテスト用モジュールStorm's Unit追加

今回のリリース一番の目玉です。
新しい機能・・・というわけではないのですが、
JUnitによるテストコードでStormをテストするためのモジュールがリリースされました。

JUnit上でローカルモードでクラスタを動作させ、
指定したTupleを流して実際の動作を確認可能になっています。
その際、流したTupleや結果を取得する口が設けられているため、
取得口を通して検証が可能・・・というものです。

また、時間経過をシミュレーションするAPIも追加されています。

2.Spoutの待ち処理を設定で自動設定できるようになった

StormのSpoutは基本的に「取ってこれるだけデータを取ってくる」という動作となるため、
データの取得メソッドをBusyLoopのように延々実行し続ける形になります。

ですが、下記の2ケースにおいては「待ち」を挟む必要が出てきます。
A.Spoutが読み込めるTuple数の最大値に達した場合
 #現状はnextTupleが呼ばれないものの、CPUを消費します
B.Spoutがデータソースから何も取得できなかった場合
 #データが無い場所に何度も取得しに行っても無駄なため

この「待ち」を設定で行えるようになりました。
これまではAは無理、Bを各Spoutで実装していたため便利になっています。

3.ローカルモードでもTupleのタイムアウトが発生するようになった

検証の上では非常にありがたい機能追加です。
StormはTupleがタイムアウトするとSpoutに通知が返ってきますが、
これまではクラスタ上で動作する際にしかタイムアウトが発生しませんでした。

そのため、デバッガを動作させた状態でタイムアウトの動作を確認することが困難だったのですが、
ローカルモードでも発生するようになったため、デバッガでの確認が容易になりました。

4.総括して、何がうれしくなったの?

0.8.1のリリースでは「開発のしやすさ」「扱いやすさ」の向上・・・だと思います。
StormUnitの追加によって動作検証が小さい単位で確認できるようになりましたし、
タイムアウトまで含めてTupleの機能がデバッガで確認できるようになり、開発しやすくなりました。

後は明らかな無限ループ突入を回避することが設定で可能になり、
「知っていないとリソースを食いつぶす」というケースが少なくなりました。
かなり扱いやすくなったのではないでしょうか。

今後のリリースも楽しみですね^^