IoTレイヤー — テクノロジースタック

目的

IoTレイヤーは、データプレーンサービスの基盤となるテクノロジースタックを定義します。各データプレーンサービスはオープンソースのIoTプラットフォームをラップし、FlexGalaxy APIの規約、マルチテナントアカウントスコーピング、およびアクセス制御を追加します。

これは、アイデンティティプレーンがDotIDを包括サービスとして定義し、KeycloakがOIDCプロバイダーとして基盤を担う構造と同様です。

テクノロジーマップ

データプレーンサービス

IoTテクノロジー

役割

DeviceAdmin

ThingsBoard CE

デバイスレジストリ、接続性、テレメトリ取り込み、アラート

ThingIO

Apache StreamPipes

データ処理、分析パイプライン、ダッシュボード、ウィジェット

OTAForge

Eclipse hawkBit

OTAアップデート、アーティファクト配信、ポリシー駆動型ロールアウト

アーキテクチャ概要

                         FlexGalaxy.AI Platform
┌───────────────────────────────────────────────────────────────┐
│                                                               │
│  ┌─────────────┐  ┌──────────────┐  ┌───────────────────┐    │
│  │   DotID      │  │ Policy       │  │  Equator / Marie  │    │
│  │  (Identity)  │  │ Service      │  │  (Spatial)        │    │
│  └──────┬───────┘  └──────┬───────┘  └────────┬──────────┘    │
│         │                 │                    │               │
│  ┌──────▼─────────────────▼────────────────────▼──────────┐   │
│  │              Provisioning Service                       │   │
│  │  Device enrollment, credential issuance, tenant routing │   │
│  └──────┬─────────────────┬────────────────────┬──────────┘   │
│         │                 │                    │               │
│  ┌──────▼──────┐   ┌─────▼──────┐   ┌────────▼─────────┐    │
│  │ ThingsBoard │   │  hawkBit   │   │   StreamPipes    │    │
│  │  CE         │   │            │   │                  │    │
│  │ Device mgmt │   │ OTA update │   │ Stream analytics │    │
│  │ Telemetry   │   │ Artifact   │   │ ML inference     │    │
│  │ Rule engine │   │ delivery   │   │ IIoT processing  │    │
│  └──────┬──────┘   └─────┬──────┘   └────────▲─────────┘    │
│         │                │                    │               │
│         │                │                    │               │
│  ┌──────▼────────────────┘                    │               │
│  │  Kafka Cluster A                           │               │
│  │  (ThingsBoard MSK)                         │               │
│  │  Telemetry, device events, commands        │               │
│  └────────────────┬───────────────────────────┘               │
│                   │ cross-cluster replication                  │
│  ┌────────────────▼───────────────────────────────────────┐   │
│  │  Kafka Cluster B                                        │   │
│  │  (StreamPipes MSK)                                      │   │
│  │  Analytics pipelines, processed results, sink outputs   │   │
│  └────────────────────────────────────────────────────────┘   │
│                                                               │
└───────────────────────────────────────────────────────────────┘
          │                 │
     MQTT / CoAP       DDI (HTTP)
     LwM2M / HTTP      polling
          │                 │
    ┌─────▼─────────────────▼───────┐
    │        Edge Device             │
    │  ├── MQTT client (ThingsBoard) │
    │  ├── Hara (polls OTAForge DDI) │
    │  └── Local edge planner        │
    └────────────────────────────────┘

統合トポロジー

ThingsBoard CE → DeviceAdmin

DeviceAdminはThingsBoard CEをラップし、プラットフォームの統合デバイス管理インターフェースを提供します。ThingsBoardは内部サービスとして稼働し、開発者が直接操作することはありません。

DeviceAdminが公開する機能:

  • デバイス登録(プロビジョニングサービスに委譲)

  • アラート監視(ThingsBoard ルールエンジンのアラートを表示)

  • OTAステータス表示(hawkBitのデプロイ状態を読み取り)

ThingsBoardはEKS上でマイクロサービスモードで動作し、他のプラットフォームサービスと同じKubernetesクラスターを共有します。

Apache StreamPipes → ThingIO

ThingIOはApache StreamPipesをラップし、アカウントスコープのデータ処理とダッシュボードの可視化を提供します。アプリケーション(WES、ClearJanitor)はAPIを通じてカスタムダッシュボード、ウィジェット、データパイプラインを登録し、ThingIO React SDK(@flexgalaxy/thingIO-widgets)を使用して埋め込みます。

ThingIOが公開する機能:

  • ダッシュボード、ウィジェット、パイプライン管理用のREST API

  • アプリケーションにビジュアライゼーションを埋め込むためのReactコンポーネントライブラリ

  • データ処理パイプライン(パターン検出、ML推論、集約)

  • 登録済みデバイスのテレメトリからのデータ取得

ThingsBoardとStreamPipesはKafkaを介して接続されます — ThingsBoard ルールエンジンがKafkaクラスターAにパブリッシュし、クロスクラスターレプリケーションによりテレメトリがKafkaクラスターBに配信され、StreamPipesアダプターがそれを消費します。

Eclipse hawkBit → OTAForge

OTAForgeはEclipse hawkBitをラップし、CI/CD統合とポリシー駆動型ロールアウト自動化によるOTAアーティファクト管理を提供します。

