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
32
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
サーバレス構成によるFitbitを使った 心拍数通知サービス
Naomichi Yamakita
November 01, 2016
More Decks by Naomichi Yamakita
See All by Naomichi Yamakita
現場で試したAI駆動開発
naomichi
0
46
ClickHouse活用によるパフォーマンス改善について
naomichi
0
190
SRE が駆動するプロダクト品質と アーキテクチャ進化の仕組み
naomichi
0
220
今こそ聞きたい!ガバメントクラウド
naomichi
0
66
AWSにおける横断的なログ分析と コストの管理
naomichi
1
7.1k
失敗から始まるリアーキテクト: SREの実践例で見る改善の道筋
naomichi
0
910
プロダクト横断で可視化する ダッシュボードの開発
naomichi
0
420
第一回ライブラリ開発について考える会
naomichi
0
160
Serverless Application Repositoryでトイルを削減する
naomichi
0
370
Featured
See All Featured
Fireside Chat
paigeccino
42
4k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
420
New Earth Scene 8
popppiees
3
2.4k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
KATA
mclloyd
PRO
35
15k
The browser strikes back
jonoalderson
0
1.4k
GraphQLとの向き合い方2022年版
quramy
50
15k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
360
How to train your dragon (web standard)
notwaldorf
97
6.7k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
670
WCS-LA-2024
lcolladotor
0
780
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
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レスポンスで全件返される ◦ 心拍数は日をまたいでデータを要求できるが、結果セット に時刻しか含まれないため日付計算が必要