SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

25
SORACOM Funnel手抜きIoTプラットフォーム #ssmjp 2016/09 Aki@nekoruri

Transcript of SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

Page 1: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

SORACOM Funnelで手抜きIoTプラットフォーム

#ssmjp 2016/09

Aki@nekoruri

Page 2: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

で、誰?

•あき

•ねこるり

etc.

Page 3: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

最近はIoTっぽいBLEデバイス作ってます

Page 4: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

みんなだいすきSORACOM

• SORACOM Air• IoT/M2M時代の(ほぼ)完全従量課金型MVNO

• 契約事務手数料 954円

• 1日10円+昼上り0.2~0.3円/MB+昼下り0.6円~1円/MB+夜上下0.2円/MB

• 世界120カ国で利用可能

• ドコモのL2 MVNOの上にAWSベースのソフトウェア交換機を独自実装

• APIで制御して事業者がSIMを再販できる

Page 5: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp
Page 6: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

そんなことはどうでもいい

•安けりゃいいなら格安SIMの上にVPNでもしとけ

Page 7: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

開発者にとってのSORACOMの嬉しさ

•セキュリティのオフロード

•機能のオフロード

Page 8: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

セキュリティのオフロード

•そもそも携帯端末は安全に識別されている• SIMは最も身近なICカード(国際規格 ISO/IEC 7816)

• 耐タンパ性(物理攻撃耐性)のあるセキュアなマイコン

• 電話回線の識別・認証に必要なセキュアな暗号処理を担当

SORACOMで実現する強固なセキュリティ http://www.slideshare.net/SORACOM/connectedt4soracom

Page 9: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

セキュリティのオフロード

•認証に必要な情報を端末自身に持たせたくない• 端末は盗まれたりするので個別に識別が必要

• 端末ごとの秘密鍵を適切に個別配布しないといけない

• 例)スマートメーター全国で7000万台

•通信回線のSIMはどこかで必ず挿す• SIMで全てを識別できれば良いのでは

• 端末自身には何の情報を持たせずに済む

Page 10: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

セキュリティのオフロード

• SORACOM Beam• 秘密鍵をSORACOM側で管理、外部と暗号化通信

• 接続先もSORACOM側で管理、端末は一つのエンドポイントに送信

• HTTP/MQTT/TCP/UDP⇒ HTTPS/MQTTS/TCPS

• SORACOM Endorse• SORACOMがIdPとして、安全なトークンを発行

• JWT(JSON Web Token)なので使いやすい

• SORACOM経由では鍵の発行処理だけ、データは別の経路でも構わない

• SORACOM Gate• 個別VPG(VPCみたいなの)を用意して、L2-VPNで端末に接続

Page 11: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

機能のオフロード

•開発コストの大幅な削減• 接続先やクレデンシャルの管理・配布コスト

• シンプルなデータ投入

• クラウド側へのデータ投入時の再送など(スロットリング対策)

• SORACOM Funnel• UDP/TCP/HTTPでSORACOMのエンドポイントに投げる

• クラウドサービスへのデータ転送をSORACOM側がやってくれる

• クレデンシャルや接続先情報もSORACOM側が持つ

Page 12: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

SORACOM Funnel

•端的に言って神サービス

• curlとかあればそれでKinesisに投げ込める• Cでlibcurlで書いても20行いかない

• JSON作るの含めても40行くらい

• 端末上でAWSライブラリとか直接触らなくて良いしAzureも試せる

•一応まだPublic BetaだけどPublicなので誰でももう使える!

Page 13: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

なげる

$ curl -X POST http://funnel.soracom.io ¥

-H Content-Type:application/json ¥

-d '{"foo":"bar"}'

Page 14: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

Kinesis Streams経由でとどく

{

"operatorId": "OP9999999999",

"timestamp": 1473322750825,

(省略)

"payloads": {

"foo": "bar"

},

"imsi": "440000000000000"

}

Page 15: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

AWS Lambdaでなんかやる

const es = require('event-stream');

const KSL = require('kinesis-stream-lambda');

exports.handle = function(event, context, callback) {

const stream = KSL.reader(event, { isAgg: false });

stream.on('end', function() { callback(null, {}); });

stream.on('error', function(err) { context.fail(err); });

stream.pipe(KSL.parseJSON({ expandArray: false }))

.pipe(es.map(function(data, cb) {

console.log('processing event: %j', data);

※ なんかやる

}));

};

Page 16: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

あとはご自由に

•夢がひろがりんぐ• とりあえずS3になげる

• DynamoDBに投げる

• BigQueryに投げる

• バッチサイズ100件とかでも200msとかで十分捌けるレベル

• 困ったらKinesis Streamsのシャード数を増やせば良い

• いわゆる「IoTプラットフォーム」のデータ層がこれですぐ作れる

•データ量多くてもSORACOMが再送制御などやってくれるっぽい

Page 17: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp
Page 18: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

遅延だけでちゃんと届いてる=きちんと再送!

Page 19: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

懺悔

•もしかして:自分

•検証作業で、N倍界王拳したセンサーデータを大量に送信※ 秒間数十件程度• 徐々に取り出すデータが遅れていくのでおかしいとは思っていた

• Kinesisと合わせ技で、どこの問題か切り分けできていなかった

• 最大で20時間以上の遅延

Page 20: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

受信側Kinesis Stramsの転送件数青:SORACOMからの受信橙:こちら側の取り出し件数

Page 21: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp
Page 22: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

あっ……(察し)

受信側Kinesis Stramsの転送件数青:SORACOMからの受信橙:こちら側の取り出し件数

Page 23: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

念力デバッグ

• PutRecordをPutRecordsで複数件登録にしたっぽい

Page 24: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

得られた知見

•投げるの楽なのでついうっかり投げ過ぎちゃう:;(∩´﹏`∩);:

• Public Betaのサービスをいじめてはいけない

•中身の修正が必要なはずなのにすぐ対応されてすごい• 検知: 09/14 12:54 JST

• 改善連絡: 09/14 15:37 JST

• 解決: 09/14 17:21 JST

Page 25: SORACOM Funnelで手抜きIoTプラットフォーム #ssmjp

まとめ

• SORACOMすごい• 開発者を楽に(かつセキュアに)する様々な仕組み

• SORACOM Funnelやばいすごい楽

• 修正早い

•株式会社WHEREではエンジニアを募集中です!• SORACOMを一緒にいじめたい人

• AWSとかAzureとかでサーバレスアーキテクチャしたい人

• EC2建てたら負けだと思っている人

• 必要なら生のCとかでも辞さない人