私は580以上のクラウドAPI(すべてのAPIは異なる機能を実装していますが、多くのオーバーラップがあります)とさらに多くのマイクロサービスを持つ会社で働いています。これらのすべてのAPIを1つのAPIとデータモデルに統合し、重複を最小限に抑える試みが数多く行われています。
技術を問題に投げかける前に、考えられる問題の原因のリストを考え出し、どの問題が私たちに当てはまるかを確認しようとしています。私の頭に浮かぶのは、コンウェイの法則です。
「システムを設計する組織は、これらの組織のコミュニケーション構造のコピーである設計を生成するように制限されています。」 -セルヴィン・コンウェイ(1967)。
私が思いついた理由のいくつか:
大規模な組織が1つのAPIを1つのデータモデルで構築するのが難しい一般的な理由は何ですか?解決策を求めていない。
大企業は多くの場合、共通の名前で運営されている小さな企業の集まりです。歴史的な理由(以前は合併または買収まで独立していた)のため、または実際的な理由(分散管理を行うと俊敏性が高まる)が原因です。サブ企業はある程度の独立を楽しんでおり、独自の文化さえ持っているかもしれません。彼らは彼ら自身の決定をすることができ、彼らは彼ら自身の焦点に基づいてそうするでしょう。それぞれが独自の問題を修正しています。そして、それらが機能的な島である限り、これは悪いことである必要はありません。
何かを構築することになると、先にプッシュして自分の問題を修正したくなるでしょう。協力は物事を遅くし、パートナーはあなたが解決策を必要とするときにおそらく興味がないでしょう。これらの開発を同期化する唯一の方法は、集中管理を使用することです。集中管理では、統一された方法で物事を実行する必要がある場合(存在する場合)に気づかない可能性があります。だから、あなたはいくつかの多様性を得る可能性があります。
これらのシステムをすべて用意し、それらを相互作用させる必要が出てきたら、その目的のために新しいインターフェースを実装することができます。それは「難しい」だけですが、解決すべき実際の問題はありません。
別の要因は、そのようなAPIには変更する理由がたくさんあることです。会計チームは、X、Y、Z、マーケティングチームA、B、C、さらに悪いことに、同様のデータを必要とする場合がありますが、組織化が異なります。マーケティングでは、データサイエンスアルゴリズムのテーブル内のすべてのデータが必要ですが、会計はそのデータ構造では機能しません。このように異なる理由を変更し、異なる要件を単一のAPIに詰め込むと、APIを圧倒することが保証されます。互換性のない要件を満たし、異なる方向に変更および進化する必要があります。あなたは、誰も満足しないか複雑な混乱であるAPIになってしまいます。