opentxp.org

the OPEN source project for exploring 'the TranXactional Programing model'.
opentxp.org ホーム     txpftp     技術情報     技術書籍紹介     お問い合わせ     サイト マップ      
ビジョンとスコープ      

1. 業務要求

 
1.1 背景
 
社内でのデータ配布、取引先など外部との取引データ送受信(EDI)、あるいは、情報提供サービス(VAN)などにおいても、FTPは標準的なデータ交換方式のひとつとして広く利用されています。
FTPは、とくにデータ送受信頻度が高くない(1日に100件以内程度)で1回のデータサイズが大きい場合には、Webやメールに比べて効率よくデータ授受を行うことが可能です。また、ファイルという一般的で分かりやすい単位で送受信を行いますので、コンピュータの専門的な経験や技術に詳しくないひとでも十分に取り扱うことが可能です。さらに、FTPはソフトウエア自体がフリーか、もしくはとても安価に利用できることも魅力のひとつです。
 
しかしデータの授受は送受信処理までで完結するものではありません。当然、必要とする業務システムやデータベースに連携させるためにデータを授受しているはずです。また、今日の競争の激しいビジネス環境に適応し、さらにサービス品質を向上させるため、クライアントや取引先の要求にたいして遅延なく、あるいは、できるだけ早く対応を行わなければなりません。
そのため、事務的な手続きはますます自動的に(つまり人手を介さずに)実施されなければなりません。正常な状態の時だけであれば、従来のFTPツールでもこのような自動化が十分に可能です。しかし、もしデータ送受信や後続の処理を実行中にソフトウエアやハードウエアに問題が発生した場合にはどうでしょう?
 
勿論、あらかじめ代替(冗長)システムを用意しておいたり、定期的なバックアップを実施していれば、大半のデータを救うことはできます。しかし、直近で実行されたばかりやまさに障害が発生したその瞬間に操作していたデータは、処理中の中途半端な状態となっている可能性があるため、内容や整合性を確認しなければなりません。
処理の実行頻度が低く、関係するシステムが少ない場合には、人手による障害回復も可能ですが、ますますビジネスのスピードアップが進む今日の状況を考えれば、人手で整合性の確認作業は事実上不可能となってきております。
 
このような問題への解決方法は、相互に整合性を必要とするデータ送受信やデータ操作を”ひとつ”の処理として扱えるようにし、データが中途半端で不整合な状態とならないようにすることです。ソフトウエアの世界ではこのような処理方法を「トランザクション処理」と呼びます。
たとえば、データベースはこのようなトランザクション処理によりデータ操作を行っています。ですから、データベース内で行っているデータ操作は安全に実行することができますが、しかし、データベース外にあるデータ(例えば、まだファイルからデータベースに読み込めていないデータ)は、データベースとの整合性においてやそのデータ自体の内部整合性においても確実性がありません。
とはいえ、全てのデータ送受信やデータの全ての取り扱いに、データベースやそのような基盤ミドルウエアを利用することは、コスト面からいっても、十分な技術者の確保という面からいっても、とても現実的とはいえないでしょう。

ところが、最近Windowsで、「トランザクション処理」に対応したファイルシステム(TxF、トランザクショナルNTFS)が登場してきました。またWindowsサーバでは、データベースのトランザクションやその他のトランザクションをまとめて一つのトランザクションとして扱う「分散トランザクション処理」を行うこともできます。あとはトランザクションファイルシステムやトランザクション処理に対応したFTPが存在すれば、現在のFTPを利用した方式でも、より安全で信頼性の高いデータ授受を行うことが可能となります。
 
以上ようなことから、トランザクショナルFTPが必要となります。
 
1.2 目的
 
ビジネスにおいて広く利用されているFTPの信頼性、安全性、運用性の向上を図ることで、めまぐるしいビジネス環境の変化へも俊敏に対応できる、低コストで柔軟性に優れたデータ連携システムの構築を実現する。
 
またこれを通して、オープンソースによる「ビジネストランザクションメッセージング基盤」がどのようにビジネスのスピードアップに貢献するかを示し、トランザクショナルプログラミングモデルへの認知と理解を促進する。
 
1.3 ニーズ
 
FTPを利用して一連の相互に関連を持ったデータ(ファイル)の授受を行う場合に、一連のファイル送受信が全て成功(完了)するか、もしくは、授受がなかった(送受信をはじめる前の)状態に戻るかのいづれかであることが、ソフトウエアによって保証されることはとても重要です
とくに
    ● (複数のファイルにまたがった)一つの取引データ送受信
    ● サーバ側での受付処理までを確実に行いたい
    ● 遠隔地(に分散したサーバ)へのマスタデータやプログラムの配布・配置
などの場合には必須の機能となります。
なぜなら、このような保証のもとであれば、たとえ途中で(ネットワーク障害などにより)失敗してしまったとしても、あとで再試行したときに成功すれば、それで何も問題は起こりません。安心して(2重発注の心配などせずに)再試行することができます。もしどうしてもうまくいかないために諦める(別の手段を選択する)ような場合にも、(中途半端な)注文データが残ってしまう心配をする必要がありません。
また受け側でも、必要なデータが一式そろってから処理することができますので、同じように安心して処理することができます。
ですから、データ授受の双方におけるデータの管理が飛躍的に簡単になります
 
