SlideShare une entreprise Scribd logo
1  sur  10
Télécharger pour lire hors ligne
© Recochoku Co.,Ltd. Proprietary and Confidential
2017/02/07
レコチョクの
サービス群を支えるAPIたち
〜レコチョクAPIの紹介とこれから〜
株式会社レコチョク
事業システム推進部 システムアーキテクトグループ
山本 耕琢
© Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07
自己紹介
2
山本 耕琢
年齢
• 1984年生まれ (32歳)
担当業務
• レコチョクの楽曲情報の検索や、会員/決済情報、
レコメンド情報などを扱うWebAPIの運用と改善を担当
趣味
• ライブ観戦 / スノーボード
• 国内旅行(主に電車) / 読書 / コーヒー
好きなアーティスト
• ASIAN KUNG-FU GENERATION
• OVER ARM THROW
• LiSA
© Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07
レコチョクAPIとは
3
レコチョクで管理されている様々なデータ及び手続きを提供するAPIになります。
レコチョクで承認した企業に対して、アクセス情報を提供して、
セキュリティを担保して、レコチョクでの各種データや手続きを提供しています。
© Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07
レコチョクAPIの役割 (システム鳥瞰図)
4
© Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07
レコチョクAPIの役割 (システム鳥瞰図/簡略版)
5
(View)
KDDI docomo
API
(Controller)
API
(Model)
(Model)
CMA
DB CloudSearch
Music
Store
DS
Best Hits TV WIZY
フロント層とサービス層の仲介をすることで、新しいサービスの
展開スピードを高めたり仕様変更の影響を最小限に抑えることが出来ます
© Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07
レコチョクAPIの提供する機能
6
カテゴリ 説明
楽曲検索API レコチョクにて管理された楽曲・アーティスト・アルバム・トラック・ランキングなどの情報を検索・閲覧
するための機能を提供します。
決済API レコチョクにて販売されているトラック・アルバムの購入又はウォレットチャージなどの事前購入手続きを
行うため機能を提供します。
会員API レコチョクで管理している会員に関わる情報の、更新及び参照を行う機能を提供します。
ソーシャルAPI 楽曲やアルバムのレビュー情報やMyアーティスト情報の登録・取得を行うための機能を提供します。
ダウンロードAPI 購入したトラック・アルバムをダウンロードするための手続きを行う機能を提供します。
マルチデバイス
ダウンロードAPI
レコチョクにて購入してお預かりしているトラック・アルバムの権利の参照及びダウンロードする為の機能
を提供します。
購入者特典API 購入者特典の申込・ダウンロード手続きを行うための機能を提供します。
カテゴリ 説明
認証機能 レコチョクで管理された情報や手続きを不正に利用されないように認証を行う機能を備えています。
楽曲メタ配信制御
フロント層に返却する情報に楽曲メタ情報を付与します。その時に、公開状態やデバイス情報に基づいて返
却する情報を制御する機能を備えています。
音源配布機能 音源情報が不正に配布されないように、適切に加工された音源を配布する機能を備えています。
© Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07
レコチョクAPIの提供する機能 (楽曲メタ配信機能)
7
ID
1111
2222
3333
4444
5555
サービス層から返却された各IDに、データ層から楽曲メタ情報を取得し、それ
を付与して返却します。それにより、サービス層は、自システムが提供する情
報の管理に集中することが出来ます。また、フロント層に情報を返却する際に、
公開状態のチェックやクライアントに適した情報の絞込を行い、返却をします。
API
DB
( ID) ( ID)
ID
( ID )
API (CloudSearch)
DB
1111 3333 5555
(“ ”) (“ ”)
ID
( ID )
1111 5555
© Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07
レコチョクAPIが抱える問題
8
レコチョクAPIのサービスinから3年以上の月日が経過しており度重なる
機能の追加などで技術的負債が蓄積しています。
また、AWS環境に移行しましたがクラウド環境へ適応がまだ不十分な状態です。
俗にいうレガシーなシステムからの脱却を目指して少しずつシステム改善を進
めたいと考えています。
開発/管理
• インタフェース仕様書はWordで作成してSVNで管理している
• 単体テストが作成されておらずバージョンアップの動作担保に工数がかかる
インフラ運用
• 各クライアントからの利用状況が把握できていない
• サービス層を利用する処理の性能を明確にできていない
• インフラ(AWS)コストが必要なのか過剰であるかが不明瞭である
• サーバのセキュリティ対応の運用が確立していなく不十分だと感じる
• リリース作業が自動化されていない
その他
• 外部向けの公開を推進したい
© Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07
今後の取り組み (インタフェース仕様書/Swaggerの導入)
9
Wordで作成しているインタフェース仕様書をSwaggerに置き換えて、
開発およびAPI利用者向け対応の工数削減を実現したいと考えています。
抱えている問題
• Wordのため変更箇所は履歴管理や差分チェックができない
• バイナリファイルのためGitと相性があまり良くない(現在はSVNを利用)
• API利用者が、テストツールやモックなどを準備する工数が発生する
• 設計書を修正した時に周知また配布する運用が発生する
Swaggerの導入により解決されること
• YAML(またはJSON形式)のテキストファイルのためGitで扱いやすくなり
変更箇所の履歴管理や差分チェックが容易となる
• Swagger Specificationからクライアント側やサーバ側(モック)のソース
コードを生成できるため、利用者側の開発工数を削減することが出来る
© Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07
今後の取り組み (APIの可視化/AWS Athena,X-Rayの導入)
10
レコチョクAPIをAWS環境に移行しているのでAthenaとX-Rayを利用して、
利用状況/ボトルネックがあるAPIを可視化し、リファクタリングや利用者側へ
の利用方法の改善要望などを実現することを考えています。
抱えている問題
• クライアント層からどのAPIをどれくらい利用されているか不明である
• 平均レスポンスタイムのみしか取得ができていない
• サービス層の改修による性能変化を検知することができない
AWS Athena,X-Rayの導入により解決されること
• アクセスログの解析を実施することでクライアント層単位のアクセス状況
を把握し遅延しているAPIを発見できる
• サービス層のシステムの通信状態を可視化して性能変化を検知したい

