API の変更という悩み
よくCData を活用されているお客様にWeb API 連携について「Web API はバージョンアップが多くて、それに合わせた連携アプリケーションの管理コストが膨大。CData では将来のAPI の変更をカバーしてくれるので助かる」というコメントを頂きます。
Salesforce、Dynamics 365, Google Analytics、Facebook などのクラウドで提供されるサービスについて考えると、サービスのバージョンアップが多く、ひと昔前のRDB との連携と比べ、連携部分の改修頻度が高いです。 これらのサービスは大きいリリースだけでも数か月サイクルで行われています。開発側ではもちろん毎日変更が加えられている訳です。SaaS として競争力を維持するために新しい機能を加えたり、既存の機能を置き換えることは当然です。 個人で使っているFacebook でもよく「あ、知らないボタンが出てきた」など気づくことがありますよね。これはユーザーが画面を見ながら操作している分には大きな問題にはなりません。ただし、他のアプリケーションからAPI を参照している場合には大きな問題です。 アプリケーションでは、厳密に「どのエンドポイントのどのデータを取ってくる」というプログラミングがされている訳ですから、人間の目ようにフレキシブルに対応はできません。基本的にはエンドポイントが変わってしまうような大きな変更があればAPI との連携部分は止まってしまいます。
アプリケーションのAPI 連携部分というものは、いつAPI 側の変更によって不具合が起きてしまうか分からないものです。
Web API 連携は技術的負債を作ってしまう
会計用語で、「負債とは、将来的に他の経済主体に対して、金銭などの経済的資源を引き渡す義務のこと」と定義されています。簡単に言うと、将来お金が出て行ってしまうことが決まっているモノのことです。借金が一番わかりやすいですね。
そして、ソフトウェアの世界には「技術的負債」と呼ばれるものがあります。1992年にカニンガム氏が技術的な債務との比較を報告されたとのこと。 「最初のコードを出荷することは、借金をしに行くのと同じである。小さな負債は、代価を得て即座に書き直す機会を得るまでの開発を加速する。危険なのは、借金が返済されなかった場合である。品質の良くないコードを使い続けることは、借金の利息としてとらえることができる。技術部門は、欠陥のある実装や、不完全なオブジェクト指向などによる借金を目の前にして、立ち尽くす羽目になる。」
Web API を使ってのデータ連携はどう考えればいいでしょうか?もしコード自体に問題がなくても(負債がなくても)、Web API は早いペースで仕様が変わります。 API 側が変更になれば、対応するためにアプリケーション側の改修が必要です。改修には人的リソース・コストがかかります。
ソフトウェアで一般的に使われる技術的負債は不味いアーキテクチャなどから発生するものですが、API 連携部分はどうしても負債が発生します。
年に数回メジャーバージョンアップするサービスを考えれば、そのバージョンアップへの対応コストは数年で当初の開発コストを上回ってもおかしくありません。
もしAPI 技術者が自社リソースではない場合や自社技術者が転職してしまった場合には、コストはより大きくなります。 さらにBI、アナリティクス、DWH、ETL などのツールベンダー、クラウドインテグレータ などのAPI 連携先が多い企業ではAPI の連携部分が多いため、比例して管理コストが増大します。 30や50のAPI に繋いでいるツールなどを開発・提供しているツールベンダーでは、API 連携のリスク(負債)だけで年に数千万~数億円になるでしょう。
技術的負債はサードパーティ製品でヘッジ!
貴方の会社(もしくは事業部)のバランスシートにそれだけの負債が乗っていることを想像してください。そのままにしておきますか?潜在的な負債があるとわかれば、引当やリスクのヘッジを行うのは企業として当然です。
自社リソースでWeb API 連携を作っている場合は、是非そのエンジニアに転職されないようにしましょう。そしてAPI 連携部分についてしっかりとドキュメントを残したりして他のエンジニアでも改修ができるようにしましょう。 アウトソースなどで行っている場合には、「API の変更時のアプリケーション改修」をサポートメニューに入れておいた方がいいでしょう。それでも個々のリソースに依存した形でヘッジしようとすればリスクに見合うだけのコストを払うこととなります。
なんとかコストを抑えてリスクをヘッジする方法はないでしょうか?CData のようなサードパーティツールを使うことで低コストとリスクヘッジの両方を実現できます。財務担当が金融のリスク(金利や為替の変動)を金融商品でヘッジすることと同じです。 CData Drivers は80を超えるAPI 連携をサブスクリプションライセンスで安定して提供しています。サブスクリプションで製品を提供しており、期間中はAPI 側のバージョンアップにいち早く対応して、新しいドライバーをお届けします。
CData では、次のような取り組みにより、素早いAPI 変更対応をしています:
- サービスの提供先とのパートナーシップによるAPI 変更の事前対応
- 毎日のドライバーの回帰テストによるモニタリング
- 日次ビルドによる迅速なデリバリー
- API 連携専業ベンダーとしての連携技術のコンポーネント化と厚いエンジニア層
- JDBC/ODBC/ADO などのプラットフォームをまたいだ自動コード生成による迅速な開発
CData Drivers がAPI の変更の多くをクッションとして吸収してくれます。これが将来的な運用も考えた際のCData Drivers 導入のメリットです。 特定の開発者に依存するAPI 連携を抱えるより、信頼されるサードパーティであるCData Drivers での連携実装をお勧めします。開発および運用コストを1/10 以下とすることができるでしょう。
開発コスト自体を少なく抑える、開発期間を短くするというワンタイムのコスト削減効果だけでなく、アプリケーションのライフサイクル全体でのコスト削減や安定化というメリットを得て頂くことが可能です。 組み込みでのCData 製品の利用は、パートナーオファーhttps://www.cdata.com/jp/partner/oem/ をご覧ください。
関連コンテンツ