またこの保証のもとに、データの一連の流れを自動化することができ、必要となるデータの集中管理が可能であれば、(このようなデータの授受を必要とする)サービスの品質を向上させることが可能です。
高価なミドルウエアを導入すれば同様のことは可能ですが、もし、いま利用しているFTPをベースとして、オープンソースソリューションとして提供されれば、ランニングコストを含めても十分に現実的なコストに抑えることが可能となります。
 
1.4 業務リスク
 
関連を持った一連のファイルを送受信している最中にネットワーク障害などにより送受信処理が中断した場合、
    ● 一部のファイルは送受信が完了している
    ● 一部のファイルの中身は、途中までしか送受信できていない
    ● 一部のファイルは送受信は完了しているが、参照している先のファイルは送受信できていない
    ● 一部のファイルは送受信できていない
というような状態のファイルが混在することとなります。
 
整合性が取れる状態となるまで後続の処理が実行されず、かつ、回復後の再試行により完全に1回目で成功したときと同じ状態となるのであれば再試行により助かる可能性がたかいですが、しかし、
    ● 回復完了前に処理が実行され、再試行時に再度送信される
    ● ファイル名に送受信日時や送受信連番などを含んでいるなどの原因により別のファイル名で保存され、
       送受信データが予期しない(違った内容や不整合な)ものとなってしまう
    ● 受け取ったファイルを蓄積ファイルに追加書込みするなどの場合、多重に蓄積される
などといった状況に陥った場合、2重発注や受注を失ってしまう危険性が大です。
 
1回あたりの送受信ファイルの数やサイズが決して小さくなく、一日に何回も送受信を行う場合には、人手による対応は極めて困難となり、正常な状態に回復するまで大変な時間がかかります。
障害が発生したことを検知して対応を行うにしても、複数の取引先にデータを再度送受信してもらうなどをお願いするには手間とコストがかかります
さらにこのような状況が頻繁に発生した場合には、信頼感を喪失する結果となってしまいます。
 
また、障害を検知できる運用システムを構築し、対応できる運用体制を維持するためにはさらに多くのコストがかかってしまいます
 

2. ソリューションのビジョン

 
2.1 ビジョン記述
 
このオープントランザクショナルFTP(txpFTP)は、従来FTPをビジネスユースに利用してきたユーザを対象に、従来のFTPの利便性・接続性を確保しつつ、かつビジネスの要求に耐えうる信頼性の高いオープンソースのFTPである。
システムは、高い信頼性とデータ管理、および、後続処理の自動化を可能とする。
このシステムにより、ファイル送受信中の障害によるデータ喪失・データ重複のリスクを低くし、データ管理を明確化し、また、業務プロセスの自動化を促進する。

2.2 主要機能
 
 
2.3 仮定と依存性
 
本プロジェクトでは、FTPをトランザクション処理に対応させることを中心的課題ととらえる。
このため、トランザクションに直接関連しないFTPプロトコル自体の改善(FTPS対応やMD5対応、あるいは、今後に発生する改善要求)にともなう変更をできうる限り回避するため、FTPプロトコルの実装に関しては他のオープンソース(現段階では、 Apache Software Foundationjakarta commons/net を想定)に依存し、それに付加する形でトランザクション処理に対応させる実装とする。
 
また、FTPサーバの実装に関しても同様にできうる限り Apache FtpServer にトランザクション関連機能を付加する実装とする方針をとる。
 

3. スコープと限界

 
3.1 初期リリースのスコープ
 
初期リリースでは、トランザクショナルNTFS(TxF)に対応したFTPクライアントを実現する。
 
3.2 次回以降のスコープ 
 
次回以降で、
  • Windows以外でのトランザクショナルファイルシステム
  • 分散トランザクションに対応できるトランザクショナルFTPプロトコル
  • FTPサーバ(イベント処理、サーバ間転送)

に対応していくものとする。

 

3.3 限界と対象外
 

(1) マルチプラットフォーム対応

マルチプラットフォーム対応に関しては、java (JRE 5.0以降)をベースとした(JRubyなどJRE上で動作する軽量言語を含む)実装によって実現するものとする。
よって、(たとえば一部のレガシー系のプラットフォームなどのように)javaの実行環境に対応していないものあるいは、該当するバージョンのjava実行環境には対応していないものは対象外とする。
ただし、トランザクショナルファイルシステムのアクセス部分については、各プラットフォームネイティブの開発環境を用いることはある。
 

(2) トランザクショナルファイルシステム対応

トランザクショナルファイルシステム対応に関しては、今現在各プラットフォームの対応が出揃っていない。

このため、本プロジェクトにおいて一般的と認められるプラットフォーム、トランザクショナルファイルシステムに絞って、順次対応を拡大していくものとする。

それ以外のプラットフォームでは、本プロジェクトで用意するトランザクショナルファイルシステムを利用しなければならない。このトランザクショナルファイルシステムのファイルに対しては、専用のライブラリを用いてファイルにアクセスする必要がある
 

4. 業務環境

 
4.1 ユーザプロファイル
4.2 優先順位
4.3 稼働環境
 

このページの最終変更日 2009年2月3日