Contenu connexe

Tendances

Tendances (20)

分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
kube-system落としてみました
kube-system落としてみましたkube-system落としてみました
kube-system落としてみました
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
分散システムについて語らせてくれ
分散システムについて語らせてくれ分散システムについて語らせてくれ
分散システムについて語らせてくれ
 
分散システムの限界について知ろう
分散システムの限界について知ろう分散システムの限界について知ろう
分散システムの限界について知ろう
 
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
ゼロから作るKubernetesによるJupyter as a Service ー Kubernetes Meetup Tokyo #43
 
Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例
 
MongoDBの監視
MongoDBの監視MongoDBの監視
MongoDBの監視
 
Goss入門
Goss入門Goss入門
Goss入門
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討CentOS Linux 8 の EOL と対応策の検討
CentOS Linux 8 の EOL と対応策の検討
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 

Similaire à レコチョクのサービス群を支えるApiたち

そうだApi公開しよう feat. 有志のエンジニア
そうだApi公開しよう feat. 有志のエンジニアそうだApi公開しよう feat. 有志のエンジニア
そうだApi公開しよう feat. 有志のエンジニア
recotech
 

Similaire à レコチョクのサービス群を支えるApiたち (11)

業界あるある Music偏
 業界あるある Music偏 業界あるある Music偏
業界あるある Music偏
 
20170420 if up2017-ssg-kyushu
20170420 if up2017-ssg-kyushu20170420 if up2017-ssg-kyushu
20170420 if up2017-ssg-kyushu
 
