自動化されたガイド付き車両フリートの制御

Azure App Service
Azure Container Apps
Azure Container Registry
Azure IoT Hub
Azure Virtual Network

このサンプル アーキテクチャでは、自動車の相手先ブランド供給業者 (OEM) 向けのエンド ツー エンド アプローチを示します。また、リファレンス アーキテクチャと、再利用可能な公開済みのサポート オープンソース ライブラリも含まれています。 Microsoft では、フリートコントロールソフトウェアを再設計することで、高可用性、geo 冗長性、ベンダー ニュートラルを実現し、ハイブリッド クラウド コンテキストで実行できるようにしました。

アーキテクチャ

99.9% の可用性とディザスター リカバリーを実現するダウンタイムなしのフェールオーバー機能による geo 冗長性

Azure IoT Hub、インジェスト、RabbitMQ、ミッションの状態、車両の状態、ジョブ マネージャー、Geo DB といったコンポーネントで構成されるバックエンドのインスタンスが 2 つの Azure リージョンにデプロイされていることを示すスクリーンショット。

このアーキテクチャの Visio ファイルをダウンロードします。

ワークフロー

  • Azure IoT Hub、インジェスト、RabbitMQ、ミッションの状態、車両の状態、ジョブ マネージャー、Geo DB といったコンポーネントで構成されるバックエンドのインスタンスが、2 つの Azure リージョンにデプロイされます。 IoT Hub は、Azure App Service の Web Apps 機能Web App for Containers、または Kubernetes を使用して Azure App Service 上にデプロイできるマイクロサービス アーキテクチャを使用して構築された一連のアプリケーションに接続します。
  • リーダー選定システムによって、特定の時点で、どちらのバックエンドが作業現場の AGV を制御するかが決定されます。 稼働しているバックエンドに障害が発生すると、リーダー選定によって、直ちにもう一方のリージョンのバックエンドに制御が移行されます。
  • この geo 冗長性とダウンタイムなしのフェールオーバー アーキテクチャにより、インターネット接続や外部サブシステム (SAP など) が制限要因とならない限り、Azure で実行される AGV 制御ソフトウェアは 99.9% の可用性を実現します。

データセンターに依存しないデプロイを可能にする Kubernetes と RabbitMQ

Azure IoT Edge デバイス上にデプロイされた Kubernetes と RabbitMQ のスクリーンショット。

このアーキテクチャの Visio ファイルをダウンロードします。

生産工場と Azure の間のインターネット接続が制限要因となっているシナリオでは、AGV 制御ソフトウェアをオンプレミスのコンピューティング ノードにデプロイすることもできます。 プラットフォームに依存しないテクノロジとしての Kubernetes と RabbitMQ を使用することで、前のセクションで説明したアプリケーション レイヤーが Azure IoT Edge デバイス上にデプロイされます。

AGV ベンダーに依存しない通信を実現する VDA 5050 仕様の実装

Azure でのバックエンド AGV フリート制御ソリューションのスクリーンショット。

このアーキテクチャの Visio ファイルをダウンロードします。

VDA 5050 車両コネクタ仕様に準拠することにより、Microsoft の AGV 制御ソフトウェアは、同様に VDA 5050 に準拠しているさまざまなベンダー製のすべての種類の AGV と通信を確立できます。

ワークフロー

このアーキテクチャでは、Azure でバックエンド AGV フリート制御ソリューションを実行するために使用されるさまざまなサービスとコンポーネントの概要を確認できます。

  • 開発者が新しいコードをコミットすると、GitHub Actions によって、コードが自動的にスキャンされ、脆弱性とコーディング エラーが速やかに検出されます。 また、これはアプリケーションとインフラストラクチャ コンポーネントを自動的にデプロイするためにも使用できます。
  • コンテナー レジストリには、AGV フリート制御バックエンドのさまざまなサービスに使用されるコンテナー イメージが格納されます。
  • バックエンド サービスは、Web App for Containers にデプロイされます。
  • これらのバックエンド サービスは、VDA 5050 プロトコルを使用して外部システムに接続できます。 また、Kafka などのマネージド ストリーミング プラットフォームに接続し、車両情報を Azure SQL データベースに格納することもできます。
  • Azure Key Vault には、パスワード、キー、および証明書が格納されます。
  • Application Insights によって、バックエンド サービスとして実行されるアプリケーションのログ記録と監視が実装されます。
  • マネージド ID を使用することにより、Azure のさまざまなサービスやリソースに接続する際に、開発者は資格情報を管理する必要がなくなります。 Microsoft Entra 認証をサポートするリソースに接続するときに使う ID をアプリケーションに提供します。

コンポーネント

Azure App Service は、マネージド仮想マシン (VM) にアプリケーションを構築してホストするための PaaS (サービスとしてのプラットフォーム) です。 アプリが実行される基礎となるコンピューティング インフラストラクチャを管理します。 App Service には、リソース使用量のクォータとアプリのメトリック、診断情報のログ、メトリックに基づくアラートの監視機能があります。

