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
【IoT-Tech Meetup #6】サーバーレスで始める IoTデータパイプラインとファン...
Search
SORACOM
PRO
October 24, 2023
Technology
0
1.4k
【IoT-Tech Meetup #6】サーバーレスで始める IoTデータパイプラインとファンアウトのアーキテクチャー
2023年10月24日開催『
IoT-Tech Meetup 第6回【IoT × サーバーレス入門】
』で、ソラコム小梁川(koya)が発表した資料です。
SORACOM
PRO
October 24, 2023
Tweet
Share
More Decks by SORACOM
See All by SORACOM
SORACOM のアーキテクチャと挑戦のフィールド
soracom
PRO
1
430
Technical Writing Meetup vol.39
soracom
PRO
2
470
今だからこそ振り返る、生成AIの基礎とこれからの使い道 ― デバイスから生成AIを使うには
soracom
PRO
0
8
【SORACOM UG】SORACOM におけるユーザーコミュニティの重要性とこれから
soracom
PRO
2
360
AWS Lambda と Amazon SQS で「わかった気になれる」FreeRTOS 入門
soracom
PRO
2
480
IoT とは?IoTプラットフォーム「SORACOM」の役割
soracom
PRO
0
320
Technical Writing Meetup vol.35
soracom
PRO
2
240
AI でアップデートする既存テクノロジーと、クラウドエンジニアの生きる道
soracom
PRO
2
910
ロボットアームを遠隔制御の話 & LLMをつかったIoTの話もしたい
soracom
PRO
1
650
Other Decks in Technology
See All in Technology
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
390
私なりのAIのご紹介 [2024年版]
qt_luigi
1
120
生成AIをより賢く エンジニアのための RAG入門 - Oracle AI Jam Session #20
kutsushitaneko
4
220
継続的にアウトカムを生み出し ビジネスにつなげる、 戦略と運営に対するタイミーのQUEST(探求)
zigorou
0
530
Amazon VPC Lattice 最新アップデート紹介 - PrivateLink も似たようなアップデートあったけど違いとは
bigmuramura
0
190
マイクロサービスにおける容易なトランザクション管理に向けて
scalar
0
110
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
170
日本版とグローバル版のモバイルアプリ統合の開発の裏側と今後の展望
miichan
1
130
オプトインカメラ:UWB測位を応用したオプトイン型のカメラ計測
matthewlujp
0
170
バクラクのドキュメント解析技術と実データにおける課題 / layerx-ccc-winter-2024
shimacos
2
1.1k
Postman と API セキュリティ / Postman and API Security
yokawasa
0
200
開発生産性向上! 育成を「改善」と捉えるエンジニア育成戦略
shoota
2
310
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Why Our Code Smells
bkeepers
PRO
335
57k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
Transcript
サーバーレスで始める IoTデータパイプラインと ファンアウトのアーキテクチャー Oct. 24, 2023 IoT-Tech Meetup【IoT × サーバーレス】
株式会社ソラコム ソリューションアーキテクト 小梁川 貴史 #6-2
自己紹介 株式会社ソラコム / ソリューションアーキテクト 小梁川 貴史(こやながわ たかし) 経歴: • SI会社で開発/インフラ設計、構築など幅広く経験
• 電機メーカーで自社サービス、社内共通プラットフォームの開発、運用 • 外資系クラウドのソリューションアーキテクトとして パートナー担当 => IoT スペシャリスト/プロトタイピング
はじめに Severlessという趣旨の回になっておりますが、ここでは広義 にマネージドサービスでサーバを意識しないサービスまでを含 めてお話します。
データパイプライン ソース 受付 処理 収集/蓄積 利用/連携 • IoTにおけるデ バイスやセン サーにあたる
データを生み出 すもの • IoTデータの通 信を受け付けつ 部分と認証や 振り分け • デバイス差分や データフォー マットの version差分な どを吸収し利用 しやすいデータ を作成したり、 データ間にまた がる意味付けを したりする • データの格納、 DBやオブジェ クトストレージ など、アプリ ケーションやシ ステム要件に合 わせた保管 • 可視化(ダッシュ ボード)環境の構 築やWebアプリ ケーション • その他全社データ 統合などのデータ レイク、データ ウェアハウス
データパイプライン 大きな話 • 1つの会社で複数のシステムがあり、全社データベース、データレイ クなどを構築するようなデータパイプライン IoTスコープでの話 • 1つのシステムで複数のデバイスやバージョンのフォーマットを単一 のデータウェアハウスとして構築するようなデータパイプライン 今回の対象
データパイプライン ETL • Extract(抽出) , Transform(変換), Load(書き出し)の頭文字、様々な データソースからデータと取り出し、扱いやすいフォーマットへ変 換するような前処理 データレイク
• 複数(もしくは未確定)用途として、Rawデータのまま保管されて いるようなデータ データウェアハウス • 特定用途へむけた処理済みデータとしてビジネス担当者にとって使 いやすい構造になっているデータ
IoTにおけるプロトコル選択 HTTP • クラウド側からニアリアルタイムで送信したい要件がない。結果整 合でデバイスにコンテキストが通知できれば良いようなユースケー ス。 • HTTPでの定期情報送信のレスポンスに乗せてデバイスへの通知コンテキ ストを返信するようなユースケースでニーズが満たせる MQTT
• クラウドなどからの通知をニアリアルタイムで反映されてほしい データがある。 • MQTTでclientがメッセージ受信用のSubscriberセッションを作成してメッ セージを待ち続ける必要がある
AWS IoT Core を使ったアーキテクチャ例 PoCフェーズ AWS IoT Core Amazon DynamoDB
Amazon OpenSearch Service デバイスの数も少ない、データ変換などの要件もないのでのデータストアと可視化ツールがあ ればよいフェーズ 作り込みや利用サービスも最小限でスタート
AWSを使ったアーキテクチャ例 本番環境 AWS IoT Core Amazon DynamoDB Amazon OpenSearch Service
デバイスの数が増えて、個別/都度の書き込みが非効率になるのストリームデータ処理基盤を追加、 DBに投入する前にデータの構造を変換する必要がでた、、、などをクラウドプラットフォーム側で極力影響 吸収することでデバイス運用を楽にすることができる AWS Lambda Amazon Kinesis Data Firehose Amazon S3 Amazon Kinesis Data Streams
AWSを使ったアーキテクチャ例 本番環境 AWS IoT Core Amazon DynamoDB Amazon OpenSearch Service
デバイスの数が増えて、個別/都度の書き込みが非効率になるのストリームデータ処理基盤を追加、 DBに投入する前にデータの構造を変換する必要がでた、、、などをクラウドプラットフォーム側で極力影響 吸収することでデバイス運用を楽にすることができる AWS Lambda Amazon Kinesis Data Firehose Amazon S3 Amazon Kinesis Data Streams デバイスごとのデータの 差分やフォーマットバー ジョンの差分を吸収する レイヤー 設定変更だけで後段のデ ータ転送先サービスを変 更可能 本構成上インスタンスが 唯一必要なサービス Lambdaの同時起動数な ども加味して マイクロバッチ化
サービスの例 プロトコル/ 認証 業務 ロジック データストア 可視化/分析 Amazon API Gateway
AWS IoT Core Azure Application Gateway Azure IoT Hub API Gateway AWS Lambda Amazon Kinesis AWS IoT Analytics Azure Event Hubs Azure Functions Azure Stream Analytics Cloud Functions Cloud Pub/Sub Cloud Storage BigQuery Firestore Azure Cosmos DB Storage Account Data Lake Storage Gen2 Amazon S3 Amazon DynamoDB Cloud Dataflow
Severless、マネージドサービスのメリット • スケーラビリティの確保 • 使った分(時間や回数)の従量課金 • 非機能要件の大半をクラウドベンダによりかかること が可能 必要なもの、欲しい機能を作れば開始できる!
ファンイン(Fan-in)/ファンアウト(Fan-out) ファンイン • 多数のデバイスからのデータ送信(publisher) から送られてくるデータ が単一のデータ受信者(subscriber)へ送られるようなケース • 先のような多数のデバイスからの単一のデータストアへのデータ収集の ユースケースがファンインにあたります ファンアウト
• 単一のメッセージ配信(publisher)を多数のデバイスが受信者 (subscriber)となるユースケース。 • 例えば、デバイスのアップデート通知など、単一のコンテキストを多数の デバイスに通知するもの
AWS IoT Core MQTT message Broker Chatアプリケーションで考えてみる MQTT message brokerがactiveなセッション(接続済みのsubscriber)を管理、
channel名をtopicで表現することなでそのチャンネルを受信している人へ 単一publish命令をsubscriberへ送信してくれる。 (ただしpub/subのみで実現すると過去ログなどは読めずに接続している感のやり取りのみの表示になります) channel/room1 送信者 受信者
Message BrokerもAWS IoTのごく一部の機能
たとえば同じことをサーバレス構成の WebSocketで実現すると Amazon API Gateway Amazon DynamoDB AWS Lambda AWS
Lambda セッション管理用 接続クライアント を取得してメッセ ージを送る用 セッション管理 = 接続デバイス情 報管理DB connect channel 参加 発言 アクティブな ユーザへPUSH 受信したいチャンネル情報をRESTのパスなどで表現し、 接続情報やchannel情報を管理するDBで管理、メッセージが着信したら そのDBから接続情報を引いて対象のチャンネルに接続しているPUSHする仕組みを 作る必要がある。 送信者 受信者
適材適所 上記例では異なるサービスでファンアウトのアーキテクチャの 例をみていただきましたが、AWS IoTはMQTT通信ということ も含めて大規模通信でスケールし易い、マネージドな領域が多 いことがわかります。 WebSocketでAPI Gatewayをベースに類似のシステムを作成 することができますがその場合には接続情報の管理までユーザ が作る必要があります。
AWSさんの事例を読んで見る 大規模台数のたまごっちへ AWS IoT Jobs で高速かつ高効率にファーム ウェアを配信する方法 https://aws.amazon.com/jp/blogs/news/aws -iot-jobs-for-bandai-tamagotchi/
ファンアウトのまとめ 一斉配信(ファンアウト)の使い所を考えましょう。 AWS IoT Core , Azure IoT Hub などにはDevice
shadow, Device twinなどを使い 1:1 での管理、通知の仕組みなどの検 討をしましょう。 一斉通知は配信側やネットワーク側にも負荷が重く、サーバレ スとはいえアカウントリミットなどにも当たりやすい構成にな るので回避できる、気がつける仕組みも重要です。
•AWS LambdaではRDSを使わない方が良い •RDS Proxyで対応可能に アンチパターンがなくなることもある • Kinesis Data Streamなどを挟む場合はshard数などの兼ね合いで 必要セッション数がもとから小さい場合もあります。
おすすめドキュメント AWS IoT CoreのMQTTトピックの設計 https://d1.awsstatic.com/whitepapers/ja_JP/Designing_MQTT_Topics_for_AWS_IoT_Core.pdf 古いですが、2017年のre:Invent AWS IoTで1つのメッセージを大量デバイスへ配信するためには の解説。 One
message to a Million Things https://www.slideshare.net/AmazonWebServices/iot308one-message-to-a-million-things-done-in-60- seconds-with-aws-iot
IoT の「つなぐ」を簡単に You Create. We Connect.