Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
サーバレス構成によるFitbitを使った 心拍数通知サービス
Search
Naomichi Yamakita
November 01, 2016
0
18
サーバレス構成によるFitbitを使った 心拍数通知サービス
Naomichi Yamakita
November 01, 2016
Tweet
Share
More Decks by Naomichi Yamakita
See All by Naomichi Yamakita
今こそ聞きたい!ガバメントクラウド
naomichi
0
2
AWSにおける横断的なログ分析と コストの管理
naomichi
1
5.1k
失敗から始まるリアーキテクト: SREの実践例で見る改善の道筋
naomichi
0
660
プロダクト横断で可視化する ダッシュボードの開発
naomichi
0
320
第一回ライブラリ開発について考える会
naomichi
0
96
Serverless Application Repositoryでトイルを削減する
naomichi
0
310
SRE的観点から日常を振り返る
naomichi
0
1k
GMO Research Tech Conference 2023
naomichi
0
25
Deep dive into cloud design
naomichi
0
49
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
39
1.9k
Docker and Python
trallard
44
3.5k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
GraphQLとの向き合い方2022年版
quramy
49
14k
Adopting Sorbet at Scale
ufuk
77
9.4k
The Language of Interfaces
destraynor
158
25k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
17
950
For a Future-Friendly Web
brad_frost
179
9.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Navigating Team Friction
lara
187
15k
Transcript
サーバレス構成によるFitbitを使った 心拍数通知サービス 2016/11 Naomichi Yamakita
GitHub dokidoki watch https://github.com/naomichi-y/dokidoki_watch
LINE Messaging API
Overview • Fitbitを装着して心拍数を計測 • Fitbit APIを使った心拍数の取得 • 心拍数が閾値を超えた場合にLINEのトークルームへ通知
Fitbit console using API Gateway
Export RDS to Spreadsheet
System component • Fitbit API • LINE Messaging API •
AWS ◦ Lambda
Architecture
Storage Storage type Performance Aggregate Scale out Note Amazon RDS
△ ◎ ◯ お手軽 Amazon DynamoDB ◎ ▲ ◯ 集計が面倒 MongoDB ◯ ◯ △ 構築が面倒 今回はお試し実装なのでストレージはRDS (MySQL) を採用
Coding • NodeJS 4.3 • ES6
Development environment • Docker ◦ Application container (NodeJS / Gulp)
◦ Database container • Docker compose
Node module (1/2) • aws-serverless-express ◦ 2016年10月、AWS Blogで発表 ◦ API
Gateway、Lambda (Express)、CloudFormationを利用した サーバレスアプリケーション構築パッケージ ◦ 2016年11月にはAWS SAM (AWS Serverless Application Model) を発表
Node module (2/2) • bluebird ◦ Promiseのラッパー。unhandledRejectionを捕捉可能 • eazy-logger •
fitbit-node • moment-tz • sequelize ◦ ORM • gulp
Using environment variables on lambda • 2016年11月 Lambdaが正式に環境変数をサポート ◦ http://qiita.com/naomichi-y/items/5c7c577f968d3c00a694
• 以前までは環境変数の利用が面倒だった ◦ API GatewayからLambdaにステージ環境変数を渡す ◦ LambdaのDescriptionに環境変数を定義してアプリケーショ ン側でパース ◦ 環境変数ファイルをCIで動的生成
Performance of Lambda 実行環境 (ap-northeast-1) 静的ページの表示 補足 EC2 16ms VPC
Lambda (コンテナ生成直後) 326ms No VPC Lambda 63ms No VPC
Lambda • 速度にばらつきがある • フロントがAPI Gatewayであれば、APIキャッシュや非同期処理 設計を検討 • 出力ログが自動でCloudWatch Logsに転送される
• 1ヶ月辺りの無料枠が大きい ◦ 1,000,000件のリクエスト ◦ 400,000GB/secのコンピューティング
Fitbit API • 常に同期するよう設定していても安定していない • APIが微妙 ◦ 1時間辺り150回のリクエスト制限 ◦ 心拍数を長期間分(1分単位の心拍数を1日分)取得する
際、1レスポンスで全件返される ◦ 心拍数は日をまたいでデータを要求できるが、結果セット に時刻しか含まれないため日付計算が必要