Calendar Plus JavaScript APIをいじってみた
Calendar Plus JavaScript APIをいじってみたCalendar Plus JavaScript APIをいじってみた
Calendar Plus JavaScript APIをいじってみた
 
kintoneの基礎知識とここ1年の主要アップデート情報
kintoneの基礎知識とここ1年の主要アップデート情報kintoneの基礎知識とここ1年の主要アップデート情報
kintoneの基礎知識とここ1年の主要アップデート情報
 
kintoneが織りなす新しいSIの世界
kintoneが織りなす新しいSIの世界kintoneが織りなす新しいSIの世界
kintoneが織りなす新しいSIの世界
 
そうだApi公開しよう feat. 有志のエンジニア
そうだApi公開しよう feat. 有志のエンジニアそうだApi公開しよう feat. 有志のエンジニア
そうだApi公開しよう feat. 有志のエンジニア
 
実践!JavaScriptカスタマイズ
実践!JavaScriptカスタマイズ実践!JavaScriptカスタマイズ
実践!JavaScriptカスタマイズ
 
Lifebear beernight 1_for_share
Lifebear beernight 1_for_shareLifebear beernight 1_for_share
Lifebear beernight 1_for_share
 
kintone JSコーディングの玄人化を目指して - kintone evaCamp 2017
kintone JSコーディングの玄人化を目指して - kintone evaCamp 2017kintone JSコーディングの玄人化を目指して - kintone evaCamp 2017
kintone JSコーディングの玄人化を目指して - kintone evaCamp 2017
 
Eight×kintone 【Eightの名刺データをkintoneで活用してみよう!】
Eight×kintone 【Eightの名刺データをkintoneで活用してみよう!】Eight×kintone 【Eightの名刺データをkintoneで活用してみよう!】
Eight×kintone 【Eightの名刺データをkintoneで活用してみよう!】
 
個人事業者でも活用できるkintone
個人事業者でも活用できるkintone個人事業者でも活用できるkintone
個人事業者でも活用できるkintone
 

Plus de recotech

#recotech_AWS移行してみたけどぶっちゃけどうよ。
#recotech_AWS移行してみたけどぶっちゃけどうよ。#recotech_AWS移行してみたけどぶっちゃけどうよ。
#recotech_AWS移行してみたけどぶっちゃけどうよ。
recotech
 

Plus de recotech (17)

RecoChoku tech night #09 -reinvent2018報告会- オープニング
RecoChoku tech night #09 -reinvent2018報告会-  オープニングRecoChoku tech night #09 -reinvent2018報告会-  オープニング
RecoChoku tech night #09 -reinvent2018報告会- オープニング
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-
 
Amazon Kinesis Streams デモ
Amazon Kinesis Streams デモAmazon Kinesis Streams デモ
Amazon Kinesis Streams デモ
 
Amazon SageMaker の紹介 + デモ
Amazon SageMaker の紹介 + デモ Amazon SageMaker の紹介 + デモ
Amazon SageMaker の紹介 + デモ
 
Aws導入時にまず考える〇〇のこと
Aws導入時にまず考える〇〇のことAws導入時にまず考える〇〇のこと
Aws導入時にまず考える〇〇のこと
 
レコチョク・ラボが考える人工知能
レコチョク・ラボが考える人工知能レコチョク・ラボが考える人工知能
レコチョク・ラボが考える人工知能
 
Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行
 
Git hubenterpriseを導入してみて
Git hubenterpriseを導入してみてGit hubenterpriseを導入してみて
Git hubenterpriseを導入してみて
 
Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発
 
Mackerel x Twilio ~レコチョクの場合~
Mackerel x Twilio ~レコチョクの場合~Mackerel x Twilio ~レコチョクの場合~
Mackerel x Twilio ~レコチョクの場合~
 
#reco_tech Cloud searchでレコチョク検索の実現に向けて
#reco_tech   Cloud searchでレコチョク検索の実現に向けて#reco_tech   Cloud searchでレコチョク検索の実現に向けて
#reco_tech Cloud searchでレコチョク検索の実現に向けて
 
