Azure IoT Central のアーキテクチャ
IoT Central は、IoT シナリオをすばやく評価できる既製の環境です。 これはサービスとしてのアプリケーション プラットフォーム (aPaaS) IoT ソリューションであり、主なインターフェイスは Web UI です。 また、プログラムからアプリケーションを操作できるようにする REST API もあります。
この記事では、IoT Central ソリューションのアーキテクチャにおける重要な要素の概要について説明します。
IoT Central アプリケーションの主な機能は次のとおりです。
デバイスの管理
IoT Central では、ソリューションにデータを送信する一連の IoT デバイスを管理できます。 たとえば、次のようなことができます。
- アプリケーションに接続できるデバイスと、それらがどのように認証するかを制御します。
- アプリケーションに接続できるデバイスの種類は、デバイス テンプレートを使用して定義します。
- 接続されるデバイスに対してプロパティを設定するかコマンドを呼び出すことでデバイスを管理します。 たとえば、サーモスタット デバイスの目標温度プロパティを設定したり、デバイスをトリガーするコマンドを呼び出して、ファームウェアを更新したりします。 プロパティを設定して、以下でコマンドを呼び出すことができます。
- 顧客の住所や最後のサービスの日付などのデバイス メタデータを管理します。
データを表示して分析する
IoT Central アプリケーションでは、個々のデバイスのデータや、複数のデバイスからの集計データを表示し、分析することができます。
- マッピングを使用し、複雑なデバイス テレメトリを IoT Central 内部の構造化データに変換します。
- "デバイス テンプレート" を使用して、特定の種類の個々のデバイスについてカスタム ビューを定義します。 たとえば、個々のサーモスタットの温度を長時間にわたってプロットしたり、配送トラックの実際の場所を表示したりできます。
- 組み込みの分析を使用して、複数のデバイスの集計データを表示します。 たとえば、複数の小売店にわたる全体的混雑状況を表示したり、混雑率が最大の店舗や最小の店舗を識別したりすることができます。
- カスタム ダッシュボードを作成して、デバイスの管理に役立てます。 たとえば、デバイス テレメトリを表示するためのマップ、タイル、グラフを追加できます。
ソリューションをセキュリティで保護する
IoT Central では、次の領域でセキュリティを構成および管理できます。
- アプリケーションへのユーザー アクセス。
- アプリケーションへのデバイス アクセス。
- アプリケーションへのプログラムによるアクセス。
- アプリケーションから他のサービスに対する認証。
- 監査ログは、アプリケーションのアクティビティを追跡します。
詳細情報は、IoT Central セキュリティ ガイドを参照してください。
デバイス
デバイスはセンサーからデータを収集して、テレメトリのストリームとして IoT Central アプリケーションに送信します。 たとえば、冷却装置が温度値のストリームを送信したり、配送トラックがその場所をストリーミングしたりします。
デバイスでは、プロパティを使用して、その状態を報告できます。バルブが開いているか閉じているかなどです。 IoT Central アプリケーションでは、サーモスタットの目標温度を設定するなど、プロパティを使用してデバイスの状態を設定することもできます。
IoT Central では、デバイスに対してコマンドを呼び出してデバイスを制御することもできます。 たとえば、ファームウェア更新プログラムをダウンロードしてインストールするように、デバイスに指示します。
1 つのデバイスが実装する "テレメトリ"、"プロパティ"、"コマンド" は、集合的にデバイス機能と呼ばれます。 これらの機能は、デバイスと IoT Central アプリケーションとの間で共有されるモデル内で定義します。 IoT Central において、このモデルは、特定の種類のデバイスを定義するデバイス テンプレートの一部となります。 詳しくは、「デバイスをデバイス テンプレートに割り当てる」をご覧ください。
デバイスの実装は、IoT Central と確実に通信できるようにする IoT Plug and Play の規則に従っている必要があります。 詳細については、さまざまな言語の SDK とサンプルを参照してください。
デバイスは、サポートされているプロトコル MQTT、AMQP、HTTP のいずれかを使用して IoT Central に接続します。
ゲートウェイ
ローカル ゲートウェイ デバイスは、以下のようないくつかのシナリオで役に立ちます。
- デバイスは、インターネットに接続できないと、IoT Central に直接接続できません。 たとえば、ゲートウェイ デバイス経由での接続が必要な Bluetooth 対応の混雑状況センサーのコレクションがあるかもしれません。
- お使いのデバイスで、大量のデータが生成されているかもしれません。 コストを削減するには、ローカル ゲートウェイ内でデータを結合または集計してから、IoT Central アプリケーションへ送信します。
- ソリューションでは、データの異常に迅速に対応することが必要です。 ゲートウェイ デバイスでは、IoT Central アプリケーションにデータを送信する必要なしに、ローカルで異常を特定してアクションを実行するルールを実行することができます。
一般的に、ゲートウェイ デバイスは、スタンドアロン デバイスよりも高い処理能力を必要とします。 ゲートウェイ デバイスを実装する 1 つの方法として、Azure IoT エッジを使用して、標準の IoT Edge ゲートウェイ パターンのいずれかを適用するという方法があります。 また、適切なデバイスで、独自のカスタム ゲートウェイ コードを実行することもできます。
データのエクスポート
IoT Central には組み込みの分析機能が用意されていますが、他のサービスやアプリケーションにデータをエクスポートできます。
IoT Central データ エクスポート定義の変換により、デバイス データを変換先にエクスポートする前に、その形式と構造を操作できます。
データをエクスポートする理由として、以下が挙げられます。
ストレージと分析
アーカイブと保有のポリシーに関して長期的な保存と制御を行う場合は、他の保存先ストレージにデータを継続的にエクスポートできます。 IoT Central の外部で個別のストレージ サービスを使用すると、他の分析ツールを使用して、ソリューション内のデータから分析情報を導き出すことができます。
ビジネスの自動化
IoT Central のルールを使用すると、IoT Central 内で条件に応答して、電子メールの送信やイベントの発生などの外部アクションをトリガーできます。 たとえば、デバイスの周辺温度がしきい値に達した場合にエンジニアに通知できます。
追加の計算
データを IoT Central や別のサービスで使用する前に、データに対して変換や計算を行う必要が生じる場合があります。 たとえば、配送トラックによって報告された場所データに、地域の気象情報を追加することができます。
REST API で拡張する
お使いのアプリケーションを、他のアプリケーションやサービスから管理できるようにする統合を構築します。 たとえば、プログラムによって、お使いのアプリケーションでデバイスを管理したり、ユーザー情報を外部システムと同期したりします。
スケーラビリティ
IoT Central アプリケーションは、Azure IoT Central や Device Provisioning Service (DPS) などの複数の Azure サービスを内部的に使用します。 これらの基になるサービスの多くは、複数のテナントに対応しています。 ただし、顧客データの完全な分離を確保するために、IoT Central はシングルテナントの IoT ハブを使用します。
IoT Central は、アプリケーションの読み込みプロファイルに基づいて IoT ハブを自動的にスケーリングします。 IoT Central は、個々の IoT ハブをスケールアップし、アプリケーション内の IoT ハブの数をスケールアウトできます。 また、IoT Central は、その他の基になるサービスも自動的にスケーリングします。
データのエクスポート
IoT Central アプリケーションは、多くの場合、他のユーザーが構成したサービスを使用します。 たとえば、Azure Event Hubs や Azure Blob Storage などのサービスに継続的にデータをエクスポートするように IoT Central アプリケーションを構成できます。
構成されたデータのエクスポートが変換先に書き込むことができない場合、IoT Central は最大 15 分間データの再転送を試行します。その後、IoT Central によって宛先が失敗としてマークされます。 失敗した宛先は、書き込み可能かどうかを確認するために定期的にチェックされます。
データのエクスポートを無効にしてから再度有効にすることで、失敗したエクスポートを再起動するように IoT Central に強制できます。
使用しているデータ エクスポート先サービスの高可用性とスケーラビリティのベスト プラクティスを確認します。
- Azure Blob Storage: 「Azure Storage の冗長性」と「BLOB ストレージのパフォーマンスとスケーラビリティのチェックリスト」
- Azure Event Hubs: 「Azure Event Hubs での可用性と一貫性」と「Event Hubs によるスケーリング」
- Azure Service Bus: 「Service Bus の障害および災害に対するアプリケーションの保護のベスト プラクティス」と「Azure Service Bus 名前空間のメッセージング ユニットを自動的に更新する」
高可用性とディザスター リカバリー
HADR の機能は、ご使用の IoT Central アプリケーションが作成された時期によって異なります。
2021 年 4 月より前に作成されたアプリケーション
2021 年 4 月より前に作成された一部のアプリケーションでは、1 つの IoT ハブが使用されています。 これらのアプリケーションの場合、IoT Central では HADR 機能が提供されていません。 その IoT ハブが使用できなくなった場合、そのアプリケーションは使用できなくなります。
az iot central device manual-failover
コマンドを使用して、アプリケーションが 1 つの IoT ハブをまだ使用しているかどうかを確認します。 そのアプリケーションの IoT ハブが 1 つの場合、このコマンドはエラーを返します。
2021 年 4 月以降かつ 2023 年 4 月より前に作成されたアプリケーション
高可用性のデバイス接続を目的として、IoT Central アプリケーションには常に、少なくとも 2 つの IoT ハブがあります。 IoT Central が負荷プロファイルの変化に応じてアプリケーションをスケーリングすると、ハブの数が増減します。
また、IoT Central では、そこで使われるさまざまなサービスを高可用性にするため、可用性ゾーンが使われます。
ディザスター リカバリーが必要になるインシデントは、一部のサービスが使用できなくなるものから、リージョン全体が使用できなくなるものまで、広い範囲に及ぶ可能性があります。 IoT Central では、インシデントの性質と規模に応じて、異なる回復プロセスが行われます。 たとえば、壊滅的な障害が発生して Azure リージョン全体が使用できなくなった場合は、ディザスター リカバリー手順により、同じ地域内の別のリージョンにアプリケーションがフェールオーバーされます。
2023 年 4 月以降に作成されたアプリケーション
2023 年 4 月以降に初めて作成された IoT Central アプリケーションには、1 つの IoT ハブがあります。 その IoT ハブが使用できなくなった場合、そのアプリケーションは使用できなくなります。 ただし、IoT Central は自動的にそのアプリケーションをスケーリングし、接続されている 10,000 台のデバイスごとに新しい IoT ハブを追加します。 デバイスが 10,000 台未満のアプリケーションに対して複数の IoT ハブが必要な場合は、IoT Central カスタマー サポートにリクエストをご送信ください。
az iot central device manual-failover
コマンドを使用して、ご使用のアプリケーションが現在 1 つの IoT ハブを使用しているかどうかをご確認ください。 そのアプリケーションの IoT ハブが現在 1 つの場合、このコマンドはエラーを返します。