Azure Virtual Network は、Azure 内のプライベート ネットワークの基本的な構成要素です。 このサービスによって、Azure Virtual Machines などのさまざまな種類の Azure リソースが、他の Azure リソース、インターネット、およびオンプレミスのネットワークと安全に通信できるようになります。

IoT Hub は、クラウド内でホストされている PaaS マネージド サービスであり、IoT アプリケーションとそれが管理するデバイスの間の双方向通信に対する中央メッセージ ハブとして機能します。

Azure Container Apps は、コンテナーを大規模に構築およびデプロイするフル マネージド サーバーレス コンテナー サービスです。

Azure Container Registry は、オープンソースの Docker Registry 2.0 が基になっている、マネージド型のプライベート Docker レジストリ サービスです。 既存のコンテナー開発およびデプロイ パイプラインで Azure コンテナー レジストリを使用したり、Azure Container Registry タスクを使用して Azure にコンテナー イメージをビルドしたりできます。 必要に応じてビルドすることも、ソース コードのコミットや基本イメージの更新などのトリガーでビルドを完全に自動化することもできます。

Microsoft Entra ID は、ユーザー、サービス、アプリケーションを認証するクラウドベースの ID およびアクセス管理サービスです。

Azure Storage では、耐久性があり、高度にスケーラブルな高可用性クラウド ストレージ ソリューションが提供されます。 これには、オブジェクト、ファイル、ディスク、キュー、テーブルのストレージ機能が含まれます。

RabbitMQ は、もともと Advanced Message Queuing Protocol を実装していたオープンソースのメッセージブローカー ソフトウェアであり、その後、プラグイン アーキテクチャを使用してストリーミング テキスト指向メッセージング プロトコルや MQ テレメトリ トランスポートなどのプロトコルをサポートできるように拡張されています。

Azure Virtual Machines を使用すると、仮想化がもたらす柔軟性を提供する、オンデマンドのスケーラブルなコンピューティング リソースが提供されるため、物理的なハードウェアを購入して維持する手間が省かれます。

Azure SQL Database は、アップグレード、修正プログラムの適用、バックアップ、監視などのほとんどのデータベース管理機能をユーザーの介入なしで処理する、フル マネージドの PaaS データベース エンジンです。

Azure Key Vault は、シークレットを安全に保管し、それにアクセスするためのクラウド サービスです。 "シークレット" は、API キー、パスワード、証明書、暗号化キーなど、アクセスを厳密に制御する必要がある任意のものです。

Application Insights は Azure Monitor の機能であり、開発者や DevOps プロフェッショナル向けの拡張可能なアプリケーション パフォーマンス管理 (APM) サービスです。 これを使用して、実行中のアプリケーションを監視できます。 パフォーマンスの異常を自動的に検出し、組み込まれている強力な分析ツールを使用して、問題を診断し、ユーザーがアプリを使用して実行している操作を把握できます。

代替

このアーキテクチャでは、このソリューションのアプリケーションを実行するために、Kubernetes と、Azure App Service の Web Apps 機能を使用します。 代わりに、これらのマイクロサービスを Azure Container Instances で実行することもできます。これは、Azure Kubernetes Service (AKS) などのより高レベルのサービスを導入することなく、Azure でコンテナーを実行するための最速かつ最も簡単な方法を提供します。

オンプレミスの例では Azure 仮想マシンを使用していますが、これはコンテナー テクノロジで置き換えることもできます。

これらのサービスを実行するもう 1 つのオプションは、Azure Kubernetes Service (AKS) です。 これにより、マイクロサービスを実行するためのサーバーレスの Kubernetes、統合された継続的インテグレーションと継続的デプロイ (CI/CD) エクスペリエンス、エンタープライズレベルのセキュリティとガバナンスが提供されます。

また、Azure Monitor を Application Insights と組み合わせて使用して、アプリケーション、コンテナー、データベースなどのリソースのパフォーマンスを分析および最適化したり、ネットワークの問題を監視および診断したりすることも検討してください。

このアーキテクチャでは、メッセージ ブローカーとして RabbitMQ を使用します。 Microsoft Azure では、Azure Queue StorageAzure Service Bus などのメッセージング ソリューションもネイティブにサポートしています。 比較については、Azure Storage キューと Service Bus キューの比較対照に関するページを参照してください。

Azure のアプリケーションとサービスは、Terraform スクリプトを使用してデプロイされます。 スクリプトの作成には、Azure ネイティブな Azure Resource Manager テンプレート (ARM テンプレート) または Bicep を使用することを検討してください。

シナリオの詳細

