SOAとデータベース(1)
hikikoさんがSOA Patterns: #32 Service Data Replcationでサービスとデータベースの関係について書いているけれども、複数のシステムを横断するようなシステム連携を行う場合、個別のシステムが同じ情報もありつつ、それぞれのデータベースに、それぞれの設計に基づきデータを持っていることが一般的です。
それによって、なんかデメリットがありそうだということは想像できますので、今回はそのことについて考えてみます。
デメリットは例えば、、
- 連携が発生するごとにコード値などの変換が必要
- そもそもシステムがローカルに持つ表と表が1対1に結び付けられない
- システムAが別のシステムBのDBを直接参照しており、システムBのデータベースは改修不可能。システムBを改修したいときは、システムAも道連れ
この例では、いずれもシステム連携における次の3点でコスト増が発生しそうです。
- 初期開発時のコスト増
- 開発した部分の保守によるコスト増
- 連携先システムの変更にともなう改修コスト増
この場合の対応として、次を挙げてみます。
1.データベース統合
2.各システムの共通データ項目を抜き出し、共通データベースに統合
3.各システムが個別にデータベースを持ったまま
3−1.共通データ項目をマスタから各システムに配信
3−2.ESBの様な層でデータを仮想的に統合
次回、それぞれの対応策で、コスト増の発生ポイントを解決できているか検討します。