先週末、FOBAS CSC Ver.3 の最新版、Ver.3.1.3 がリリースされました。
FOBASコンサルティングも、おかげさまで6月から6期目に入り、このお知らせも最近は
随分更新せずに放置されていましたので、今後出来るだけタイムリーな情報提供をして
いこうと考えています。
まずは、今さら感がありますが何回かに分けて FOBAS CSC Ver.3 の特徴のご紹介して
いきたいと思います。
と言っても表面的な事はホームページをご覧いただければ良いと思いますので、少々
技術的な中身や開発のウラ話に触れながらご紹介したいと思います。
■エンジン実装言語の変更
FOBAS CSC Ver.2 では、ファイルシステムの中核部分が Java もう少し言えば、Java EE
の技術をフル活用して実装されていました。これは以下の理由によります。
– データの格納場所(クラウドストレージ)へのアクセス方法(API) について、最も
多くのストレージプロバイダが Java のライブラリを提供していた事。
– アプリケーション開発の生産性が Native C 言語と比較して圧倒的に高い事。
Java EE は、システム開発の複雑でプリミティブな部分を隠蔽、抽象化し、素早く高機
能なアプリケーション開発を可能にする素晴らしいフレームワークです。
しかしながら、FOBAS CSC が多くのお客様で利用される中で以下のような点でプログラ
ミングフレームワークとしての限界を感じるようになりました。
– 100tps を超えるトランザクションで、JPA の楽観ロックに起因するロールバック・
リトライコストの影響が大きくなった。
– CMT によるトランザクション時間で処理しきれないものが出てきた。
– JMS エンジンの絶対性能やメッセージ数の実装上限を超えるリスクが出てきた。
– 暗号化や圧縮処理の絶対性能が不足した。
– サービス起動時間が長かった。
結果として、Ver.3 からは、エンジンのほぼすべてを C言語で書き直しています。
誤解が無いように補足しますと、Java EE がダメと言っているのではなく、適材適所が
重要かなという話です。
Ver.3 でも、Webコントロールパネルは、Java Servlet, JSP, JPA を利用していますし、
RestAPI では、JAX-RS, JAXB, JSONバインディングも利用しています。
C言語での実装は、開発に必要な時間、コストが増加しましたが、前述の限界をブレーク
スルーできました。
具体的なメリットとしていくつか挙げられます。
1) ファイルシステムスループットの向上
Ver.2 では、概ね200TPS程度が処理性能の上限でした。Ver.3 では、概ね3,000TPS
程度の性能が達成できるようになりました。これは別の機会に実際のベンチマーク
結果を含めてご紹介したいと思います。
上記は単体ノードでの性能ですので、Ver.3 のルーズリークラスタを用いてノード数
を増加すれば、さらにスケーラブルにシステム全体のスループットを向上させる事が
できます。
2) 連続投入スループットの向上
ここでは、ファイルシステムスループットをユーザが読み書きする性能の意味で用い
ていますが、FOBAS CSC はクラウドストレージゲートウェイですので、クラウドスト
レージへの書き込み性能も重要な性能指標となります。弊社ではこれを連続投入スル
ープットとしてスペック表記しています。
Ver.2 では、5MB/sec (40Mbps) 程度が連続投入スループットの上限でした。圧縮や
暗号化を行うと、さらに性能が下がり、1.5MB/sec (12Mbps) 程度が実効性能となっ
ています。Ver.3 では、最大で20MB/sec (160Mbps) 程度まで性能が向上しました。
こちらも、ルーズリークラスタ機能でノード数に応じてリニアに性能向上できます。
3) 起動時間の短縮
Java EE を使う場合、コンテナであるアプリケーションサーバが必要になります。
Ver.2 では、JBoss 5 を利用しており起動に概ね1分程度の時間がかかっていました。
JMSキューにメッセージが大量に溜まった状態ですと、さらに起動時間がかかり、特
に HAクラスタ構成時のフェールオーバ時間を2分以下に短縮できないという限界があ
りました。
Ver.3 では、C言語による実装の恩恵に加え、ファイルシステムインタフェースとなる
プロセスとバックグラウンドプロセスを分割した事で、1秒程度でファイルシステムが
起動できるようになりました。
これにより、HAクラスタ構成でも、障害の検知時間を含めても30秒以内のフェールオ
ーバーが可能になります。
初回は、実装言語の変更による具体的な改善点についてご紹介しました。次回はアーキ
テクチャの変更によって、具体的に改善された点をご紹介していきたいと思います。
では、本日はこのへんで。