IoT ソリューション内のデバイス構成のベスト プラクティス
Azure IoT Hub の自動デバイス管理では、大規模なデバイス集団をそのライフサイクル全体にわたって管理するための、複雑で反復的な多くのタスクを自動化できます。 この記事では、IoT ソリューションの開発と操作に関連するさまざまなロールのベスト プラクティスの多くを定義します。
IoT ハードウェアの製造元/インテグレーター: IoT ハードウェアの製造元、さまざまな製造元のハードウェアをアセンブルするインテグレーター、あるいは他のサプライヤーによって製造または統合された IoT デプロイ用のハードウェアを提供するサプライヤーです。 ファームウェア、埋め込みオペレーティング システム、埋め込みソフトウェアの開発と統合に関与します。
IoT ソリューション開発者: 通常、IoT ソリューションの開発は、ソリューション開発者が行います。 この開発者は、この活動を専門とする社内チームの一員であることも、システム インテグレーターであることもあります。 IoT ソリューション開発者は、IoT ソリューションのさまざまなコンポーネントをゼロから開発したり、標準またはオープン ソースのさまざまなコンポーネントを統合したりできます。
IoT ソリューションのオペレーター: IoT ソリューションをデプロイしたら、長期間にわたる操作、監視、アップグレード、メンテナンスが必要となります。 これらのタスクは、情報テクノロジ スペシャリスト、ハードウェア操作およびメンテナンス チーム、および全体的な IoT インフラストラクチャの正常な動作を監視するドメイン スペシャリストから成る社内チームが実行できます。
大規模な IoT デバイスの構成の自動デバイス管理について
自動デバイス管理には、クラウドとデバイス間で目的の状態と報告された状態を同期するためのデバイス ツインとモジュール ツインの多くの利点が含まれます。 自動デバイス構成では、大規模なツイン セットが自動的に更新されて、進行状況とコンプライアンスが要約されます。 次の手順概要で、自動デバイス管理の開発および使用方法について説明します。
IoT ハードウェアの製造元/インテグレーターは、デバイス ツインを使用して、埋め込みアプリケーション内のデバイス管理機能を実装します。 これらの機能には、ファームウェアの更新、ソフトウェアのインストールと更新、設定管理を含めることができます。
IoT ソリューション開発者は、デバイス ツインと自動デバイス構成を使用して、デバイスの管理操作の管理レイヤーを実装します。 ソリューションには、デバイス管理タスクを実行するためのオペレーター インターフェイスの定義を含める必要があります。
IoT ソリューション オペレーターは、デバイス管理タスクを実行するため、特にデバイスのグループ化、ファームウェアの更新などの構成変更の開始、進行状況の監視、発生した問題のトラブルシューティングを行うために IoT ソリューションを使用します。
IoT ハードウェアの製造元/インテグレーター
埋め込みソフトウェアの開発を処理するハードウェアの製造元やインテグレーターのベスト プラクティスを次に示します。
デバイス ツインの実装: デバイス ツインは、クラウドからの必要な構成の同期と、現在の構成とデバイスのプロパティの報告を可能にします。 埋め込みアプリケーション内のデバイス ツインを実装する最善の方法は、Azure IoT SDK を使用することです。 デバイス ツインは、次の理由で構成に最適です。
- 双方向通信をサポートします。
- 接続と切断の両方のデバイス状態に対応します。
- 最終的な一貫性の原則に従います。
- クラウド内で完全にクエリ可能です。
デバイス管理用のデバイス ツインの構造: デバイス ツインは、デバイス管理のプロパティがセクションに論理的にグループ化されるように構造化される必要があります。 それにより、ツインの他のセクションに影響を与えずに構成変更を分離できます。 たとえば、目的のプロパティ内にファームウェア用のセクションを作成し、ソフトウェア用に別のセクションを作成し、ネットワーク設定用に 3 番目のセクションを作成します。
デバイス管理に役立つデバイス属性のレポート: 物理デバイスなどの属性は、モデル、ファームウェア、オペレーティング システム、シリアル番号、その他の識別子を、レポートに、および対象となる構成変更のパラメーターとして役立てます。
状態と進行状況を報告するためのメイン状態の定義: 最上位レベルの状態を列挙して、オペレーターに報告できるようにする必要があります。 たとえば、ファームウェアの更新は、状態を最新、ダウンロード中、適用中、進行中、エラーとして報告します。 各状態の詳細については、追加のフィールドを定義します。
IoT ソリューション開発者
Azure ベースのシステムを構築する IoT ソリューション開発者のベスト プラクティスを次に示します。
デバイス ツインの実装: デバイス ツインは、クラウドからの必要な構成の同期と、現在の構成とデバイスのプロパティの報告を可能にします。 クラウド ソリューション アプリケーション内のデバイス ツインを実装する最善の方法は、Azure IoT SDK を使用することです。 デバイス ツインは、次の理由で構成に最適です。
- 双方向通信をサポートします。
- 接続と切断の両方のデバイス状態に対応します。
- 最終的な一貫性の原則に従います。
- クラウド内で完全にクエリ可能です。
デバイス ツイン タグを使用したデバイスの編成: ソリューションでは、オペレーターがカナリアなどのさまざまなデプロイ戦略に基づいて品質リングやその他のデバイス セットを定義できるようにする必要があります。 デバイス編成は、デバイス ツイン タグとクエリを使用して、ソリューション内で実装できます。 デバイス編成は、構成を安全かつ正確にロールアウトできるようにするために必要です。
自動デバイス構成の実装: 自動デバイス構成は、デバイス ツインを介して大規模な IoT デバイス セットの構成変更をデプロイおよび監視します。
自動デバイス構成は、デバイス ツイン タグまたは報告されたプロパティに対するクエリであるターゲット条件を介してデバイス ツインのセットをターゲット設定します。 ターゲット コンテンツは、ターゲットとなるデバイス ツイン内で設定される必要なプロパティのセットです。 ターゲット コンテンツは、IoT ハードウェアの製造元/インテグレーターによって定義されるデバイス ツイン構造に適合する必要があります。 メトリックはデバイス ツインの報告されたプロパティに対するクエリであり、これも IoT ハードウェアの製造元/インテグレーターによって定義されるデバイス ツイン構造に適合する必要があります。
自動デバイス構成は、構成が作成された直後に初めて実行され、その後は 5 分間隔で実行されます。 自動デバイス構成では、デバイス ツインの読み取りと更新のスロットリングの制限を超えることのない速度でデバイス ツイン操作を実行する IoT Hub の利点も得られます。
デバイス プロビジョニング サービスの使用: ソリューション開発者は、デバイス プロビジョニング サービスを使用して、タグの付いたツインをターゲットとする自動デバイス構成によって自動的に構成されるように、デバイス ツイン タグを新しいデバイスに割り当てる必要があります。
IoT ソリューションのオペレーター
Azure 上に構築された IoT ソリューションを使用する IoT ソリューション オペレーターのベスト プラクティスを次に示します。
管理用のデバイスの編成: IoT ソリューションでは、カナリアなどのさまざまなデプロイ戦略に基づいて品質リングやその他のデバイス セットを定義または作成できるようにする必要があります。 デバイスのセットは、構成変更のロールアウトと、その他の大規模なデバイス管理操作の実行に使用されます。
フェーズ ロールアウトを使用した構成変更の実行: フェーズ ロールアウトとは、IoT デバイスの幅広いセットに対してオペレーターが変更をデプロイする、全体的なプロセスのことです。 その目的は、変更を段階的に適用することで、広範囲な変更によるリスクを減らすことです。 オペレーターは、ソリューションのインターフェイスを使用して、自動デバイス構成を作成する必要があり、ターゲット条件はデバイスの初期セット (カナリア グループなど) をターゲットとする必要があります。 その後、オペレーターはデバイスの初期セットで構成の変更を検証する必要があります。
検証が完了したら、オペレーターは自動デバイス構成を更新して大規模なデバイス セットを含めます。 オペレーターは、構成の優先度を、現在それらのデバイスにターゲット設定されている他の構成よりも高く設定する必要もあります。 自動デバイス構成によって報告されたメトリックを使用して、ロールアウトを監視できます。
エラーまたは構成ミスが発生した場合のロールバックの実行: エラーまたは構成ミスの原因となる自動デバイス構成は、デバイスがターゲット条件を満たさなくなるようにターゲット条件を変更することでロールバックできます。 低優先度の別の自動デバイス構成が引き続きそれらのデバイスのターゲットであることを確認します。 メトリックの表示によるロールバックの成功の確認: ロールバックされた構成は、ターゲット設定されていないデバイスの状態を表示しなくなる必要があり、2 番目の構成のメトリックにはまだターゲットとなっているデバイスの数が含まれている必要があります。
次のステップ
「IoT Hub のデバイス ツインの理解と使用」でデバイス ツインの実装について説明します。
「多数の IoT デバイスの構成と監視」で、自動デバイス構成を作成、更新、または削除する手順を紹介します。
Raspberry Pi 3 B+ 参照イメージを使用した Device Update for Azure IoT Hub のチュートリアルで、エンドツーエンドのイメージ ベースの更新を完了する方法について説明します。