FioranoMQ®: 金融トレーディングのメッセージング バックボーン
|
|
キーポイント
- レイテンシーを最低限に抑えたリアルタイムな処理性能
- メッセージ配信の保証
- 自動フェイルオーバー機能 (HA (高可用性) 機能)
- マルチ プラットフォームのサポート (Unix、NT、Linux プラットフォームでの稼働)
- ログ機能およびメッセージのトレース機能
|
『 トレーディング ソフトウェアのようなミッションクリティカルな製品にとって、メッセージの信頼性、パフォーマンスは重要であり、商品の成功はこれにかかっているといっても過言ではありません。この点において、FioranoMQ は単なるメッセージング バックボーンに留まらないことを示してくれました。他の JMS サーバー製品との比較評価を通じて、FioranoMQ が弊社のビジネス上の目的にも技術的な目標にも合致しているただけでなく、我々のアプリケーションの販売実績に寄与するような多くの機能も提供してくれていることが理解できました。』
FinScope 社 テクノロジ プリンシパル David Derbyshire
|
導入事例の概要
FinScope 社は、予測計画に基づいて為替取引を自動化するシステム “Sabre” を、金融トレーディングにおける売り手側 (sell-side) の 2 次および 3 次の取次ぎ業者に提供しています。この Sabre システムは、売り注文の受注プロセスを自動化するもので、買い手側 (buy-side) の大企業との間の競争力ギャップを埋めることを狙っています。Sabre システムは、分散された多階層の Java コンポーネントから成っています。FioranoMQ は、これらのコンポーネントを結びつけるバックボーンとしての機能だけでなく、コンポーネント間のメッセージ転送速度、メッセージ配信の保証、高可用性などの FinScope 社が定めたパフォーマンス基準をも満たしており、このことが採用にいたった大きな理由となりました。
本事例の章
- FinScope 社の概要
- ソリューション
- ビジネス上の課題
- ソリューション
- 効果
- 参考資料
FinScope 社の概要
FinScope 社は、英国を本拠とする金融サービス分野を専門とした革新的なスタートアップ起業で、機関投資家、ファンド マネージャ、為替取引のサービス プロバイダーらと密接な関係を持ちながら事業を展開しています。
ビジネス上の課題
FinScope 社は、予測計画に基づいて為替取引を自動化するシステム “Sabre” を、為替トレーディングにおけるセル-サイド (sell-side) の 2 次および 3 次の取次ぎ業者に提供しています。この Sabre システムは、売り注文の受注プロセスを自動化するもので、バイ-サイド (buy-side) の大企業との間の競争力ギャップを埋めることを狙っています。
Sabre システムは、分散された多階層の Java コンポーネントから成っています。
FioranoMQ は、これらのコンポーネントを結びつけるバックボーンとしての機能だけでなく、コンポーネント間のメッセージ転送速度、メッセージ配信の保証、高可用性などの FinScope 社が定めた処理基準をも満たしており、このことが採用にいたった大きな理由となりました。
FinScope の最先端ソリューションである “Sabre"システム は、顧客のトレーディング プラットフォームと統合されており、金融債、固定利回り、外貨やディリバティブ商品などのあらゆる為替商品の売り注文を受け付け、予測計画に基づいて売り注文を自動処理する役割を担っています。
図 1: Sabre 実装モデル
Sabre は、完全に分散化されている多階層の Java コンポーネント アーキテクチャを採用しています。このアーキテクチャでは、各コンポーネントは大容量のデータ ソースと供に分散配置され、それぞれ独立して動作します。
各コンポーネントは、標準規格に基づくメッセージング バス (例えば JMS メッセージングをサポートする FioranoMQ) によって連携します。
FinScope のビジネス上の課題は、自動取引ソフトウェア ソリューションである “Sabre" のための信頼できるメッセージング バックボーンを採用することでした。また、メッセージング バックボーンを新規に採用しても、現行のトレーディング プラットフォームを利用した証券取引も従来どおり安全に遂行でき、なおかつ将来ニーズに応える拡張性も備えたシステムである必要がありました。
図 2: メッセージング バックボーン
Sabre システムは完全に分散された多階層の Java コンポーネントという優れたアーキテクチャをベースとしています。
新規に採用されるメッセージング バックボーンでは、このアーキテクチャを活かしながら、大量の注文 (秒あたり数千のトランザクション) を処理する能力が不可欠なものとされました。また、取引データから予測値や指標をリアルタイムに作成する能力も求められていました。
データ構造に関する要件として、Sabre の各コンポーネントが使用している XML データを JMS メッセージングによって交換することが挙げられました。これは、顧客側のトレーディング プラットフォームが JMS に準拠したメッセージ形式を使用しており、これにあわせる必要があったためです。
上述のようにさまざまな理由から、信頼性と拡張性に優れた JMS サーバを採用することが、取引システム全体を左右する要であることが判明しました。
技術的な観点から JMS サーバーに求められた要件の代表的なものには、以下のものがありました。
- スケーラビリティ
- 信頼性
- メッセージ配信の保障
- 完全なフェイルオーバーのサポート
- レイテンシーを最低限に抑えたリアルタイムな処理性能
- マルチ プラットフォームのサポート (Unix、NT、Linux プラットフォームでの稼働)
- ログ機能およびメッセージのトレース機能
- システム管理作業の簡素化
- オープンな標準規格 API (例 : JMS)
ソリューション
メッセージ配信性能
FioranoMQ は、まさに FinScope が必要としていたメッセージング リューションでした。
FioranoMQ が採用しているファイル形式による “ストア & フォワード” 機能は、メッセージの配信を保証するだけでなく、パブリッシュ - サブスクライブ モードにおいて、他の JMS 製品では成しえない、著しく高速なメッセージ配信を可能なものとしています。”秒あたり 1500 の注文を同時に受け取り、それを複数のトピックに配信する” といった高負荷な条件にも耐え得る FioranoMQの処理性能は、他の類似製品には無い大きな特徴であると、多くのユーザーやシステム インテグレターから見做されています。FioranoMQ が持つこの処理性能の高さは、FinScope が必要とするインフラストラクチャの鍵となる要求事項でした。
負荷分散 (ロード バランシング
FioranoMQ の負荷分散機能も、多数のクライアントからのメッセージを処理する上で大きな役割を果たします。
ディスパッチャと名づけられた FioranoMQ のこの機能は、FioranoMQ サーバーをクラスター構成とすることで実現します。クライアント アプリケーションからの接続要求を、クラスター内のその時点で最も負荷の少ないサーバーに渡すことで、複数サーバーの間で負荷を分散させます。
信頼性
他の重要な要素としては、FioranoMQ の信頼性を挙げることができます。『FioranoMQ の高い信頼性は、今までに一度もシャットダウン/リスタートが行われたことが無く、また失われたメッセージも無いことによって証明された。』と、FinScope 社の技術主幹である David Derbyshire 氏が述べておられます。
FioranoMQ の HA (高可用性) 機能も、FinScope のシステムの信頼性を大きく高めています。
この HA 機能は、メッセージング サーバーの完全なフェイルオーバーと同時に、アプリケーションのフェイルオーバーをもサポートするものです。
HA モードでは、2つのサーバーを稼動させ、サーバーの 1 つをプライマリ サーバー、他の 1つをバックアップ サーバーとします。プライマリ サーバーに障害が発生すると、バックアップ サーバーが直ちに障害を検出し、プライマリ サーバーのメッセージング処理をすべて引き継ぎます。プライマリ サーバーに接続していたクライアント アプリケーションは “自動的に” バックアップ サーバーに再接続されます。プライマリ サーバーの “ストア & フォワード” によって保存されているメッセージは、データ ストアの共有機能によってバックアップ サーバーに引き継がれるため、メッセージ データの損失も発生しません。これらの機能によって、FioranoMQ の HA 機能は非常に強力なフェイルオーバー ソリューションとなっています。
FinScope のソリューションでは、上述のディスパッチャ (負荷分散) 機能と HA 機能を組み合わせて使用しています 。
図 3: FioranoMQ HA クラスタとディスパッチャ
システム管理の簡素化
JMS 標準規格によるメッセージングが、FioranoMQ によって補完され、より完璧なソリューションになりました。
FioranoMQ のシステム管理機能は JMS メッセージング アプリケーションの管理作業やセットアップ作業を容易なものとし、システム管理に伴うオーバーヘッドを最小限に留めます。
マルチ プラットフォーム
FinScope のアプリケーションは、NT 4.0、Windows XP、Solaris 8.0 の上で稼働しています。
JMS サーバーとしての FioranoMQ は、JVM の上で稼働する 100% pure Java な製品です。JVM が稼働する OS であれば、FioranpMQ は問題なく実行することができます。
一方、JMS クライアントは、通常 Java で記述されます。FioranoMQ の場合には、Java 以外の言語で JMS クライアントが作成できるよう、各言語用の JMS API ライブラリを提供しています。このため、クライアント作成を最も得意とする言語で開発することができます。
このことは、Java アプリケーションと .NET アプリケーション (例えば VIsial Basic) との間のメッセージ交換が行えることを意味しています。
FioranoMQ は、Java 以外に以下の言語の JMS API ライブラリを提供しています。
- JNI ベースの C、C++ ランタイム ライブラリ
- C、C++ ネイティブ ライブラリ
- C# ネイティブ ライブラリ
- C# マネージド ライブラリ
効果
FinScope 社は、複数の JMS 製品を厳密に評価した結果、FioranoMQ が高いスケーラビリティと、高負荷にクラッシュすることなく耐え得る処理性能を兼ね備えた唯一の JMS 準拠製品であることを確信しました。FioranoMQ だけが、FinScope の要件をすべて満たす製品だったのです。
例えば、I 社の MQ 製品では、サーバー自体が JMS 標準に準拠しておらず、JMS に準拠したメッセージングのためには他のコンポーネントをインストールするなどコンフィグレーション セットアップが非常に難しくなっていることが、評価の過程で判明しました。
特に、キューやトピックの生成には非常に複雑なセットアップ手順を必要としました。また、JMS メッセージのスループットも非常に低いものでありました。
これらの問題は、FioranoMQ のサーバー自体が JMS に準拠しているのとは異なり、JMS メッセージを処理するためのブローカー コンポーネントをサーバーに追加して使用していることに起因するものと思われます。
効果的で効率の良い開発環境とするためには、使用するJMS サーバーに多大なシステム管理の手間がかからないことが不可欠です。
FinScope 社の技術主幹である David Derbyshire 氏は、FioranoMQ の採用とその使用実績について、
『当社の Sabre 自動トレーディング ソフトウェアの中核的なコンポーネントとして FioranoMQ を使用しています。FioranoMQ が持つ卓越したセットアップ機能や管理機能によって、弊社の開発エンジニアは、システム管理に煩わされることなく、アプリケーション ロジックのプログラミングに専念できました。FioranoMQ の高い可用性のおかげで、メッセージが損失した場合の処理ロジックも非常に簡単なものですみました。ミッション クリティカルなトレーディング ソフトウェアおいて、メッセージの信頼性と処理性能はきわめて重要です。Sabre ビジネスの成功はこれにかかっているといっても過言でがありません。この点において、FioranoMQ はこれにとどまらず、単なるメッセージング バックボーン以上の有用性を示してくれています。他の JMS 製品との比較評価を通じて FioranoMQ が弊社のビジネス上の要求にも技術的な要求にも合致したものであることはわかっていましたが、これまでの使用経験から、Sabre システムの新たな顧客獲得にも寄与するような他の多くの機能も提供してくれている製品であることも理解できました。』
と、述べています。
参考資料
機能説明のページ
FioranoMQ デザインゴール (製品コンセプトの説明)
JMS の機能概要 (Java メッセージ サービスとは)
FioranoMQ の付加価値機能 (JMS を補完する機能)
FioranoMQ のメッセージ配信性能
ホワイトペーパー
『FioranoMQ のクラスタリング -- メッセージング プラットフォームの障害回復と負荷分散』 (資料ダウンロードページへ)
『メッセージング ミドルウェアが備えるべき機能 -- JMS を補完する機能』 (資料ダウンロードページへ)
|