---
title: 細かすぎて伝わらないSORACOM Funnelのオプション紹介 #soracomug
tags:  #soracom #soracomug #iot #exbeacon #serverless #aws #lambda #kinesis  
author: [NAKAYAMA Masahiro](https://convert.docswell.com/user/nekoruri)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/KY76GVYDEV.jpg?width=480
description: 2017-07-05 #soracomug LT ～BLE Mesh×クラウドの “裏” 見せます!!～ 細かすぎて伝わらないSORACOM Funnelのオプション紹介
published: July 06, 17
canonical: https://convert.docswell.com/s/nekoruri/521YMK-20170705-soracomug-funnel-option
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/KY76GVYDEV.jpg)

～BLE Mesh×クラウドの “裏” 見せます!!～
細かすぎて伝わらない
SORACOM Funnelのオプション紹介
株式会社WHERE
なかやま まさひろ
2017-07-05 SORACOM UG #7


# Page. 2

![Page Image](https://bcdn.docswell.com/page/5G75VDG874.jpg)

BLE Mesh×クラウド
• 例：従業員や物品の在籍把握システム
• iBeaconみたいなBLEビーコンをヒト/モノに持たせる
• 弊社EXBeaconで受信し、BLE Meshでゲートウェイに転送
• ゲートウェイからSORACOM Funnel経由でクラウドで分析・表示
（ウフルさんがこのオフィスでやっているのとだいたい一緒）
• 例：測位用ビーコンインフラ
• iBeaconみたいなBLEビーコンを固定で設置
• BLE Mesh経由で定期的にバッテリー残量等を収集、設定変更
• 同上


# Page. 3

![Page Image](https://bcdn.docswell.com/page/V9J238YVER.jpg)

在籍把握システムの例
未公開


# Page. 4

![Page Image](https://bcdn.docswell.com/page/5DEY16GQJM.jpg)

EXBeacon♥SORACOM
• ゲートウェイの上位回線にSORACOMを採用
• ゲートウェイの処理量を減らしたい⇒SORACOM Funnel
• 各種エンドポイントの管理を一括化⇒SIMグループ
• メンテナンス用リモートアクセス ⇒SORACOM Gate/Canal


# Page. 5

![Page Image](https://bcdn.docswell.com/page/2VJN2ZG278.jpg)

システム上の特徴
• 高トラフィック・リアルタイム
• たくさんのBLEビーコン情報をたくさんのEXBeaconで受信したログが
際限なく上がり続けて、リアルタイムで処理
• そこまで多くは無いけど、ビッグデータ系技術への入口
• AWSベースのストリーミング処理基盤を採用
•
•
•
•
Amazon Kinesis Streams（でっかいパイプ）で収集
AWS Lambda（サーバーレス実行環境）で逐次集計
Amazon DynamoDB（ごっついDB）に保存してAPIで最新データを提供
いわゆるIoTサーバーレスのテンプレ構成


# Page. 6

![Page Image](https://bcdn.docswell.com/page/GYE91ZWD73.jpg)

全体アーキテクチャ（簡略版）
SORACOM
Funnel
Kinesis
Streams
BLE Mesh
AWS
Credential
EXBeacon
BLEビーコン
Lambda
DynamoDB


# Page. 7

![Page Image](https://bcdn.docswell.com/page/5GE841N5JD.jpg)

全体アーキテクチャ（簡略版）
SORACOM
Funnel
Kinesis
Streams
BLE Mesh
AWS
Credential
EXBeacon
BLEビーコン
Lambda
DynamoDB


# Page. 8

![Page Image](https://bcdn.docswell.com/page/MLEL6QP3JR.jpg)

Kinesis Streams × AWS Lambda
• Kinesis StreamsからLambdaへのデータ送信
• 決まった量ごとにLambdaに渡される
⇒ Lambdaの処理能力が足りなくなると詰まる
• Lambdaの同時実行数を増やしたい
⇒ Kinesis StreamsのShard数（パイプの本数）を増やす必要がある
• Kinesis StreamsのShard数を増やせば良い
（2倍/半分にするのはコンパネからぽちぽちできる）


# Page. 9

![Page Image](https://bcdn.docswell.com/page/54JM514MJW.jpg)

Lambda同時実行数の引き上げ
Shard
Function
Shard
SORACOM
Funnel
Function
Shard
Function
Shard
Function
Kinesis
Streams
Lambda


# Page. 10

![Page Image](https://bcdn.docswell.com/page/ZPJR3LWL79.jpg)

落とし穴
• Kinesis StreamsのShardの特性
• 「どのShard」に入るかは「パーティションキー」で決まる
• 同じShardに入ったものは、入った順序で出てくる。
（別のShardとの同期はされない）
• SORACOM Funnelでパーティションキーはどうなる……？


# Page. 11

![Page Image](https://bcdn.docswell.com/page/NPEX4WV6EX.jpg)

これ（IMSI＝SIMごと）⇒分散されない…
SORACOM
Funnel
Kinesis
Streams
BLE Mesh
AWS
Credential
EXBeacon
BLEビーコン
Lambda
DynamoDB


# Page. 12

![Page Image](https://bcdn.docswell.com/page/63EKZVQGED.jpg)

2017-04-18 新規機能発表
• 当初のパーティションキー
• IMSI
• 新仕様でランダム化に対応
• 要望から一瞬で対応
• 週末消えずに済んだ＼(^o^)／


# Page. 13

![Page Image](https://bcdn.docswell.com/page/4L73DMP5E5.jpg)

注意事項
• ランダムなパーティションキー＝ランダムなShardに入る
• Lambdaに届いたときの前後関係が一切担保されない
• 後ろの処理で前後依存がある場合は注意
• SORACOM側で付与されるタイムスタンプ等を利用する
• 別のパーティションキーで高速に投げ直す


# Page. 14

![Page Image](https://bcdn.docswell.com/page/V87DP6LY7G.jpg)

で、誰？
• 通称Aki (@nekoruri)
• BLEなIoTシステムの
クラウド側担当
• ちょろっと執筆も
• 「薄い本」も出しています
• 最近はすっかり
セキュリティ教育畑に……
• セキュリティ・キャンプ
プロデューサー
• SecHack365 実施協議会委員
• ProjectDIVA Arcade LV.624 / ミリシタはじめました
NEW!


