Azure の基礎 その9 構成管理ツールの選択

  • PowerShell
  • AzureResourceManager
  • AzureCLI
  • AzurePowerShell
  • 前回「Azure の基礎 その8 AIサービス」の続きです。

    今回はラーニングパス「Azure 環境の管理と構成に最適なツールを選択する」の概要を書いていきたいと思います。

    Azure の構成管理ツール

    以下の5つです。

    ツール名 特徴
    Azure portal Web ベースのユーザーインターフェイスで扱いやすく、ほとんどのユーザーは、Azure portal で初めて Azure を経験します。しかし、リソースの数が増えると、画面での管理は難しく、コード中心のアプローチが推奨されます。
    Azure mobile app お使いのコンピューターが手近にないときに、iOS および Android から Azure リソースにアクセスできます。正常性監視、アラートの確認、Azure CLI または Azure PowerShell のコマンドを実行して、Azure リソースを管理することも可能です。
    Azure PowerShell Azure Rest API を呼び出して、Azure で可能なすべての管理タスクを実行します。単独で実行することも、スクリプトファイルに組み込んで連携させて実行することもできます。Azure PowerShell は、Windows、Linux、Mac で使用可能です。
    Azure CLI 多くの点で、Azure CLI で実行できることは Azure PowerShell とほぼ同じです。どちらも、Windows、Linux、および Mac で使用でき、Cloud Shell を介して Web ブラウザーでアクセスできます。主な違いは使用する構文です。
    ARM テンプレート Azure Resource Manager テンプレート (ARM テンプレート) は、 JSON 形式でリソースを定義したものです。リソースのデプロイは並列で処理されるため、大規模な環境を迅速にデプロイすることも可能です。

    どの構成管理ツールを選択すべきか

    特徴の通りですが、開発検証用に1〜2個のリソースを作成して確認したい場合などは、Azure portal,Azure PowerShell,Azure CLI がおすすめです。

    ただ、繰り返しリソースを作成する必要がある場合は、ARM テンプレートが便利ですよね。

    当たり前ですが、手元に PC がないときはスマホで Azure mobile app を使うしかありません。

    依存関係の解決

    1つポイントとなるのが、Azure PowerShell,Azure CLI と ARM テンプレートのどちらを選択すべきか、というところだと思います。

    Azure PowerShell,Azure CLI もスクリプトにしてしまえば、コードでインフラが管理できます。

    ですが、ARM テンプレートにあって、Azure PowerShell,Azure CLI にないもの、それが "依存関係の解決" です。

    例えば、VirtualMachine を作成する場合、VNet を作成して、Subnet を作成して、そもそも ResourceGroup も必要ですね。

    といった具合に、VirtualMachine を作成する前に準備が必要です。それを依存関係と呼びます。

    ARM テンプレートは、VirtualMachine を作成、VNet を作成、Subnet を作成、ResourceGroup を作成、と記述しても、自動的に依存関係が解釈され、 ResourceGroup から作成するように動作します。

    そういった意味では、複数のリソースを作成する場合には、ARM テンプレートが最適であると言えます。

    サーバーレス

    短い内容でしたので続けてサーバレスのラーニングパス「ビジネス シナリオに最適なサーバーレス テクノロジを選択する」をやっていこうと思います。

    サーバレスの説明としては以下の引用が全てではないかと思います。

    サーバーレス コンピューティングはクラウドでホストされる実行環境で、ユーザーのコードを実行しますが、基になるホスティング環境は抽象化されています。 " サーバーレス コンピューティング " という用語は、適切ではありません。 結局のところ、コードまたは必要な機能を実行するサーバー (またはサーバーのグループ) は " 存在します "。

    重要なのは、そのサーバーの設定や保守について、ユーザーは責任を負わないという考えです。 需要が増加してもスケーリングについて心配する必要はありません。また、停止する心配もありません。 ユーザーに代わってクラウド ベンダーが、メンテナンスやスケーリングに関するあらゆる懸念に対処します。

    Azure Functions/Azure Logic Apps

    Azure の主なサーバーレスコンピューティングサービスを表にしてみました。

    Azure Functions Azure Logic Apps
    機能 イベントに応答して実行される 1 つのメソッドまたは関数 ノーコード開発プラットフォーム
    記述 C#、Python、JavaScript、Typescript、Java、PowerShell などのコード コネクタを使用して実行可能なタスクまたはステップ Web ベースのデザイナーで設計
    料金 実行回数と、各実行の実行時間 実行回数と、利用されるコネクタの種類

    どちらを選択すべきか

    既存のシステムにおけるバッチ処理などをサーバレスにするといったケースでは、Azure Functions でしょう。ビジネスロジックに詳しい担当者がノーコードで業務を自動化したいといった場合は、Azure Logic Apps が適しています。

    Azure IoT Service

    続けて「アプリケーションに最適な Azure IoT サービスを選択する」の概要を解説します。

    どんなセンサーがあるか

    世の中には色々なセンサーがありますがその一例が記載されています。センサーがどういったデータを提供するのかイメージしやすいので掲載させていただきます。

    • 温度と湿度のレベルをキャプチャする環境センサー
    • バーコード、QR コード、または光学式文字認識 (OCR) のスキャナー
    • geo ロケーションと近接のセンサー
    • 光、色、赤外線のセンサー
    • 音と超音波のセンサー
    • モーションとタッチのセンサー
    • 加速度計と傾きのセンサー
    • 煙、気体、アルコールのセンサー
    • デバイスに問題がある場合を検出するエラーセンサー
    • 異常または変形を検出する機械センサー
    • 気体および液体を測定するための流量、レベル、圧力のセンサー

    結構、科学技術よりのデータが多いように感じます。素人にこのようなデータを分析することは難しそうですね。

    Azure IoT Service には主に3つのサービスがあります。

    Azure IoT Hub

    • クラウドでホストされるマネージドサービス
    • IoT アプリケーションとそれが管理するデバイス間の双方向通信のための中央メッセージ ハブとして機能
    • 数百万台の IoT デバイスと信頼性が高く安全な通信を行うことが可能
    • デバイスからのファイルのアップロード
    • クラウドからデバイスを制御するための要求/応答メソッド

    Azure IoT Central

    • IoT Hub 上に構築
    • IoT デバイスの接続、監視、管理を可能にするダッシュボード
    • すべてのデバイスにわたってパフォーマンス全体を総合的に監視することが可能
    • 一般的なシナリオのスターターテンプレートが用意

    Azure Sphere

    • セキュリティで保護されたコネクテッド クロスオーバー マイクロコントローラー ユニット (MCU)
    • カスタムの高レベル Linux ベース オペレーティングシステム (OS)
    • 継続的で更新可能なセキュリティを提供するクラウドベースのセキュリティサービス
    • 上記のようなセキュリティで保護された高水準のアプリケーションプラットフォーム
    • つまり、IoT デバイスによる脅威へのリスクが最小限

    どのサービスを選択すべきか

    ポイントは2つだけです。

    1. セキュリティ対策をどこまで行うべきか
    2. レポートと管理のためにダッシュボードは必要か

    例えば、冷蔵庫の温度センサーであれば脅威レベルは高くないですよね。また、IoT センサーの不具合が起きた時の通知は必要だけど、細かいレポートを作ったりは不要です。

    そういった場合は、Azure IoT Hub を選択することとなります。

    今回はここまで。

  • PowerShell
  • AzureResourceManager
  • AzureCLI
  • AzurePowerShell