自動車製造では、無人搬送車 (AGV) を使用して、組み立てラインに部品を配送しています。 AGV は、Just-In-Time 製造と自動化された作業現場ロジスティックにおけるミッション クリティカルな部分です。 AGV を使用する作業現場では、一般的に 3 つの課題に直面しています。

  • 可用性。 サービスが途切れると、生産が中断されます。
  • 接続あり。 多くの場合、作業現場には、パブリック クラウドへの信頼性の高い接続がありません。
  • ベンダー ロックイン。 従来の AGV ソリューションは、専用の通信プロトコルに依存しています。

このサンプル アーキテクチャは、3 つの運用領域に分けることができます。

  • geo 冗長性、ダウンタイムのないフェールオーバー、99.9% の可用性、および効率的なディザスター リカバリーといった機能を備えた Azure ベースのフリート制御リファレンス アーキテクチャ。
  • Kubernetes と RabbitMQ 上に構築された、データセンターに依存しないオンプレミスのデプロイ。
  • 一般的な VDA 5050 仕様に基づいて構築された、ベンダーに依存しない AGV 通信。

考えられるユース ケース

このソリューションは、製造、自動車、輸送の各業種に最適です。 次のシナリオに適用されます。

  • お客様は現在、製造プロセスで AGV を使用している。
  • AGV の可用性が低いため、投資収益率 (ROI) に影響が出ている。
  • 作業現場には、パブリック クラウドとの接続に一貫性がない。
  • お客様は Open Manufacturing Platform (OMP) のメンバーである。
  • お客様は、OMP Autonomous Transport System (OMP ATS) ワーキング グループのメンバーである。

主な問題

低コストでの商品生産は、製造プロセスの自動化と、組み立てラインへの部品の Just-In-Time 配送を実現できるかどうかにかかっています。 自動化されたガイド付き車両は、部品を組み立てラインに自動的に配送することによってで、Just-In-Time 製造と作業現場ロジスティックの自動化の両方に貢献します。 たとえば、乗用車を大量生産する一般的な製造工場では、1 分ごとに 1 台の乗用車が完成します。 そのため、製造工場の組み立てラインが 1 分中断するごとに、数万米ドル単位で金銭的な損失が発生します。 自動車 OEM は、自動化されたシステムに対して高いレベルの信頼性と可用性を求めており、多くの課題に直面しています。

  • 可用性の問題。 既存の AGV フリート制御ソフトウェアは、99.9% の可用性要件を満たしていません。
  • 接続性の問題。 一部の生産工場では、Azure パブリック クラウドでホストされている AGV フリート制御ソフトウェアと作業現場の AGV 間の通信を可能にするために必要な帯域幅を備えた、十分に安定したインターネット接続が確立されていない場合があります。 そのため、このような生産工場のイントラネットの外部にあるデータセンターで、AGV フリート制御ソフトウェアをホストすることはできませんでした。
  • AGV ベンダーのロックインの問題。 AGV フリート制御ソフトウェアは、既存の AGV の専用通信プロトコルに依存しているため、既存の AGV を別のベンダーの新しい AGV と入れ替えることが不可能でした。

99.9% の可用性とディザスター リカバリーを実現するダウンタイムなしのフェールオーバー機能を備えた geo 冗長性をサポートするアーキテクチャによって、これらの問題を解決することができます。

考慮事項

以降の考慮事項には、ワークロードの品質向上に使用できる一連の基本原則である Azure "Well-Architected Framework" の要素が組み込まれています。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

可用性とスケーラビリティ

AGV フリート制御ソリューションを構成するアプリケーションとサービスは、可用性ゾーンを使用して 2 つの Azure リージョンにデプロイされます。可用性ゾーンとは、VM、アプリケーション、データをデータセンターの障害から保護するうえで役立つ Azure リージョン内の一意の物理的な場所です。 Azure App Service と AKS は、可用性ゾーンにもデプロイできます。 IoT Hub は、サービスのほぼすべてのレイヤーに冗長性を実装することで、リージョン内での高可用性を提供します。

セキュリティ

セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、「セキュリティの重要な要素の概要」を参照してください。

ID とアクセス制御には Microsoft Entra ID を使い、キーとシークレットの管理には Azure Key Vault を使います。

DevOps

マイクロサービスを Kubernetes または Azure App Service に自動的にデプロイする場合は、CI/CD プロセスを使用することをお勧めします。 Azure DevOps や GitHub Actions などのソリューションの使用を検討してください。

コストの最適化

コストの最適化とは、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳しくは、コスト最適化の柱の概要に関する記事をご覧ください。

一般に、Azure 料金計算ツールを使用してコストを見積もり、AKS 計算ツールを使用して Azure で AKS を実行するためのコストを見積もります。 その他の考慮事項については、「Microsoft Azure Well-Architected Framework」の「コストの最適化」を参照してください。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパル作成者:

次のステップ

製品ドキュメント:

Microsoft ラーニング パス:

Azure アーキテクチャ センターの概要に関する記事:

関連アーキテクチャ