BaaS vs. バース ホームラン対決
AWS Summit Tokyo 2014 しみず
自己紹介 しみず @shimy_net
AWS 芸人
無駄に技術を使って 面白い LT をする
過去の発表
自転車でDynamoDB ピタゴラスイッチで AWS基盤を自動構築
KinectでEC2を キックスタート
Kinesisで元気あつめて フリーザ倒す
BaaS 今回は
バース
(M)BaaS とは Mobile Backend as a Service
モバイルアプリの サーバー機能を提供
サーバー機能
Push 通知 認証 ユーザ管理
データ管理 GPS連携 SNS連携
BaaS モバイルアプリ
海外 Parse、Buddy 国内 Kii、appiaries
Amazon SNS Mobile Push Amazon Cognito Amazon Mobile Analytics etc.
多くのサービスが展開
NEW
NEW
今年は BaaS が流行る
ところで
バースっていったら
俺のことちゃうん?
Randy Bass
素朴な疑問
?
BaaS バース
Batch
Randy Bass on AWS
vs.
どっちが強いの?
BaaS バース
Batch
Randy Bass on AWS
vs.
どっちが強いの?
Fight
対決方法
1. BaaS を作る 2. バース を作る 3. 戦う
1. BaaS を作る
Push 通知 認証 ユーザ管理
データ管理 GPS連携 SNS連携
BaaS モバイルアプリ
Push 通知の BaaS を作った
Amazon SNS Mobile Push ※ 足りない機能を実装する
・デバイストークンの収集
・大量メッセージの一括配信(キュー)
・履歴の取得
・未読/既読の管理
Push 通知 BaaS の 構成図
APNS GCM/ADM Device Token
Device Token 要求
Device Token Payload
Payload
デバイストークン収集 Amazon SNS
DynamoDB、RDS
1
2
Endpoint Arn
Endpoint Arn
メッセージ作成
Endpoint Arn 7Endpoint Arn Endpoint Arn
Device Token
Endpoint Arn Endpoint Arn
Payload
10
Device Token 39
6
4
5
8
Batch
Amazon SQS
REST API
利用した物 AWS Amazon SNS Mobile Push Amazon SQS Amazon RDS (MySQL) Amazon DynamoDB Amazon Elastic Beanstalk Amazon EC2
利用した物 Java Spring Jersey JAX-RS Hibernate JPA2 Apache Tomcat etc.
配信(Publish)
Users/ Device tokens
Messages
Authentication Publish
Spring
Jersey
Res
ourc
e
Dao
Hibernate MySQL RDS
Filte
r
Ser
vice
Batch
Dynamo DB
Dynamo DB
SNS
SQS
Publisher
Subscriber
配信API(Publish API)
curl -X POST ¥ -H "X-SHIMY-Admin-Identifier: zT8IizTtKQy9hwtlKyMXs1sl2IO4a95UIbaRREwp" ¥ -H "X-SHIMY-Admin-Secret-Key: zRrmnZn3wEidyuUGU2vJSDL1vYhvemZD3CDrX5JT" ¥
-H "Content-Type: application/json" ¥ -d '{ “alert” : ”メッセージだよ", “title”: ”タイトルだよ", “detail” : ”詳細内容だよ", "sound" : "default",
"badge" : ”1" }' ¥ http://localhost:8080/randy/v1/push-admin/send
BaaS ができた(オレ専用)
無駄に Scale する 豪華仕様!
APIのデモ
履歴API(History API)
curl -X GET ¥ -H "X-SHIMY-App-Identifier: zT8IizTtKQy9hwtlKyMXs1sl2IO4a95UIbaRREwp" ¥ -H "X-SHIMY-App-Secret-Key: zRrmnZn3wEidyuUGU2vJSDL1vYhvemZD3CDrX5JT" ¥
-H "Content-Type: application/json" ¥ -d '{ "identifier" : "8c30e162-b16a-4724-aa4b-312617d04789" }' ¥ "http://localhost:8080/randy/v1/push/messages?offset=2014%2d07%2d01%2018%3a28%3a36&count=2"
履歴を5件取得
2. バースを作る
バットを用意する
スマホを埋め込む
加速度センサーで バッティングを検知して Push 配信
バッティングを判定
Push配信
加速度の大きさで飛距離が変化 ※ メッセージが変化
150m 70m -d '{
“alert” : ”150m",
“title”: ”", “detail” : ”",
"sound" : "default", "badge" : ”1" }' ¥
-d '{
“alert” : ”70m",
“title”: ”", “detail” : ”",
"sound" : "default", "badge" : ”1" }' ¥
Push 受信アプリ
ホームランをねらえ
BaaS Push POST
Batch
バース
守備 攻撃
on AWS
準備は整った
3. 戦う
※BGMを忘れずに
バース
Batch
Randy Bass
vs.
ガチンコ勝負
ピッチャー バッター
BaaS on AWS
AWS代表
Osaka 代表
デモ
というわけで
ボールに届かない・・・と思いきや
Amazon の力強い助っ人が登場!
見事 キャッチ!
バース on AWS BaaS
vs.
勝利!! AWS は BaaS も強い!
Please take me to
re:Invent
Thank you very much.