今回は企業内アプリ”全体”を疎結合化した際に、どのような形になるかをご紹介するとともに、そのポイントがどこにあるかについてお話したい。小生、全社システムの絵を描くのは久しぶりである。今後何かに使えるかも知れないので、少し気合いを入れて書いてみたのでご覧いただきたい。
既にバックナンバー”2015.4.6“で、ER図を用いて疎結合化の勘所を説明したが、今一つ具体例が足りないという読者のために、局所的な例ではなく全社システムのいたる所に疎結合化を施したエンタープライズモデルを作成してみた。
ご紹介するモデルは架空の企業(業種はメーカー)であるが、各アプリケーションに登場するエンティティは定石通りに描いたつもりである。各アプリは独立して機能し、それらが緩やかにシンクロナイズしながら、全体で整合性を保って機能する自立分散型システムとなっている。
読者の方は既にお気付きと思われるが、同じ名前のエンティティが複数存在しているのが目立つのではないだろうか。ここで、典型的な疎結合モデルを説明する為に、データHUB及び各アプリに保有する”在庫エンティティ”をピンク色に塗り潰してみた。ちなみに今回は、疎結合化のコネクタツールである”データHUB”のメカニズムは省略する(バックナンバー”2015.10.26“参照)。
ここで、とことん”リアルタイム性”に拘るITエンジニア、ESB経由でどこまでも発生源データを取得しようというSOA信者、”One Fact In One Place”を標榜するDOA信者のいずれの方々も思いきり裏切る事をお許しいただきたい。なぜなら、近年の課題は行き過ぎた密結合からの脱却なのだから。
上記の在庫エンティティ(テーブル)のケースで補足説明したい。図中、ECサイトの在庫テーブル、契約・受発注の在庫テーブル、物流・在庫管理の在庫テーブル、さらには生産管理の在庫テーブルと、合計4つの在庫は理論上1つのテーブルに統合する事が可能である。しかし、これらの何れも、運用の条件や、トランザクション処理量が激しく異なる。
ECサイトは24時間365日ノンストップが求められるが、物流・在庫管理、生産管理(仮に日勤工場とする)では、夜間はオンライン運用を停止してバッチ処理が組まれていたりする。また、トランザクション量においては、契約・受発注と生産管理では数百倍の開きがある。ましてやコンシューマ相手のECサイトに至っては論外である。ECの繁忙期に、生産管理の計上処理が待ちに入り生産が滞る等は考えたくもない。このような背景から在庫DBを中心としたコンフリクトは必至である。
このようなケースにおいては、敢えてテーブルを統合せずに複製を持つことが現実的である。そして複製テーブル間のデータ同期はDBレプリケーション、更新差分のファイル転送など数種類の方式が考えられる。例によって、3 ノード以上のデータ同期では真ん中にデータHUBを据える事がスパゲッティ化を防ぐために必要になる。この例では4か所(場合によってはBI等へも)での分散であり、Enterprise Data-Hub の在庫が正本(GOLD)として機能する。このことは、MDMにおけるマスタのゴールデンレコードに近似している。マスタデータと異なる点は、データ更新頻度が頻繁であることである。
当エンタープライズモデルでは、左下の凡例にあるように、アプリ内の密結合のデータ連携は青色の実線で表し、アプリ外との疎結合連携の点線と区別している。さらに疎結合の中を通常のマスタデータの非同期配信(参照のみ)は緑色の点線、在庫等の残高や受発注等のトランザクションエンティティの非同期連携は赤色で表した。これらの点線で表したデータ同期は完全なリアルタイムではなく、準リアル(トリガー起動)〜オンバッチ〜タイマーバッチ等、ビジネス上許されるインターバルで緩やかに同期することが可能である。
さらに、このモデルではEnterprise Data-Hub 以外に、Enterprise Accounting-Hub(会計HUB)も描かれている。仕訳データや勘定残高データも、会計システム群(AP/AR、GL、原価計算等)ではお互いに共有することとなり、いわば会計専用のデータHUBの役割を担っている。さらに、来るべきビッグデータ時代の主役となるであろうEnterprise Data-Pool なるものも初お目見えしている。
このように、エンタープライズレベルでの疎結合データ連携のモデルを設計することは十分に可能であり、実装技術も排他制御を駆使する密結合システムよりは難易度は低い。しかしながら、マスメディアやベンダーのプレゼン、アーキテクチャの教科書にまで、ESBを介したSOAアーキテクチャやWEBサービスで作ることが”今流”であるとしか書かれていない。1業務アプリ内ではこれで良いがエンタープライズ全体をこれで組もうとするとスパゲッティ化は免れない。