Upgrade to Pro — share decks privately, control downloads, hide ads and more …

新サービス 「SORACOM Orbit」- IoT通信経路でデバイスとクラウドの差分を吸収 - / SORACOM Orbit

新サービス 「SORACOM Orbit」- IoT通信経路でデバイスとクラウドの差分を吸収 - / SORACOM Orbit

株式会社ソラコム主催 SORACOM Discovery 2020 ONLINEにて発表された新サービス、IoTデバイスとクラウド間の通信経路上で データ処理プログラムを実行できる​「SORACOM Orbit」​の詳細をご説明しています。

SORACOM
PRO

July 14, 2020
Tweet

More Decks by SORACOM

Other Decks in Technology

Transcript

  1. インライン プロセッシング サービス
    SORACOM Orbit
    IoT デバイスとクラウドの間の通信経路上で双方向のデータ処理を実現
    株式会社ソラコム
    プリンシパル ソフトウェア エンジニア
    小熊 崇 @ogu

    View Slide

  2. 目次
    • IoT データ通信の困りごと:データフォーマットの不一致
    • SORACOM Orbit とは
    • SORACOM Orbit の使い方
    • デモ
    • まとめ

    View Slide

  3. IoT データ通信の困りごと
    • データフォーマットの不一致
    • デバイスはバイナリデータを送りたい
    でもサーバーは JSON で受け取りたい
    どちらかのプログラムを変更できればフォーマットを一致させられるけど…
    どちらの変更も難しい場合があります。

    View Slide

  4. SORACOM Air バイナリパーサー機能
    σʔλసૹࢧԉ
    403"$0.#FBN
    Ϋϥ΢υϦιʔεΞμϓλ
    403"$0.'VOOFM
    σʔλऩूɾ஝ੵ
    403"$0.)BSWFTU %BUB
    *P5޲͚σʔλ௨৴αʔϏε
    403"$0."JS
    όΠφϦύʔαʔػೳ
    σʔλΛύʔε
    σʔλॲཧ
    ʢσίʔυɺ࢛ଇԋࢉʣ
    ΧελϜϑΥʔϚοτΛ
    ෇༩ͯ͠ૹ৴
    {
    "battery": 54,
    "latitude": 35.652748,
    "longitude": 139.750827
    }
    όΠφϦσʔλΛૹ৴
    0x1A2B...
    Ϋϥ΢υͰॲཧ͠΍͍͢
    ϑΥʔϚοτ +40/
    ΁
    σʔλαΠζΛ࡟ݮ
    Ϋϥ΢υϑΝϯΫγϣϯ
    403"$0.'VOL

    View Slide

  5. より高度な変換処理がしたい!
    • デバイスが複数種類のデータを送っ
    てくるので、ヘッダーなどを見て解釈
    を変えたい
    • デバイスが送ってくる CSV を JSON
    に変換したい
    • 下り方向のデータも変換したい

    View Slide

  6. 回避策
    SORACOM Funk 経由で AWS Lambda を呼び出して処理
    ユーザーコード
    (変換処理)
    AWS
    Lambda
    SORACOM
    Funk
    IoT デバイス
    サーバー
    • いろいろなプログラミング言語を使える
    • 高度な処理を自由に書ける
    • ダウンリンクも処理できる

    View Slide

  7. Harvest や Lagoon を使いたい!
    • Harvest や Lagoon を使ってデータを
    確認したいけど、Harvest にデータを
    入れる前にちょっとした変換処理を行
    いたい
    • センサーデータの単位の変換
    • SIM のメタデータを追加

    View Slide

  8. 回避策
    SORACOM Funk 経由で AWS Lambda を呼び出して処理
    その後 Inventory を使って Harvest にデータ投入
    SORACOM
    Inventory
    SORACOM
    Funk
    SORACOM
    Harvest
    SORACOM
    Lagoon
    AWS
    Lambda
    IoT デバイス
    外部にサーバー等を用意しなくてすむ
    お手軽さが Harvest / Lagoon の良さですが、
    これだとちょっと大変…
    ユーザーコード
    (変換処理)

    View Slide

  9. SORACOM Orbit がお悩みを解決!
    SORACOM プラットフォームの通信経路上で、お客様が定義したデータ変換処理プログラ
    ムを実行
    IoT デバイス Unified
    Endpoint
    ユーザーコード
    (変換処理)
    SORACOM Funk
    SORACOM Funnel
    SORACOM Beam
    SORACOM Orbit
    SORACOM
    Lagoon
    SORACOM
    Harvest

    View Slide

  10. SORACOM Orbit のメリット
    • バイナリ以外の任意のデータを処理できる
    • 外部に変換サーバー等を用意しなくて良い
    • Harvest 等に連携しやすい
    • ダウンリンクのデータにも処理を行える
    • SIM のメタデータを利用可能

    View Slide

  11. 変換プログラムの書き方
    • 変換プログラムは WebAssembly (WASM) のモジュー
    ルにコンパイルしてアップロード
    • 詳しくは
    SORACOM Orbit 開発者ガイド
    https://dev.soracom.io/jp/orbit/what-is-orbit/

    View Slide

  12. WebAssembly (WASM) とは?
    W3C が策定した、仮想マシンと命令セットの仕様
    Web ブラウザ上でアプリケーションをより高速に
    実行するために作られた
    → 汎用的なので Web ブラウザだけでなく
    一般的な処理のために利用可能

    View Slide

  13. WASM モジュールとは?
    WASM 処理系で実行可能なファイル
    一般的には JIT でネイティブコードに変換後
    実行されるので高速
    Web ブラウザでの実行を想定してセキュリティも考慮

    View Slide

  14. WASM 対応言語は?
    様々な言語が WASM モジュールの出力に対応
    https://github.com/appcypher/awesome-wasm-langs
    "Language-agnostic"

    View Slide

  15. WASM 対応言語は?
    注意点:
    Orbit で実行可能なのは Non-Web Embedding 環境向けに出力された形式。Standalone などとも呼ばれる。
    JS 環境 / Web 環境向けの出力にのみ対応している言語がまだ一般的。
    WASI 環境向けに出力した WASM モジュールは一部実行可能。(外界と作用するための機能は使えない)
    WASM
    モジュール
    Node.js /
    Web ブラウザ
    WASM
    モジュール
    Windows /
    macOS / Linux
    WASM
    モジュール
    独自ホスティング
    環境
    JS 環境 /
    Web 環境
    WASI 環境 Non-Web
    Embedding 環境
    SORACOM Orbit

    View Slide

  16. SDK 提供言語
    • AssemblyScript
    • TypeScript のサブセット
    • Rust
    • WASM との親和性の高い言語
    • C/C++
    • Emscripten というツールセットで WASM に対応
    ※ 2020年7月現在

    View Slide

  17. サンプルプログラム(C/C++)
    SORACOM
    Lagoon
    SORACOM
    Harvest
    {
    "lat":35.000000,
    "lon":139.000000,
    "bat":3,
    "rs":4,
    "temp":16.0,
    "humi":32.4,
    "x":0.0,
    "y":-64.0,
    "z":-960.0,
    "type":0
    }
    ユーザーコード
    (変換処理)
    SORACOM
    Orbit
    {
    "lat":35.000000,
    "lon":139.000000,
    "bat":3,
    "rs":4,
    "temp":16.0,
    "humi":32.4,
    "x":0.0,
    "y":-64.0,
    "z":-960.0,
    "type":0,
    "name":"oguのGPSマルチユニット",
    "imsi":"44010xxxxxxxxxx",
    "inside_area":1,
    "distance":0.123487
    }
    GPS マルチユニット
    SORACOM Edition
    SIM のタグなどの
    メタ情報

    View Slide

  18. サンプルプログラム(C/C++)

    View Slide

  19. サンプルプログラムのビルド

    View Slide

  20. WASM モジュールのアップロード
    モジュールのアップロード先は Soralet(ソラレット)
    IoT デバイス Unified
    Endpoint
    ユーザーコード
    (変換処理)
    SORACOM Orbit
    ID: hello-soralet
    v1
    v2

    View Slide

  21. WASM モジュールのアップロード方法
    • ユーザーコンソール
    • CLI
    • Visual Studio Code Extension
    https://dev.soracom.io/jp/orbit/deployment/

    View Slide

  22. WASM モジュールのアップロードとテスト実行

    View Slide

  23. WASM モジュールの動作確認(ユーザーコンソール)

    View Slide

  24. Funk/Orbit/バイナリパーサー 機能比較
    SORACOM Funk + AWS Lambda SORACOM Orbit バイナリパーサー
    対応する通信 SORACOM Air (SIM, Sigfox, LoRa
    WAN, SMS, USSD)
    SORACOM Air(SIM のみ)※1 SORACOM Air (SIM, Sigfox,
    LoRa WAN, SMS, USSD)
    対応言語 Java, Go, PowerShell, Node.js,
    C#, Python, Ruby, Docker, 独自
    Runtime
    AssemblyScript, Rust,
    C/C++ ※2
    独自 DSL
    ダウンリンク対応 Yes Yes No
    他の SORACOM
    サービスとの連携
    ※3 Yes Yes
    処理中のインター
    ネットアクセス
    Yes No No
    ※1 - 2020 年 7 月現在。今後 Sigfox、LoRaWAN 等にも順次対応予定
    ※2 - 2020 年 7 月現在。今後対応言語拡充予定
    ※3 - SORACOM Inventory のデバイスとして Harvest にデータを投入することは可能

    View Slide

  25. フィードバックお待ちしております
    • お使いいただいた感想
    • 機能要望
    • 技術的質問
    :
    なんでも結構です!
    SORACOM プラットフォームは
    皆様からのフィードバックを元に
    成長・進化していきます!

    View Slide

  26. 世界中のヒトとモノをつなげ
    共鳴する社会へ

    View Slide