広域データ収集・解析プログラム開発⽀援ソフトウェア

SINETStreamの概要，アップデート
https://sinetstream.net/
⽵房 あつ⼦

国⽴情報学研究所 クラウド基盤研究開発センター
NII学術情報基盤オープンフォーラム クラウドトラック2
2021年7⽉7⽇（⽔)© 2021 National Institute of Informatics

1

SINET広域データ収集基盤 (モバイルSINET)• 超⾼速学術ネットワークSINETにモバイル機能を搭載• 隔離されたモバイルネットワークをSINETに直結してセキュアなネットワーク環境（VPN）を研究プロジェクトごとに提供• 多様なデータ処理環境との連携で最先端のIoT系研究を⽀援
4+

'%+e "OQIfU;)#,<EN8`C6/.0S:\Xa
2-3*86?@B;TK

A+

""

#,</)%$&86
 

"

<'.1

" """" 5 MV !
0(;7Y]L=[Z_,DW

G.

34>PH7© 2021 National Institute of Informatics"=  F1
@5?K :+>9=0,< !=2^9R3Z

AJdb*

3Z&($!cg3

2

SINETStreamでIoTアプリ開発⽀援• IoTアプリ開発のためのソフトウェアライブラリを提供• Java/Python版に加え，Android版の共通APIを提供• バックエンドのメッセージングシステムを意識せずIoTアプリを容易に開発可能

⻘字は新機能• データの収集・蓄積・解析に必要な機能を提供• 安全確実なデータ収集，認証・認可，暗号化，メトリクス収集，Androidセンサ情報収集アプリ
データ解析
プログラム
解析
プログラム

ストレージ

© 2021 National Institute of Informatics

モバイルSINET+SINETStreamで，安全・確実なIoTデータの収集・蓄積・解析が可能に
解析
プログラム(オフライン)3活⽤事例１: オンライン動画像解析• モバイル網とクラウドの計算資源をSINETで安全に接続• クラウドでビッグデータの収集と⾼速リアルタイムデータ解析>-)CI!9D!

GPU or HPC nodes&@
YOLO v3
OpenPose
7G

Storage
Data

Data#0?A2+
HPC nodes

Kafka

3/:=>-*CI!9D

Storage
Data

Data

Data

YOLOv3.4,8B

"F!
SINET
SIMOpenPose.<EH$#05%'(1;6,YOLO v3 (https://pjreddie.com/darknet/yolo/)
OpenPose (https://github.com/CMU-Perceptual-Computing-Lab/openpose)© 2021 National Institute of Informatics

 

4

活⽤事例２: 室内環境監視ライブデモ&%#54,6=:#78!2;AWS (Cloud)    Temperature
Humidity  Temperature& Humidity
Sensor

S3
GitHub Pages

.3/!
$('<0)-"&%*&%

>1?1 +-"&%) "6=:

>1

>1?1&%#
94© 2021 National Institute of Informatics?1

https://www.sinetstream.net/docs/livedemo/livedemo.html

5活⽤事例３: ライフサイエンス• 町澤昌宏先⽣，近堂徹先⽣[広島⼤学]他
⾼次ライフサイエンス情報の安全な収集のためSINETStreamを活⽤
モバイルSINET + SINETStreamのセキュリティ機能を活⽤ #$" +
.*-#$")"#+$'近堂徹先⽣＠広島⼤ 提供© 2021 National Institute of Informatics

&%
!

'

"#&%
!

%

',/!&(6活⽤事例４: スマホセンサデータ解析• スマートフォン（Android）のセンサからのデータ収集・蓄積・可視化• 多種センサ情報の収集を⽀援するソフトウェア，センサアプリも提供
)$,B.6<8=5
KibanaElasticsearch  FAG1!+#"

'&   !++#">@;D(%*HG1
E1
7C1

,3

© 2021 National Institute of Informatics

9-/04?:27

SINETStream: IoT開発⽀援ライブラリ• TopicベースPub-Sub型⾮同期メッセージングモデル

センサ側WriterSINETStream Architecture© 2021 National Institute of Informatics

WriterBrokerTopic B

Pub-Sub
ServiceService
Topic B

WriterReaderReader

MQTT
Kafka

Topic A:
W-API

• プログラム可搬性のため，各パラメータは設定ファイルで定義可能

W-API• ⾮同期︓⾼スループット

Messages
Topic A

サーバ側
R-API

• 同期︓低遅延Analysis
App.

R-API

• 同期／⾮同期 APIを提供

NetworkApp. Developer

W-API• バックエンドシステムの差異を隠蔽する簡易な共通APIAPI• SINETStream APIの提供 App. Developer

SensorApp.

API

SINETStream Overview

Storage/ DB

StreamFramework

8

SINETStreamの機能• セキュリティNew• 認証・認可• 通信暗号化（TLS）• データ暗号化（データは暗号化されたままサーバに格納）• メトリクス収集• 通信負荷をかけず収集可能• メッセージ数/秒，通信スループット，エラーレート• 多種ブローカ対応• SPI (Service Provider Interface)を提供し，プラグイン実装が可能© 2021 National Institute of Informatics

ユーザアプリケーションプログラム

SINETStream Sync/Async API
シリアライザデシリアライザメトリクス収集

メタデータ埋込

メタデータ取出

設定ファイル
読み込み

暗号化

復号

プラグイン管理SINETStream SPI
Kafka プラグイン

MQTT プラグイン

Apache Kafka Client

Eclipse Paho Client
9

New

SINETStream Android版• コアライブラリ• 基本的にJava/Python版と同等の機能を提供• ⾮同期APIのみ• MQTTブローカのみ• ヘルパーライブラリ• Android端末の多種センサのデータ収集・加⼯を⽀援• センサコントローラ• センサタイプ⼀覧提供• センサデータ送出間隔設定

ユーザアプリケーションプログラム
publishSINETStream Android ヘルパーライブラリ

SINETStream Android Helper API

subscribe

SINETStream Android コアライブラリ

SINETStream Android Async API

センサコントローラ

シリアライザ

デシリア
ライザ

メトリクス
収集

センササービス

メタデータ
埋込

メタデータ
取出

設定ファイ
ル読み込み

暗号化

復号

イベント管理Android System

JSON変換センサ管理

Eclipse Paho Client
publishSensor

subscribe

MQTT-based Broker• センササービス• 各種センサデータを取得，蓄積し，指定間隔でJSON形式に加⼯して提供© 2021 National Institute of Informatics

10

New

SINETStream Android版アプリ• Android端末を⽤いたIoTアプリシステム構築を⽀援するため，コアライブラリ，ヘルパーライブラリでアプリを開発• 研究・教育⽤途での利⽤を⽀援するチュートリアルも開発
テキスト送受信アプリ
SINETStream Android Echo(Echo)

センサ情報収集アプリ
SINETStream Android
Sensor Publisher (Sensor)

ダウンロードと簡単な設定のみで利⽤可能© 2021 National Institute of Informatics

11

テキスト送受信アプリEchoの状態遷移
ホーム画⾯で
アプリ起動

起動画⾯を表⽰© 2021 National Institute of Informatics

初期画⾯

設定画⾯でパラメータ設定（トピック名，MQTTブローカアドレス，ポート番号，他）

主画⾯でテキスト送受信

12

Writer API

hello world!

MQTT
BrokerReader API

主画⾯で
1. テキストを⼊⼒
2. SENDを押す
3. ブローカに送信
4. ブローカから受信
5. 受信したテキストを主画⾯に表⽰

SINETStream Android

テキスト送受信アプリEchoの主画⾯

SINETStreamで授受されるメッセージに含まれる，トピック名，タイムスタンプも出⼒される

IoTシステムのデータ収集の基本的な振る舞いが確認できる© 2021 National Institute of Informatics

13

センサ情報収集アプリ Sensor• Android端末の各種センサ情報を収集するアプリ• IoTシステムのセンサプログラ
ムとして利⽤可能• Echoとの違い• [設定画⾯]でSensor固有のパラメータも設定可能• センサデータ送出間隔• ユーザ定義情報• [主画⾯]で利⽤するセンサタイ
プ指定，RUNで送出開始• Writer APIの実装のみ© 2021 National Institute of Informatics

主画⾯

稼働確認

センサ指定
RUN/STOP

統計情報

統計情報
リセット
14

Sensor⽤チュートリアルの構成• Android端末を⽤いたIoTアプリシステム構築を体験できる• システム構築を容易にするため，センサデータの受信，蓄積，可視化を⾏うサーバ⽤Dockerコンテナイメージを開発• ⼿順︓サーバ設定àAndroid端末でアプリ設定，実⾏à結果確認
Sensor App
SINETStream
Core

Tutorial Docker Container
Message Broker

Message Broker

Object Storage

Mosquitto

Kafka

MinIO

SINETStream
HelperWeb Browser
Kafka Connect 1

AndroidSensors

Android端末© 2021 National Institute of Informatics

Kafka Connect 2

汎⽤性を重視し，OSSを組み合わせて実装

サーバnginx
Web Server

JavaScript
Chart.jsVisualization

出⼒⽤端末15

Sensorアプリチュートリアルデモ•あ© 2021 National Institute of Informatics

出⼒⽤端末画⾯16

まとめ• SINETStream 広域データ収集・解析プログラム開発⽀援ソフトウェア• IoTアプリ開発のための共通API（Java/Python/Android）• データの収集・蓄積・解析に必要な機能＋Androidアプリを提供• SINETStreamの開発状況• 2019年12⽉ v1.0 - Python, Java APIを提供• 2020年3⽉ v1.1 - タイムスタンプ機能，プラグイン開発ガイド• 2020年6⽉ v1.2 - ⾮同期API，SINETStreamサーバ設定ガイド• 2020年7⽉ v1.3 - メトリクス収集機能• 2020年10⽉ v1.4 - Android版（コア／ヘルパライブラリ）• 2021年3⽉ v1.5 - Android版アプリEcho/Sensor，チュートリアル 開発不要︕
すぐに使える︕

SINETStream公開中︓https://www.sinetstream.net/• オープンソース（Apache License v2.0），チュートリアル，ライブデモあり• ユーザ登録をお願いいたします（MLへの登録，最新情報案内）© 2021 National Institute of Informatics

17

SINETStreamユーザーズミーティング
Day3 | 7/8(⽊) 10:00SINETStreamを使ってみた，こんなふうに使ってみたい，ざっくばらんに情報交換（配信なし，後⽇公開なし）
奮ってご参加ください︕© 2021 National Institute of Informatics

18