Más contenido relacionado La actualidad más candente (20) Similar a BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo (20) Más de Masahiro NAKAYAMA (20) BluetoothメッシュによるIoTシステムを支えるサーバーレス技術 #serverlesstokyo3. 個人の活動
• 通称Aki (@nekoruri)
• 『秋葉原生まれ大手町育ちの歌って踊れる
江戸っ子フルスタックインフラエンジニア』
• 同人物書き
• 「Serverlessを支える技術」
今日も受付横にて頒布中!
• 副業:セキュリティ人材育成
• セキュリティ・キャンプ / SecHack365
• Microsoft MVP (Azure, 2017/01-)
• ProjectDIVA Arcade LV.624
5. Bluetooth LEの基本
• Bluetooth LE(Bluetooth Low Energy; BLE)
• 地獄の2.4GHz(ISMバンド:電子レンジなど通信以外の電波にも許可
された周波数帯)を使う通信方式
• 他にも、Wi-Fi、RFID、コードレス電話、ラジコンなどが通信にも利用
• Bluetooth 4.0以降のBLEと、それ以前の「Classic Bluetooth」は別物
6. Bluetooth LEの通信形態
• ブロードキャスト
• 最近はiBeaconなどにも使われる1:Nの通信
• (独自に作らない限り)到達確認・再送制御などはない
• 「だいたい届いているはず」ぐらいの期待値で繰り返し送信
• 見通し100m以上届く ※確実に届くとは言っていない
• コネクション
• 相手を決めて行われる1:1の通信
• きちんとした再送制御など安定した通信路を提供
• ある程度電波が確実に届くことが必要、10mあたりから不安定
12. Bluetooth mesh
• Bluetoothを使ったメッシュネットワークの「標準規格」
• 2017年7月にBluetooth SIGより正式発表
• Bluetooth 4.0以降の上に乗っかるプロトコル
(5.0以降であれば新しい無線方式などの恩恵も得られる)
• フラッド型メッシュのQualcomm社「CSRmesh」をベースに規格化
• あくまでプロトコルが決まっただけ
• 発表を受けて、各ベンダーからのSDKが出揃ってきた
• WHEREでは、既にCSRmeshベースでフラッド型メッシュを実用化済
• できることはだいたい同じ
13. Bluetoothメッシュ × サーバーレス
• Bluetoothのメッシュ通信でデータ収集
⇒たくさんのデータがぽんぽんあがってくる
⇒少量のデータがたまにあがってくる
• たくさんのデータからリアルタイムで集計して見たい
⇒ストリーム処理
• それを少ないリソース(コスト・人員)で回したい
⇒サーバーレス!
Gateway 分析 API
22. Lambdaの開発
• Node.js
• トランスパイラ無しで素のNode.js(初期は4.3、今は6.10)
• ビルドの簡潔さ維持を優先。ただ、はやくawait使いたい……
• Kinesis経由で流れてくるデータとの結合テスト難しい
• IoTのE2Eテスト……
• ほとんどロジックは無いので初期はテスト無し😇😇
• 処理の冪等性に気をつける
• 同じデータが繰り返し来たら同じDB結果になるようにする
• LambdaはApexで操作
• マネジメントコンソール?御冗談を……
• Serverless Frameworkは主語大きくてちょっと気に入らなかった時期(若かった)
• とにかくlightweightなツールという印象で採用決定
• 当時はLambda一個ずつApex projectもGit repoも個別⇒つらかった
29. リアルタイムでなんでもはできない
• Kinesis Streams + AWS Lambda + DynamoDB
• シンプルなことはシンプルに実現可能
• できることとできないことがある
• 実現しやすいことと実現しづらいことがある
• 素直な逐次処理以外は基本的に難しいor面倒or高価
• 一定の範囲の直近データを扱うのはDynamoDBに聞かないといけない
• Kinesis Streamsから呼ばれる度に直近データを取りに行くと必要性能
増えまくってつらい
• Redis等の併用も考えた方が良い(が結局まだ採用していない)
38. Lambdaの実行時間と割り当てメモリ量
• AWS Lambdaへの「割り当てメモリ量」
• 実際には「メモリ量+CPU速度」を確保するパラメータ
• 右から左に投げる簡単な処理にメモリは要らないね!
⇒ 128MBとかに下げるとCPU速度も落とされて実行時間が延びる
• ログにしか出ない実際のメモリ消費量+単体の実行時間を元に、調整
していく必要がある
• 基本的に暗黙の再処理が許される制約なのだから、クラウド側
で過去実績を元に推測したりうまくやってほしい……
39. Kinesis StreamsのPartition Key
• Kinesis StreamsからLambdaへのデータ送信
• 決まった量ごとにLambdaに渡される
⇒ Lambdaの処理能力が足りなくなると詰まる
• Lambdaの同時実行数を増やしたい
⇒ Kinesis StreamsのShard数(パイプの本数)を増やす必要がある
• Kinesis StreamsのShard数を増やせば良い
(2倍/半分にするのはコンパネからぽちぽちできる)
43. コストとの闘い
• コスト管理
• DynamoDB Auto Scalingは銀の弾丸では無い(金の弾丸にはなる💸💸)
• 小さな案件でもKinesis Streamsの月1500円が地味にかさむ……
• 重要:
サーバーレスだからと言ってクラウド費用が安いとは限らない
44. 気になっていること
• ストリーミング分析サービス
• AWS Kinesis Analytics
• Azure Stream Analytics
• 基本的な設計の再見直し
• DynamoDB以外のデータストア(RDBやRedis等)
• Azure Durable Functionsのようなステートを持つFaaS
46. 【PR】Internet Week 2017
• Internet Weekとは?
• 「インターネットに関する技術の研究・開発、 構築・運用・サービス
に関わる人々が一堂に会し、 主にインターネットの基盤技術の基礎知
識や最新動向を学び、 議論し、理解と交流を深めるためのイベント」
• 11月28日~12月1日
• 11月29日
「S7 IoTもおまかせ! サーバーレスで変わるインフラとの関わり方」
• Microsoft吉田パクえ氏、オルターブース松村氏、JPNE石田氏、仲山
• ServerlessConfとはまた違った視点からのイベント
• https://www.nic.ad.jp/iw2017/program/s07/
47. 【PR】We’re hiring!!!!
• WHEREではエンジニアを募集中です!
• サーバーレスなIoTプラットフォーム基盤の開発メンバー
• サーバーフルなオンプレ向けシステムの開発メンバー
• お仕事楽しいめう
• BLEメッシュネットワークとサーバーレスという先端技術の活用最先端
• 社内の超優秀なハードウェアエンジニアが作り出す様々なデバイスと
の連携
• 様々なセンサー等とクラウドの組み合わせによるソリューションの
開発・実現
• 興味ある方は @nekoruri までご連絡ください!