概要
- スマホアプリ時代のAPI戦略としてオーケストレーションという層を設けることがポイントになっています。
LSUDsとは
- Large Set of Unknown Developers
- 大多数向けの未知の外部開発者に向けたAPI(自分でコントロールできない人たち)
- 誰にでも合うフリーサイズの服にちなんで one-size-fits-all API とも言う
SSKDsとは
- Small Set of Known Developers
- 利用者が自分が知っている開発者向けのAPI(自分でコントロールできる人たち)
LSUDsなAPIに求められるもの
- 汎用的
- 様々なユースケースを満たす
- 簡単、わかりやすい
- 機能の単位が小さい
- リソース指向 RESTful
SSKDsなAPIに求められるもの
- クライアント(デバイス)に寄った実装
- クライアントごとに最適化されたAPI
- 画面を作るためのおまとめAPIみたいなもの
- 必要であればRESTfulを捨ててクエリベースなAPIにする
- SSKDs単体でリリースサイクルが回せる(後述のオーケストレーション層参照
オーケストレーション層
- LSUDsなAPIを色々叩いたり処理してSSKDsなAPIに変換する層
- クライアントの要求を満たすような実装をここにいれる
- アプリ開発者がオーケストレーション層を触ってAPI開発もする
- LSUDsとは別の、アプリに合わせた高速なリリースサイクルで回せるようにする
オーケストレーション層を挟むことのメリット
- クライアントごとに最適化したAPIを実装できる
- 複数クライアントで書かなければいけないロジックをオーケストレーション層に集約できる
- A/Bテストしやすい
- バックエンドの開発完了を待たずにAPIスタブを作れるので、クライアントの開発を妨げない
- APIリリースサイクルをバックエンド本体側から分離できる
- バックエンドの仕組みを知らなくてもクライアント開発者がAPI開発することも可能
デメリット
- APIの数が爆増する
- バックエンドのAPIが増えると、オーケストレーション層でも対応しないといけない
- 一段レイヤーが増えるのでネットワークコストも増える(実装次第)