図1●オープンソース・ソフトウエアの採用によってコスト削減と高い信頼性を両立
24時間連続運用を行う外貨取引システムという,高い信頼性が要求されるシステムにオープンソース・ソフトウエアを全面的に採用,コスト削減を図った。Web/APサーバーはTomcatおよびSeaser,DBMSはPostgreSQL,OSはLinuxといずれも無償のオープンソース・ソフトウエアを使用。OracleやWebLogicなどの代表的な商用ソフトウエアに比べ,数百万円以上のコスト削減になった。
図2●PostgreSQLを採用するにあたっての課題と対策

 マネースクウェア・ジャパンは2003年4月,インターネット外国為替取引システム「iFX Style」を稼働させた。100万円単位で外貨を取り引きする「きわめて高い信頼性と可用性を要求される」(マネースクウェア・ジャパン 代表取締役社長 山本久敏氏)システムでありながら,DBMSのPostgreSQL,Webアプリケーション・サーバー(APサーバー)のTomcatおよびSeasarという無償ソフトウエアを全面的に採用して,信頼性を確保しながら,数百万円以上のコストを削減した。

 クライアントにはFlashを採用し,ドラッグ・アンド・ドロップなどで,パソコンに不慣れなユーザーでも,複雑な取引を容易に指定できるようにした。一般にFlashでの開発生産性は低いとされるが,プログラムを自動生成する仕組みなどを整備して生産性を向上させ,工数を削減した。

PostgreSQLで連続運用

 マネースクウェア・ジャパンは2002年10月に設立された,外国為替取引専門のベンチャー企業である。同社の特徴は「選択型証拠金率」と呼ぶ仕組みを採用したことだ。証拠金とは,担保として取引の何%かの金額を預けておくもの。同社では,いくつかの証拠金率を用意しておいて,取引時に自由に選択できるという仕組みを考案し,日本で初めてシステム化した。

 開発は,インテグレータのエア・ロジック(取材当時,現在はスターロジックに社名変更)に依頼した。同社は,トレイダーズ証券で同種のシステムを開発した実績があったからである(本誌2002年7・8月合併号参照)。

 トレイダーズ証券のシステムではOracle9iを採用していた。当時のPostgreSQL 7.1では,VACUUMと呼ぶメンテナンス処理の際にテーブルがロックされ,24時間連続運用が難しかったためだ。しかし,7.2からは,テーブルをロックせずにVACUUMを実行できるようになった。「検証の結果,VACUUM時の性能低下も問題なかった」(エア・ロジック代表取締役社長兼CEO 羽生章洋氏)。

 今回,OracleではなくPostgreSQLを採用することで削減できたライセンス料は,数百万円に達する(図1[拡大表示])。仮にOracle9iのエントリー・クラスであるStandard Editionを使用したとすれば,2CPUサーバー2台構成のため,ライセンス価格は742万円必要だった(Linux版およびWindows版は2003年9月30日まではキャンペーン価格により392万円)。

 APサーバーでは,WebLogic Serverのエントリー・クラスであるExpressを採用したとしても49万8000円,2CPU×2サーバー分で199万2000円になる。

非同期処理機能で性能確保

 ただし,無償のPostgreSQLを採用するためには,クリアすべき課題があった(126ページの図2[拡大表示])。ひとつはレスポンスである。相場は短時間で大きく動くこともあり,応答の悪さはユーザーを失うことにつながりかねない。ユーザーが操作を実行してから5秒以内に応答が返ることを目標にした。通信時間などを考えると,DBMSの処理時間は1秒以内にする必要があった。

 そこで,負荷の大きい処理は分割して,最小限の処理だけを実行した時点でレスポンスを返すようにした。例えば,注文を成立させる処理だけを行い,関連する計算や記録などの処理は後で非同期に行う。こうすることで見かけの処理時間を短縮した。

 後処理を起動する仕組みとして,Javaの非同期処理機能Java Messaging Serviceも検討したが,煩雑なわりにメリットが少ないと判断,シンプルで柔軟性が高い点を評価しPostgreSQLのNotify/Listen機能を使用した。テーブルが更新されるとアプリケーションに通知する機能である。

 しかし,PostgreSQLに添付されているJDBCドライバでは,この機能を利用できない。インターネット上を1カ月かけて探したところ,スイス・ドメインのサイト(http://lbdpc15.epfl.ch/JAVA/JDBC/)でNotify/Listenに対応したJDBCドライバを発見した。ただし「メモリー・リークが発生するバグを修正する必要があった」(エア・ロジックの羽生氏)。

 もうひとつの課題として,障害が発生しても,サービスをストップさせることはできない点があった。レスポンスの低下が発生しないよう,レプリケーションではなく共有ディスク型クラスタリング構成を採用した。

 APサーバーには,TomcatとSeasarを採用した。Seasarは,羽生氏の知人が開発したAPサーバーで,トランザクション管理やDBコネクション・プーリングといった機能を提供する。2003年の夏にオープンソース・ソフトウエアとして公開される予定である。実績はないが「我々が必要な機能だけに特化しておりシンプル」(羽生氏)であることを評価した。バグがなかったわけではないが,開発者にフィードバックしながら修正していった。


次回に続く

専門サイト「IT Pro オープンソース」トップへ


出典:2003年6月号 124ページ
記事は執筆時の情報に基づいており、現在では異なる場合があります。