私が働いている場所では、過去数十年にわたってかなりの数のシステムが作成されており、それらを維持しています。
システムは多様であり、複数のオペレーティングシステム(Linux、Solaris、Windows)、複数のデータベース(oracle、sybase、mysqlのいくつかのバージョン)、さらには複数の言語(C、C ++、JSP、PHP、およびその他のホスト)があります。使用済み。
同じデータを複数のシステムに入力するという犠牲を払っても、各システムはかなり自律的です。
経営陣は最近、すべてのシステムが互いに楽しく通信し、データを共有するために何が必要かを調査する必要があると決定しました。
個々のシステムのいずれかにソフトウェアの変更を加えることはできますが、1つ(またはそれ以上)のシステムを完全に書き直すことは、管理者が楽しませる可能性が高いものではないことに注意してください。
ここでの開発者の最初の考えは単純明快でした。システムAがシステムBからのデータを必要とする場合、システムBのデータベースに接続してそれを取得する必要があります。同様に、Bデータを提供する必要がある場合は、Bのデータベースに挿入するだけです。
使用されるデータベース(およびバージョン)の混乱により、他の開発者は、複数の接続を調整する必要がないように、他のすべてのシステムのテーブルを組み合わせて、1つの新しいデータベースを作成する必要があると考えました。これを行うことで、いくつかのテーブルを統合し、冗長なデータエントリを取り除くことができるかもしれないと彼らは望んでいます。
これは、私が全体の混乱についての私の意見のために連れてこられた頃です。
システム通信の手段としてデータベースを使用するという考え全体は、私には面白いにおいがします。ビジネスロジックは複数のシステムに配置する必要があります(システムAがシステムBにデータを追加する場合、挿入を行う前にデータに関するBのルールをよりよく理解します)、いくつかのシステムは、見つけるために何らかの形式のデータベースポーリングを実行する必要があります。データベーススキーマへの変更は現在複数のシステムに伝播するため、データへの変更、継続的なメンテナンスは頭痛の種になります。
私が最初に考えたのは、時間をかけてさまざまなシステム用のAPI /サービスを作成することでした。これを作成すると、データの受け渡しや取得に簡単に使用できるようになります。他の多くの開発者は、データベースを使用するよりも、それが過剰ではるかに多くの作業であると感じています。
では、これらのシステムを相互に通信させるための最善の方法は何でしょうか。