#reco_tech OracleからAuroraへ feat. 開発しかやってこなかったエンジニア
#reco_tech   OracleからAuroraへ feat. 開発しかやってこなかったエンジニア#reco_tech   OracleからAuroraへ feat. 開発しかやってこなかったエンジニア
#reco_tech OracleからAuroraへ feat. 開発しかやってこなかったエンジニア
 
#reco_tech AWSへ全面移行した今を話ます。
#reco_tech   AWSへ全面移行した今を話ます。#reco_tech   AWSへ全面移行した今を話ます。
#reco_tech AWSへ全面移行した今を話ます。
 
WIZY企画の裏側
WIZY企画の裏側WIZY企画の裏側
WIZY企画の裏側
 
#recotech_AWS移行してみたけどぶっちゃけどうよ。
#recotech_AWS移行してみたけどぶっちゃけどうよ。#recotech_AWS移行してみたけどぶっちゃけどうよ。
#recotech_AWS移行してみたけどぶっちゃけどうよ。
 
#recotech_WIZY開発の裏側
#recotech_WIZY開発の裏側#recotech_WIZY開発の裏側
#recotech_WIZY開発の裏側
 
#recotech_レガシーなシステムから立て直すためにしたこと
#recotech_レガシーなシステムから立て直すためにしたこと#recotech_レガシーなシステムから立て直すためにしたこと
#recotech_レガシーなシステムから立て直すためにしたこと
 

Dernier

Dernier (11)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

