はじめに
弊社で運用しているサービス(あすけん)でFitbitのSubscriptionsAPIを利用した時に少々困ったことがあったので記事にしました(´・ω・`)
FitbitのSubscriptionsAPIとは
Fitbitのユーザーデータが変更されたときにサードパーティのアプリケーションに通知するAPIです。
ユーザーのデータを取得するためのポーリングまたはスケジューリングシステムを実装しなくても、アプリケーションはユーザーの最新のデータを保持できまるようになります。
( https://dev.fitbit.com/build/reference/web-api/subscriptions/ より引用 )
SubscriptionsAPIの流れ
- ユーザーがFitbitにデータを登録します。
- Fitbitはタイミングを見計らい、Endpoint URLにアクセスします。
- EndpointにはTypeで指定したデータがPOSTされます。
- データをパースし、fitbitからデータを取得します。
少々困ったこと
アクセスが死ぬほど多い
ユーザーデータが更新され、すぐにEndpointが叩かれるため登録人数によってはサーバーへの負荷がエライ事になります。
弊社では、一旦SQS(メッセージキュー)に保管して負荷分散するようにしました(´・ω・`)
Endpoint URLが一定期間アクセスできなかった場合、SubscriptionsAPIが無効になる
無効に切り替わったぞ通知は送られてきます。
その場合管理画面で有効に変更するだけで良いのですが
停止中のデータの更新方法・復旧手順を考えてから導入した方が良いです(´・ω・`)
Fitbit側がTLS+SNIに対応していない
CloudFrontを使っている方は要注意。
ELBで対応するなどした方がいいでしょう(´・ω・`)
まとめ
弊社サービスでは、カロリー計算や運動アドバイスを随時計算するため必要でしたが
サービス内容によってはSubscriptionsAPIを導入する必要も特にはないかと思います。
データを取得するAPIだけの運用でも良いと思うのでご参考になれば幸いです。