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
3
AWSにおける横断的なログ分析と コストの管理
naomichi
1
5.2k
失敗から始まるリアーキテクト: SREの実践例で見る改善の道筋
naomichi
0
670
プロダクト横断で可視化する ダッシュボードの開発
naomichi
0
330
第一回ライブラリ開発について考える会
naomichi
0
98
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
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
Gamification - CAS2011
davidbonilla
81
5.4k
Into the Great Unknown - MozCon
thekraken
40
1.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Unsuck your backbone
ammeep
671
58k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
21
1.3k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Designing for humans not robots
tammielis
253
25k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
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レスポンスで全件返される ◦ 心拍数は日をまたいでデータを要求できるが、結果セット に時刻しか含まれないため日付計算が必要