レコチョクのサービス群を支えるApiたち

  • 1. © Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07 レコチョクの サービス群を支えるAPIたち 〜レコチョクAPIの紹介とこれから〜 株式会社レコチョク 事業システム推進部 システムアーキテクトグループ 山本 耕琢
  • 2. © Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07 自己紹介 2 山本 耕琢 年齢 • 1984年生まれ (32歳) 担当業務 • レコチョクの楽曲情報の検索や、会員/決済情報、 レコメンド情報などを扱うWebAPIの運用と改善を担当 趣味 • ライブ観戦 / スノーボード • 国内旅行(主に電車) / 読書 / コーヒー 好きなアーティスト • ASIAN KUNG-FU GENERATION • OVER ARM THROW • LiSA
  • 3. © Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07 レコチョクAPIとは 3 レコチョクで管理されている様々なデータ及び手続きを提供するAPIになります。 レコチョクで承認した企業に対して、アクセス情報を提供して、 セキュリティを担保して、レコチョクでの各種データや手続きを提供しています。
  • 4. © Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07 レコチョクAPIの役割 (システム鳥瞰図) 4
  • 5. © Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07 レコチョクAPIの役割 (システム鳥瞰図/簡略版) 5 (View) KDDI docomo API (Controller) API (Model) (Model) CMA DB CloudSearch Music Store DS Best Hits TV WIZY フロント層とサービス層の仲介をすることで、新しいサービスの 展開スピードを高めたり仕様変更の影響を最小限に抑えることが出来ます
  • 6. © Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07 レコチョクAPIの提供する機能 6 カテゴリ 説明 楽曲検索API レコチョクにて管理された楽曲・アーティスト・アルバム・トラック・ランキングなどの情報を検索・閲覧 するための機能を提供します。 決済API レコチョクにて販売されているトラック・アルバムの購入又はウォレットチャージなどの事前購入手続きを 行うため機能を提供します。 会員API レコチョクで管理している会員に関わる情報の、更新及び参照を行う機能を提供します。 ソーシャルAPI 楽曲やアルバムのレビュー情報やMyアーティスト情報の登録・取得を行うための機能を提供します。 ダウンロードAPI 購入したトラック・アルバムをダウンロードするための手続きを行う機能を提供します。 マルチデバイス ダウンロードAPI レコチョクにて購入してお預かりしているトラック・アルバムの権利の参照及びダウンロードする為の機能 を提供します。 購入者特典API 購入者特典の申込・ダウンロード手続きを行うための機能を提供します。 カテゴリ 説明 認証機能 レコチョクで管理された情報や手続きを不正に利用されないように認証を行う機能を備えています。 楽曲メタ配信制御 フロント層に返却する情報に楽曲メタ情報を付与します。その時に、公開状態やデバイス情報に基づいて返 却する情報を制御する機能を備えています。 音源配布機能 音源情報が不正に配布されないように、適切に加工された音源を配布する機能を備えています。
  • 7. © Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07 レコチョクAPIの提供する機能 (楽曲メタ配信機能) 7 ID 1111 2222 3333 4444 5555 サービス層から返却された各IDに、データ層から楽曲メタ情報を取得し、それ を付与して返却します。それにより、サービス層は、自システムが提供する情 報の管理に集中することが出来ます。また、フロント層に情報を返却する際に、 公開状態のチェックやクライアントに適した情報の絞込を行い、返却をします。 API DB ( ID) ( ID) ID ( ID ) API (CloudSearch) DB 1111 3333 5555 (“ ”) (“ ”) ID ( ID ) 1111 5555
  • 8. © Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07 レコチョクAPIが抱える問題 8 レコチョクAPIのサービスinから3年以上の月日が経過しており度重なる 機能の追加などで技術的負債が蓄積しています。 また、AWS環境に移行しましたがクラウド環境へ適応がまだ不十分な状態です。 俗にいうレガシーなシステムからの脱却を目指して少しずつシステム改善を進 めたいと考えています。 開発/管理 • インタフェース仕様書はWordで作成してSVNで管理している • 単体テストが作成されておらずバージョンアップの動作担保に工数がかかる インフラ運用 • 各クライアントからの利用状況が把握できていない • サービス層を利用する処理の性能を明確にできていない • インフラ(AWS)コストが必要なのか過剰であるかが不明瞭である • サーバのセキュリティ対応の運用が確立していなく不十分だと感じる • リリース作業が自動化されていない その他 • 外部向けの公開を推進したい
  • 9. © Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07 今後の取り組み (インタフェース仕様書/Swaggerの導入) 9 Wordで作成しているインタフェース仕様書をSwaggerに置き換えて、 開発およびAPI利用者向け対応の工数削減を実現したいと考えています。 抱えている問題 • Wordのため変更箇所は履歴管理や差分チェックができない • バイナリファイルのためGitと相性があまり良くない(現在はSVNを利用) • API利用者が、テストツールやモックなどを準備する工数が発生する • 設計書を修正した時に周知また配布する運用が発生する Swaggerの導入により解決されること • YAML(またはJSON形式)のテキストファイルのためGitで扱いやすくなり 変更箇所の履歴管理や差分チェックが容易となる • Swagger Specificationからクライアント側やサーバ側(モック)のソース コードを生成できるため、利用者側の開発工数を削減することが出来る
  • 10. © Recochoku Co.,Ltd. Proprietary and Confidential 2017/02/07 今後の取り組み (APIの可視化/AWS Athena,X-Rayの導入) 10 レコチョクAPIをAWS環境に移行しているのでAthenaとX-Rayを利用して、 利用状況/ボトルネックがあるAPIを可視化し、リファクタリングや利用者側へ の利用方法の改善要望などを実現することを考えています。 抱えている問題 • クライアント層からどのAPIをどれくらい利用されているか不明である • 平均レスポンスタイムのみしか取得ができていない • サービス層の改修による性能変化を検知することができない AWS Athena,X-Rayの導入により解決されること • アクセスログの解析を実施することでクライアント層単位のアクセス状況 を把握し遅延しているAPIを発見できる • サービス層のシステムの通信状態を可視化して性能変化を検知したい