Upgrade to Pro — share decks privately, control downloads, hide ads and more …

API Meetup #22 LT大会(Apitore)

API Meetup #22 LT大会(Apitore)

ApitoreにおけるWebAPIのマイクロサービス化について
Apitoreはアルゴリズムのマーケットプレイスなので、いくつものWebAPIをホスティングしています。本日はApitoreがどのように複数のWebAPIをホスティングしているのかご紹介します

2dee3205a1e41a9fe4638217118c25cb?s=128

Keigo Hattori

October 06, 2017
Tweet

Transcript

  1. ApitoreにおけるWebAPIのマ イクロサービス化について Apitore 服部圭悟 (@keigohtr) 1

  2. 本日の内容 Apitoreはアルゴリズムのマーケットプレイス なので、いくつものWebAPIをホスティング しています。本日はApitoreがどのように複数 のWebAPIをホスティングしているのかご紹 介します 2

  3. 服部圭悟 @keigohtr 自然言語処理、画像処理を専門と する機械学習研究者。プライベー トでアルゴリズムのマーケットプ レイスであるApitoreを提供中。 連絡先: apitore.com@gmail.com https://apitore.com/ 自己紹介

    3
  4. Apitoreはこんな感じ 4 • 要するにアルゴリズム版のGoogle Play • APIコール課金(≒ガチャ課金)

  5. アルゴリズムにも人気はある • 当然ながら「すごく使われるアルゴリズム」 と「全く使われないアルゴリズム」がある • 「すごく使われるアルゴリズム」は大量のリ クエストを捌けるようにしたい そうだ、マイクロサービスにしよう 5

  6. Apitoreの構成(一部) 6 API Server Eureka Algo1 Algo1 Algo2 Algo3 In:

    Input data Out: Output data In: Where is algo? Out: IP+Port In: Input data Out: Output data In: IP+Port
  7. Apitoreの構成(一部) 7 API Server Eureka Algo1 Algo1 Algo2 Algo3 In:

    Input data Out: Output data In: Where is algo? Out: IP+Port In: Input data Out: Output data In: IP+Port マイクロサービスを管理 (Spring Cloud Eureka)
  8. Apitoreの構成(一部) 8 API Server Eureka Algo1 Algo1 Algo2 Algo3 In:

    Input data Out: Output data In: Where is algo? Out: IP+Port In: Input data Out: Output data In: IP+Port マイクロサービスを管理 (Spring Cloud Eureka) よく使われるアルゴはインスタンスを増やす (Spring Boot + Spring Cloud Eureka) マイクロサービスにアクセス (Spring Cloud Feign)
  9. ユーザー管理をどうするか? • 誰がどのアルゴを使ったか管理したい、さも なくばAPIコール課金(≒ガチャ課金)を実 現できない • 重要な部分はなるべく定説に乗っかりたい そうだ、Oauth2.0を採用しよう 9

  10. Apitoreの構成(一部) 10 API Server (Oauth Resource Server + Spring Security)

    Eureka Algo1 Algo1 Algo2 Algo3 In: Input data Out: Output data In: Where is algo? Out: IP+Port In: Access token Input data Out: Output data In: IP+Port • Access tokenはUUID • ユーザー管理とAccess tokenの認可 (Spring Security Oauth2.0)
  11. 仕様書はどうするか? • 仕様書・・・それは古代から続く不解問題 • 管理したくない・・・管理したくない・・・ プログラムの変更に連動して仕様書が書き換 わるようにしたい そうだ、Swaggerを採用しよう 11

  12. Apitoreの構成(一部) 12 API Server (Oauth Resource Server + Spring Security)

    Eureka Algo1 Algo1 Algo2 Algo3 In: Input data Out1: Output data In: Where is algo? Out: IP+Port In: Access token Input data Out1: Output data In: IP+Port Out2: Swagger spec • Swagger specをアルゴ配下にする • アルゴと一緒にマイクロサービスでSwagger spec を配信する (Spring Boot + Spring Cloud Eureka + SpringFox) Out2: Swagger spec
  13. 13 ご清聴ありがとうございました! • 興味ある方は「Apitore」で検索、もしくは @keigohtr をフォロー! • アルゴリズム/WebAPIを公開したいヒト 募集中♪