Edited at

WebAPIを作る前に考えること - LSUDsとSSKDs、オーケストレーション層

More than 1 year has passed since last update.


概要


  • スマホアプリ時代の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が増えると、オーケストレーション層でも対応しないといけない

  • 一段レイヤーが増えるのでネットワークコストも増える(実装次第)


イメージ


参考