OTAForgeが公開する機能:

  • アーティファクト公開(ファームウェア、マップ、設定、MLモデル、証明書)

  • ディストリビューションセットの構成

  • ポリシー駆動型ロールアウト自動化(OTAForgeがDeviceAdminにデバイス状態をポーリングし、ポリシーを評価し、ロールアウトを自動作成)

  • CI/CD統合(Jenkins、GitHub Actions)用のアクセスキー(AK/SK)

  • プロキシされたDDIエンドポイント — デバイスはhawkBitではなくOTAForgeをポーリング

  • Webベースのアーティファクト管理用ディストリビューターポータル

イベントバックボーンとしてのKafka

Apache Kafkaは、すべてのIoTコンポーネントを接続する中央イベントバスとして機能します。プラットフォームは、ThingsBoardの高スループットテレメトリをStreamPipesの分析ワークロードから分離するために、2つの独立したMSKクラスターを使用します。

Kafkaクラスター A(ThingsBoard)

フロー

トピックパターン

説明

ThingsBoard → プラットフォーム

tb.telemetry.*

デバイスからの生テレメトリ

ThingsBoard → プラットフォーム

tb.events.*

デバイスライフサイクルイベント(接続、切断、アラーム)

プラットフォーム → ThingsBoard

platform.commands.*

デバイスコマンドおよびRPCコール

Kafkaクラスター B(StreamPipes)

フロー

トピックパターン

説明

クラスターAからレプリケーション

tb.telemetry.*

分析処理用にレプリケーションされたテレメトリ

StreamPipes → プラットフォーム

sp.analytics.*

分析結果とアラート

StreamPipes → Sinks

sp.sink.*

外部宛先への処理済みデータ

クラスターを分離する理由

懸念事項

クラスター分離

障害分離

ThingsBoardのテレメトリ取り込みはStreamPipesのパイプライン障害の影響を受けない

スケーリングの独立性

テレメトリの量は分析ワークロードとは異なるスケーリングが必要

保持ポリシー

生テレメトリと分析結果では異なる保持期間が必要な場合がある

セキュリティ境界

ThingsBoardクラスターは生のデバイスデータを含み、StreamPipesクラスターは処理済み/エンリッチされたデータを含む

クロスクラスターレプリケーション(Amazon MSK ReplicatorまたはMirrorMaker 2)により、クラスターAからクラスターBへ選択されたトピックが配信されます。

プロキシされたDDI

デバイスはOTAForgeのDDI(Device Domain Interface)エンドポイントをポーリングし、hawkBitのDDIに直接アクセスすることはありません。OTAForgeはテナントコンテキストの検証、レート制限の適用、およびすべてのインタラクションのログ記録を行った後、hawkBitにプロキシします。

Edge Device ──► OTAForge DDI Proxy ──► hawkBit DDI
  (Hara)         (tenant validation,     (deployment actions,
                  audit logging,          artifact downloads)
                  rate limiting)

クレデンシャルモデル

デバイスはプロビジョニング時に発行されたクレデンシャルを保持し、プロビジョニングシナリオにより異なります:

クレデンシャル

発行者

目的

プロビジョニングシナリオ

MQTTアクセストークン

ThingsBoard

テレメトリ取り込みとデバイス管理

全シナリオ

DDIセキュリティトークン

hawkBit(OTAForgeプロキシ経由)

OTAアップデートポーリング

全シナリオ

M2M OIDCクライアント

DotID (Keycloak)

FlexGalaxyビジネスAPIアクセス

組立および現場のみ

X.509証明書

製造元CA

登録IDの証明

工場および組立(ロボット)

MQTTクレデンシャルはIoTデータプレーン用、DotIDクレデンシャルはプラットフォームAPIプレーン用です。DDIトークンはOTAアップデートポーリング用です。工場、組立、現場の各シナリオにおけるクレデンシャル発行フローの全体像については、デバイスプロビジョニングパターンを参照してください。

デプロイメント

コンポーネント

テクノロジー

デプロイメント

ライセンス

ThingsBoard CE

Java (Spring)

EKS (Helm)

Apache 2.0

Apache StreamPipes

Java

EKS (Helm)

Apache 2.0

Eclipse hawkBit

Java (Spring Boot)

EKS (Helm)

EPL 2.0

Kafkaクラスター A

Apache Kafka

Amazon MSK(ThingsBoard)

Apache 2.0

Kafkaクラスター B

Apache Kafka

Amazon MSK(StreamPipes)

Apache 2.0

PostgreSQL

Amazon RDS

PostgreSQL

Cassandra / TimescaleDB

Amazon KeyspacesまたはEKS

Apache 2.0 / Timescale

すべてのコンポーネントは共有EKSクラスター内の分離されたネームスペースで実行されます。ThingsBoardのマイクロサービスモードには専用のKafkaクラスター(クラスターA)が必要です。StreamPipesはテレメトリトピックのクロスクラスターレプリケーションを備えた別のKafkaクラスター(クラスターB)を使用します。

検討された代替案

代替案

カテゴリ

不採用の理由

Eclipse Ditto

デジタルツインフレームワーク

テレメトリストレージなし、ダッシュボードなし、ルールエンジンなし — 代替ではなく補完的

Eclipse Kura

エッジゲートウェイ

ゲートウェイ専用であり、クラウドプラットフォームではない

EMQX

MQTTブローカー

ブローカーのみ — デバイス管理、ストレージ、ルールエンジンが別途必要

Magistrala(旧Mainflux)

IoTプラットフォーム

コミュニティが小規模、統合が少ない、本番実績が少ない

AWS IoT Core

マネージドIoT

ベンダーロックイン、セルフホスト不可、APaaS原則に反する