そごうソフトウェア研究所

SOA、開発プロセス、ITアーキテクチャなどについて書いています。Twitterやってます@rsogo

SOAとデータベース(1)

hikikoさんがSOA Patterns: #32 Service Data Replcationでサービスとデータベースの関係について書いているけれども、複数のシステムを横断するようなシステム連携を行う場合、個別のシステムが同じ情報もありつつ、それぞれのデータベースに、それぞれの設計に基づきデータを持っていることが一般的です。
それによって、なんかデメリットがありそうだということは想像できますので、今回はそのことについて考えてみます。


デメリットは例えば、、

  • 連携が発生するごとにコード値などの変換が必要
  • そもそもシステムがローカルに持つ表と表が1対1に結び付けられない
  • システムAが別のシステムBのDBを直接参照しており、システムBのデータベースは改修不可能。システムBを改修したいときは、システムAも道連れ

この例では、いずれもシステム連携における次の3点でコスト増が発生しそうです。

  1. 初期開発時のコスト増
  2. 開発した部分の保守によるコスト増
  3. 連携先システムの変更にともなう改修コスト増


この場合の対応として、次を挙げてみます。
1.データベース統合
2.各システムの共通データ項目を抜き出し、共通データベースに統合
3.各システムが個別にデータベースを持ったまま
 3−1.共通データ項目をマスタから各システムに配信
 3−2.ESBの様な層でデータを仮想的に統合


次回、それぞれの対応策で、コスト増の発生ポイントを解決できているか検討します。