植物をクラウドに移行する
スケッチノート: Nitya Narasimhan 作。画像をクリックすると大きなバージョンが表示されます。
このレッスンは、Microsoft Reactor の IoT 01 for Beginners Project 2 - Digital Agriculture series の一環として教えられました。
講義前のクイズ
はじめに
前回のレッスンでは、植物を MQTT ブローカーに接続し、ローカルで実行されているサーバーコードからリレーを制御する方法を学びました。これは、家庭の個々の植物から商業農場まで使用されるインターネット接続の自動灌漑システムのコアを形成します。
IoT デバイスは、原則を示すためにパブリック MQTT ブローカーと通信しましたが、これは最も信頼性が高く安全な方法ではありません。このレッスンでは、クラウドとパブリッククラウドサービスによって提供される IoT 機能について学びます。また、パブリック MQTT ブローカーからこれらのクラウドサービスの 1 つに植物を移行する方法についても学びます。
このレッスンでは、次の内容をカバーします:
クラウドとは何か?
クラウドが登場する前、企業が従業員にサービス(データベースやファイルストレージなど)を提供したり、一般にサービス(ウェブサイトなど)を提供したりする場合、データセンターを構築して運営していました。これは、少数のコンピューターがある部屋から、多数のコンピューターがある建物までさまざまでした。企業は次のことを管理する必要がありました:
- コンピューターの購入
- ハードウェアのメンテナンス
- 電力と冷却
- ネットワーキング
- セキュリティ(建物のセキュリティとコンピューター上のソフトウェアのセキュリティを含む)
- ソフトウェアのインストールと更新
これは非常に高価で、幅広いスキルを持つ従業員が必要であり、必要に応じて変更するのに非常に時間がかかる可能性があります。たとえば、オンラインストアが忙しいホリデーシーズンを計画する必要がある場合、数か月前にハードウェアを購入し、構成し、インス トールし、販売プロセスを実行するソフトウェアをインストールする必要があります。ホリデーシーズンが終わり、売上が減少した後、次の忙しいシーズンまでアイドル状態のコンピューターが残ります。
✅ これにより、企業は迅速に動くことができると思いますか?オンライン衣料品小売業者が突然有名人がその服を着ているのを見たために人気が出た場合、突然の注文の急増をサポートするためにコンピューティングパワーを迅速に増やすことができるでしょうか?
他人のコンピューター
クラウドはしばしば「他人のコンピューター」と冗談めかして呼ばれます。最初のアイデアはシンプルでした - コンピューターを購入する代わりに、他人のコンピューターをレンタルします。クラウドコンピューティングプロバイダーが巨大なデータセンターを管理し、ハードウェアの購入とインストール、電力と冷却の管理、ネットワーキング、建物のセキュリティ、ハードウェアとソフトウェアの更新などを担当します。顧客として、必要なコンピューターをレンタルし、需要が急増したときに追加でレンタルし、需要が減少した場合はレンタル数を減らします。これらのクラウドデータセンターは世界中にあります。
これらのデータセンターは数平方キロメートルの広さになることがあります。上の画像は数年前に Microsoft クラウドデータセンターで撮影されたもので、初期のサイズと計画された拡張を示しています。拡張のためにクリアされたエリアは 5 平方キロメートル以上です。
💁 これらのデータセンターは非常に大量の電力を必要とするため、一部には独自の発電所があります。クラウドプロバイダーの投資レベルと規模のため、通常は非常に環境に優しいです。多数の小さなデータセンターよりも効率的で、主に再生可能エネルギーで運営され、クラウドプロバイダーは廃棄物の削減、水の使用量の削減、データセンターを建設するために伐採された森林の再植林に努めています。クラウドプロバイダーが持続可能性に取り組んでいる方法については、Azure 持続可能性サイトで詳しく読むことができます。
✅ 調査を行ってください: Microsoft の Azure や Google の GCP などの主要なクラウドについて調べてください。彼らは何か所のデータセンターを持っており、それらは世界のどこにありますか?
クラウドを使用するこ とで、企業のコストを抑え、クラウドコンピューティングの専門知識をプロバイダーに任せることができます。企業はもはやデータセンタースペースを借りたり購入したり、接続性や電力のために異なるプロバイダーに支払ったり、専門家を雇ったりする必要はありません。代わりに、クラウドプロバイダーにすべてを任せるために月額料金を支払うことができます。
クラウドプロバイダーは、規模の経済を利用してコストを削減し、コンピューターを一括購入して低コストで購入し、メンテナンスの作業負荷を減らすためのツールに投資し、クラウドオファリングを改善するために独自のハードウェアを設計および構築することができます。
Microsoft Azure
Azure は Microsoft の開発者向けクラウドであり、これらのレッスンで使用するクラウドです。以下のビデオは Azure の概要を簡単に説明しています:
クラウドサブスクリプションを作成する
クラウドサービスを使用するには、クラウドプロバイダーのサブスクリプションにサインアップする必要があります。このレッスンでは、Microsoft Azure サブスクリプションにサインアップします。すでに Azure サブスクリプションをお持ちの場合は、このタスクをスキップできます。ここで説明するサブスクリプションの詳細は執筆時点でのものであり、変更される可能性があります。
💁 これらのレッスンに学校を通じてアクセスしている場合、すでに Azure サブスクリプションが利用可能な場合があります。教師に確認してください。
サインアップできる無料の Azure サブスクリプションには 2 種類あります:
-
Azure for Students - これは 18 歳以上の学生向けのサブスクリプションです。サインアップにはクレジットカードは必要なく、学校のメールアドレスを使用して学生であることを確認します。サインアップすると、クラウドリソースに使用できる 100 米ドルと、無料の IoT サービスのバージョンを含む無料サービスが提供されます。これは 12 か月間有効で、学生である限り毎年更新できます。
-
Azure 無料サブスクリプション - これは学生でない人向けのサブスクリプションです。サブスクリプションにサインアップするにはクレジットカードが必要ですが、カードは請求されません。これは、あなたが本物の人間であり、ボットではないことを確認するために使用されます。最初の 30 日間で任意のサービスに使用できる 200 ドルのクレジットと、Azure サービスの無料ティアが提供されます。クレジットが使い果たされた後、支払いを行わない限り、カードは請求されません。
💁 Microsoft は 18 歳未満の学生向けに Azure for Students Starter サブスクリプションを提供していますが、執筆時点では IoT サービスをサポートしていません。
タスク - 無料のクラウドサブスクリプションにサインアップする
18 歳以上の学生である場合は、Azure for Students サブスクリプションにサインアップできます。学校のメールアドレスで確認する必要があります。これを行うには、次の 2 つの方法があります:
-
education.github.com/pack で GitHub 学生開発者パックにサインアップします。これにより、GitHub や Microsoft Azure を含むさまざまなツールやオファーにアクセスできます。開発者パックにサインアップした後、Azure for Students オファーを有効化できます。
-
azure.microsoft.com/free/students で直接 Azure for Students アカウントにサインアップします。
⚠️ 学校のメールアドレスが認識されない場合は、このリポジトリに issue を提出 し、Azure for Students 許可リストに追加できるかどうか確認します。
学生でない場合、または有効な学校のメールアドレスを持っていない場合は、Azure 無料サブスクリプションにサインアップできます。
- azure.microsoft.com/free で Azure 無料サブスクリプションにサインアップします。
クラウド IoT サービス
使用していたパブリックテスト MQTT ブローカーは学習時には素晴らしいツールですが、商業環境で使用するツールとしては多くの欠点があります:
- 信頼性 - 無料サービスであり、保証はなく、いつでもオフにすることができます
- セキュリティ - 公開されているため、誰でもテレメトリを聞いたり、ハードウェアを制御するコマンドを送信したりすることができます
- パフォーマンス - 少数のテストメッセージのために設計されており、大量のメッセージを送信することはできません
- 発見 - 接続されているデバイスを知る方法がありません
クラウドの IoT サービスはこれらの問題を解決します。これらは信頼性に大きく投資し、発生する可能性のある問題を修正するために待機している大規模なクラウドプロバイダーによって維持されています。ハッカーがデータを読み取ったり、不正なコマンドを送信したりするのを防ぐためにセキュリティが組み込まれています。また、非常に高性能であり、毎日何百万ものメッセージを処理でき、必要に応じてクラウドを利用してスケールします。
💁 これらの利点には月額料金がかかりますが、ほとんどのクラウドプロバイダーは、1 日あたりのメッセージ数や接続できるデバイス数が制限された無料バージョンの IoT サービスを提供しています。この無料バージョンは、開発者がサービスについて学ぶのに十分なことがほとんどです。このレッスンでは無料バージョンを使用します。
IoTデバイスは、デバイスSDK(サービスの機能を操作するためのコードを提供するライブラリ)を使用して、またはMQTTやHTTPなどの通信プロトコルを介して直接クラウドサービスに接続します。デバイスSDKは、公開するトピックや購読するトピックを知っていることや、セキュリティの処理方法など、すべてを処理してくれるため、通常は最も簡単なルートです。
その後、デバイスはこのサービスを介してアプリケーションの他の部分と通信します。これは、MQTTを介してテレメトリを送信し、コ マンドを受信した方法と似ています。通常、サービスSDKや同様のライブラリを使用します。メッセージはデバイスからサービスに送信され、アプリケーションの他のコンポーネントがそれを読み取り、その後、メッセージがデバイスに送信されます。
これらのサービスは、サービスに接続してデータを送信できるすべてのデバイスを知っていることによって、セキュリティを実装します。これは、デバイスがサービスに事前登録されているか、デバイスが初めて接続する際にサービスに自分自身を登録するために使用できる秘密鍵や証明書を持っていることによって行われます。未知のデバイスは接続できず、接続を試みるとサービスは接続を拒否し、それらから送信されたメッセージを無視します。
✅ 調査を行う: 任意のデバイスやコードが接続できるオープンなIoTサービスを持つことの欠点は何ですか?ハッカーがこれを悪用した具体的な例を見つけることができますか?
アプリケーションの他のコンポーネントは、IoTサービスに接続して接続されているすべてのデバイスを確認し、個別または一括で直接通信することができます。
💁 IoTサービスは追加の機能も実装しており、クラウドプロバイダーにはサービスに接続できる追加のサービスやアプリケーションがあります。たとえば、すべてのデバイスから送信されたすべてのテレメトリメッセージをデータベースに保 存したい場合、クラウドプロバイダーの構成ツールで数回クリックするだけで、サービスをデータベースに接続してデータをストリームすることができます。
クラウドでIoTサービスを作成する
Azureサブスクリプションを取得したので、IoTサービスにサインアップできます。MicrosoftのIoTサービスはAzure IoT Hubと呼ばれます。
以下のビデオは、Azure IoT Hubの概要を簡単に説明しています:
🎥 画像をクリックしてビデオを視聴
✅ 調査を行い、Microsoft IoT HubのドキュメントでIoT Hubの概要を読んでください。
Azureで利用可能なクラウドサービスは、Webベースのポータルまたはコマンドラインインターフェイス(CLI)を介して構成できます。このタスクでは、CLIを使用します。
タスク - Azure CLIをインストールする
Azure CLIを使用するには、まずPCまたはMacにインストールする必要があります。
-
Azure CLIのドキュメントの指示に従ってCLIをインストールします。
-
Azure CLIは、さまざまなAzureサービスを管理するための機能を追加する多くの拡張機能をサポートしています。次のコマンドをコマンドラインまたはターミナルで実行して、IoT拡張機能 をインストールします:
az extension add --name azure-iot
-
コマンドラインまたはターミナルから次のコマンドを実行して、Azure CLIからAzureサブスクリプションにログインします。
az login
デフォルトのブラウザでWebページが起動します。Azureサブスクリプションにサインアップしたアカウントを使用してログインします。ログインが完了したら、ブラウザタブを閉じることができます。
-
学校提供のサブスクリプションや自分のAzure for Studentsサブスクリプションなど、複数のAzureサブスクリプションを持っている場合は、使用するサブスクリプションを選択する必要があります。次のコマンドを実行して、アクセスできるすべてのサブスクリプションを一覧表示します:
az account list --output table