Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
95
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@peka2

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

概要

  • スマホアプリ時代の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が増えると、オーケストレーション層でも対応しないといけない
  • 一段レイヤーが増えるのでネットワークコストも増える(実装次第)

イメージ

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
95
Help us understand the problem. What are the problem?