自動車業界全体で、''ソフトウェア定義車両 (SDV)'' に移行するには、自動車ソフトウェア スタックの開発、デプロイ、監視、管理のための独自のアプローチが必要です。 自動車の相手先ブランド製造会社 (OEM) では、製品開発サイクルの早い段階でテストを行う ''シフトレフト戦略''が採用されています。
この記事のアプローチでは、車載ソフトウェア スタックで、クラウドベース環境での包括的なシミュレーションとテストを行います。 次のアーキテクチャ例では、Eclipse SDV ワーキング グループが提供するソフトウェア スタックとディストリビューションを利用する方法を概説します。 これらのコンポーネントを GitHub および Azure サービスと共に使用して、エンドツーエンドの自動車ソフトウェア スタックの開発、''ソフトウェア イン ザ ループ (SIL) テスト'' の実装、''ハードウェア イン ザ ループ (HIL) テスト'' の調整、エンジニア車両の検証を行うことができます。
この記事では、次の方法について説明します。
- 最先端の開発者ツールを開発プロセスに統合する。
- 自動車のソース コードを操作して管理する。
- 継続的インテグレーションと継続的デリバリー (CI/CD) パイプラインの一部として仮想車両環境を自動的に構築し、仮想テストの実行を管理する。
- SIL テスト (仮想テスト) と HIL テストのデプロイを調整する。
- 高度にスケーラブルなサービスを使用して、検証テストと実地使用中に生成されたデータを収集および分析する。
アーキテクチャ
この図は、自動車の SDV ツールチェーン アーキテクチャを示しています。
このアーキテクチャの PowerPoint ファイルをダウンロードします。
ワークフロー
このアーキテクチャは、次の 6 つの主な構成要素で構成されています。
SDV ツールチェーンは、オープンで構成可能なプラグ アンド プレイ アプローチです。 このアプローチでは、Microsoft 開発者および DevOps の資産とサービスが利用されます。 構成可能で柔軟な ''仮想電子制御ユニット (vECU)'' と ''仮想ハイ パフォーマンス コンピューター (vHPC)'' 環境を Azure 上に確立することで、車載シリコンへの依存が軽減されます。 これらの環境は、自動車ソフトウェアの開発、テスト、検証を加速させるのに役立ちます。 このアプローチにより、エッジおよび車載シリコンとの互換性が確保され、ビット、タイミング、およびコード パリティが保証されます。
自動車ソフトウェア スタックには、さまざまなテクノロジとフレームワークが含まれています。 多くの場合、''Eclipse Foundation ソフトウェア定義車両ワーキング グループ'' など、業界標準とコラボレーションの取り組みによって、これらのテクノロジとフレームワークが管理されます。 Eclipse プロジェクトには、車載デジタル ツイン抽象化レイヤー、高度な運転支援システム (ADAS)、自動運転ソリューションなど、車両の接続、メッセージング、通信プロトコル用の非差別化コンポーネントが含まれます。
自動車ソフトウェア スタックでは、自動車メーカーやソフトウェア開発者のための堅牢な基盤が提供されます。 自動車エコシステム全体のシームレスな統合と互換性が確保され、技術的進歩へのコミュニティ主導のアプローチが提供されます。
GitHub Marketplace と Azure Marketplace を使用すると、レベル 1 のベンダーや自動車ソフトウェア ツール ベンダーなどのパートナーは、マネージド自動車ソフトウェア スタック、vECU、開発者ツールなどのソリューションを提供できます。 これらのソリューションは、SDV ツールチェーンと統合できます。
HIL テストでは、ターゲット ハードウェアでテストと検証を実行できます。 エッジおよび車載シリコンを使用した検証の場合、HIL テストでは、SIL テストと同じオーケストレーションの概念が使用されます。 特殊なハードウェアは、高速ネットワーク アクセスとセキュリティで保護されたネットワークに接続されています。
車両メッセージング、データ、および分析はでは、次の目的で必要なインフラストラクチャが提供されます。
- 車両とデバイスの管理。
- 車載ソフトウェア コンポーネントへの依存関係を持つ接続された車両アプリケーションのデプロイと運用。
- エンジニアリング、運用、モビリティ ベースのサービスのためのデータ分析の提供。
コンポーネントとシステム検証のためのデータ収集と分析については、「自動車テスト車両のデータ分析」を参照してください。
自律走行車運用 (AVOps) により、自動車 OEM は Azure で自動運転ソリューションを開発できます。 AVOps ソリューションでは、次の内容について説明します。
- 自律走行車のデータ操作 (DataOps) を管理する方法。
- 知覚とセンサーの融合 (MLOps) のための自動特徴抽出、ラベル付け、モデル トレーニング。
- シミュレートされた環境 (ValOps) で開発されたモデルのテスト。
このソリューションは、トレーニング済みのモデルを提供し、ソフトウェア検証を実行することで、SDV ツールチェーンと統合されます。
このアーキテクチャでは、一般的な SDV ツールチェーンと自動車ソフトウェア スタックに重点を置いています。 Eclipse uProtocol、Eclipse Chariott、Eclipse Ibeji、Eclipse Freyja、Eclipse Agemo など、Eclipse SDV ワーキング グループの Purview の下でオープンソース プロジェクトを使用する実装の例が示されます。
Microsoft は、車両ソフトウェア プラットフォーム用のオープンソース コラボレーションのフォーラムである Eclipse ソフトウェア定義車両ワーキング グループのメンバーです。
自動車の SDV ツールチェーンは、次のコンポーネントで構成されています。
開発ツールには、GitHub、Microsoft Dev Box、Visual Studio Code、Azure Container Registry などの開発およびコラボレーション サービスが含まれます。 このアーキテクチャでは、GitHub のコード スキャン機能も使用されます。 CodeQL 分析エンジンにより、脆弱なコードがマージされてリリースされる前に、ソース コードのセキュリティバグが検出され、pull request でアラートが表示されます。
開発、検証、統合は、メタデータとオーケストレーション サービスを組み合わせた方法です。 これにより、開発者はオンデマンドの仮想実行環境を構成、構築、デプロイ、調整できます。 開発者は、開発とテストのプロセスを効率化し、既存のツールチェーンと統合し、複数のアプリケーション形式、バイナリ、オペレーティング システム、ランタイム環境をサポートできます。
実行環境は、信頼性が高く、反復可能で、監視可能なクラウドおよびエッジ環境を実現する Azure サービスとコンポーネントで構成され、自動車ソフトウェア スタックの構築、テスト、検証が行われます。 これらのコンポーネントには、次のものが含まれる場合があります。
- Azure Deployment Environments。
- Azure Compute Gallery。
- Container Registry。
- Azure Arc。
- ARM64 ベースの Azure 仮想マシン (VM) やハイ パフォーマンス コンピューティングなどの Azure コンピューティング。
- Azure ネットワーク サービスと接続サービス (Azure ExpressRoute など)。
次のワークフローは、開発者が自動車ソフトウェアの仮想テストを定義、調整、実行する方法を示しています。
ワークフロー: vECU をデプロイする
このソリューションでは、架空の会社 Contoso Automotive の自動車ソフトウェア開発者が、次のことを行うために自動車 SDV ツールチェーンをどのように使用するかについて説明します。
- 開発環境を数分で設定する。
- SIL クラウド インフラストラクチャの更新変更をトリガーして、ARM64 ベースの VM 上で実行される vECU をデプロイする。
Contoso Automotive は、今後の車両モデルに新しい自動車ハイ パフォーマンス コンピューティング (HPC) ユニットを追加しており、コンテナー化されたアプリケーションを開発するために新しい開発チームをオンボードする必要があります。 車両のハードウェアはまだ使用できませんが、タイムラインが圧縮されているということは、ソフトウェア機能を並行して開発および検証する必要があることを意味します。
このアーキテクチャの PowerPoint ファイルをダウンロードします。
自動車開発者は、Microsoft 開発ボックスを作成して接続します。 開発ボックスは、必要なすべての開発ツール (Visual Studio Code や Android Studio など)、および Contoso Automotive アプリケーションと互換性を持たせるために必要なすべての拡張機能 (GitHub Copilot など) で事前構成されています。
自動車開発者は、今後の車両構成、含まれている HPC と ECU、および SIL 検証を実行するために必要なデプロイについて説明する自動車アプリケーション コードとメタデータのチェックアウトを実行します。
自動車開発者は、メタデータ拡張機能を使用して、エンジニアリング チームからの新しい情報に基づいて HPC の特性を変更するなど、構成を調整します。
構成を変更すると、メタデータ処理拡張機能がトリガーされます。 メタデータ検証が実行され、必要なすべての成果物が生成され、実行環境のデプロイ キャンペーンが構成されます。
すべての構成変更が完了した後、開発者は、デプロイのために GitHub アクションをトリガーする pull request を送信します。
デプロイ GitHub アクションにより、デプロイ キャンペーンを実行するメタデータとオーケストレーション サービスがトリガーされます。
メタデータとオーケストレーション サービスでは、Azure 開発環境を使用して必要なコンピューティングをデプロイし、新しいバージョンの自動車電子アーキテクチャをシミュレートします。
メタデータとオーケストレーション サービスによって、キャンペーンに基づいてコンピューティングの目的の状態が設定されます。 サービスでは、成果物ストアを使用して、必要な vHPC および ECU イメージをマウントして構成します。
ワークフロー: 自動車アプリケーション用のソフトウェア オーバー ジ エア (SOTA) の更新
Contoso Automotive は、統合テストを実行するために、コンテナー化された自動車アプリケーションをエンジニアリング テスト車両にデプロイしたいと考えています。 自動車開発者は、新しいバージョンのアプリケーションを構築、テスト、検証し、車両にデプロイします。
このアーキテクチャの PowerPoint ファイルをダウンロードします。
自動車開発者がリリースを作成します。 リリースには、ソフトウェア スタック コンテナーの目的の状態の定義と構築の定義が含まれています。
ツールチェーンとオーケストレーション サービスによって、リリース プロセスをトリガーされます。 サービスによって、ソフトウェア コンテナーの構築、検証、リリースに必要なインフラストラクチャがデプロイされます。
実行中に、アプリケーションが、コンテナー ベースのツールを使用して構築、検証、およびリリースされます。 ツールの要件に応じて、コンテナー化されたアプリケーション用に Azure Kubernetes Service (AKS) にデプロイすることも、専用 VM にデプロイすることもできます。
構築の完了後、リリースされたコンテナーの Container Registry に結果がプッシュされ、変更が OTA サーバーに登録されます。
OTA クライアントには、コンテナー ベースのアプリケーション専用の OTA エージェントがあります。 目的の状態シーク エージェントは、ツールチェーンとオーケストレーション サービスに接続されて目的の状態定義が取得されます。
コンテナー オーケストレーション エンジンにより、Container Registry から目的のコンテナーがダウンロードされてアクティブ化されます。
ワークフロー: 自動車ソフトウェア スタック
このソリューションでは、汎用の自動車ソフトウェア スタックによって、その状態が Azure クラウドと同期されます。
スタックには、次のコンポーネントがあります。
''サービス レジストリ'' を使用すると、車両内のサービスを登録して検出できます。
''動的トピック管理'' を使用すると、サービスでメッセージをサブスクライブして名前付きトピックに公開し、通信プロトコルを抽象化できます。
''車載デジタル ツイン サービス'' では、ECU やコンピューティング ユニット (AD/ADAS、インフォテインメントなど) からの信号を含め、車両の状態が維持されます。
''デジタル ツイン クラウド同期'' では、車両のローカル状態をクラウド内の状態と同期して、自動車への直接接続を必要としないデジタル製品とサービスが提供されます。
このアーキテクチャの PowerPoint ファイルをダウンロードします。
すべてのコンポーネントでは、サービス レジストリを介して機能が登録されます。
車両コンピューティングでは、車載デジタル ツイン サービスのデジタル ツイン プロバイダーへの状態の説明が登録されます。 登録後、コンピューティング ユニットでは状態に関する更新を公開できます。
- 車両コンピューティングでは、複雑な状態オブジェクトと相互作用が登録されます。
- 車両 ECU では、自動車アプリケーションで利用可能な信号と、受け入れることができるコマンドが登録されます。
車載デジタル ツインでは、動的なトピック管理に対する状態の変更と更新が公開されます。 これらの更新はトピックにまとめられます。
自動車アプリケーションは、では、動的トピック管理によって管理される任意のソースからのメッセージをサブスクライブできます。 これらのアプリケーションは、関連するトピックにサブスクライブされ、状態の変化に対応します。 また、独自のメッセージを公開することもできます。
また、車載デジタル ツイン サービスにより、選択したトピックがデジタル ツイン クラウド同期サービスに公開されます。
デジタル ツイン クラウド同期では、Cartographer を使用して、トピック名を (デジタル ツイン マッピング サービスを介して) クラウド上の同等の名前にマップできます。 この調和により、車両とクラウド ソフトウェア間および車両モデル間の依存関係が減少します。
クラウド コネクタでは、更新をクラウドに公開し、他のサービスやアプリケーションによって公開された状態変更を受信するためにサブスクライブします。
Azure Event Grid では、関連するサービスとアプリケーションにメッセージをルーティングします。 車両の状態はサービスを介して格納されます。 たとえば、Azure Cache for Redis では、高速アクセスと取得のために最新の既知の値が格納される場合があり、Azure Data Explorer では、短期の車両の状態の履歴と分析が提供される場合があります。
コンポーネント
このアーキテクチャでは、次の GitHub および Azure コンポーネントが使用されます。
開発ツール
Container Registry は、すべての種類のコンテナー デプロイのプライベート レジストリでコンテナー イメージと成果物を構築、格納、および管理するために使用できるサービスです。 自動車ソフトウェアでは、コンテナーベースの自動車アプリケーションとワークロードが採用されています。 SDV ツールチェーンでは、コンテナーの開発、デプロイ プロセス、パイプラインに Azure コンテナー レジストリが使用されます。
Dev Box を利用すると、開発者は、プロジェクト固有のツール、ソース コード、事前構築済みのバイナリを使用してすぐにワークフローを統合できるようにカスタマイズできる開発ボックスともいう、すぐにコーディングできるクラウドベースのワークステーションにセルフサービスでアクセスできます。
GitHub は、組織の内外の開発者と共に、コードのホストとレビュー、プロジェクトの管理、共同作業、ソフトウェアの構築に使用できる開発プラットフォームです。
Visual Studio Code は、Windows、macOS、Linux で使用できる軽量のソース コード エディターです。 これには、複数の言語とランタイム用の拡張機能の豊富なエコシステムがあります。
実行環境
Azure Deployment Environments では、構成済みの Azure リソースのコレクションが提供されます。 プロジェクト ベースのテンプレートを使用して、開発チームがインフラストラクチャを迅速かつ簡単に作成できるようにします。 テンプレートでは、セキュリティを最大化しながら、一貫性とベスト プラクティスが確立されます。
Azure コンピューティングは、開発者が自動車ソフトウェア スタック、アプリケーション、ワークロードを VM とコンテナーで実行できるようにする包括的なクラウド サービス スイートです。 メモリ最適化、CPU 最適化、高パフォーマンス、汎用コンピューティングなど、多くのコンピューティングの種類があります。
コンピューティング ギャラリーは、管理を容易にするリソースのバージョン管理とグループ化をサポートするサービスです。 イメージは、コミュニティ、サブスクリプション全体、および Microsoft Entra ID テナント間で共有できます。 また、各 Azure リージョンのリソース レプリカを使用してデプロイをスケーリングすることもできます。 コンピューティング ギャラリーでは、自動車ソフトウェア スタック成果物を構築して整理することができます。
Azure Arc では、ガバナンスと管理が簡素化され、一貫性のあるクラウドが HIL 管理プラットフォームに提供されます。 自動車 OEM は Azure Arc を使用して、オンプレミスおよびクラウドベースのデータセンター全体で、ますます複雑化する HIL 環境を制御および管理できます。
Azure Blob Storage は、自動車ソフトウェア スタックで生成および使用される、イメージ、ビデオ、オーディオ、ドキュメントなど、あらゆる種類の非構造化データに対して非常にスケーラブルなオブジェクト ストレージを提供するサービスです。
Azure ネットワーク サービスは、グローバルな安全で信頼性の高いサービスです。 自動車ソフトウェア スタックと開発ツールでは、HIL ファームにアクセスして自動およびアシスト運転ソリューションを開発およびテストできるように、データ処理パイプラインが必要です。 Azure のネットワーク サービスでは、接続サービス、アプリケーション保護サービス、アプリケーション配信サービス、ネットワーク監視など、さまざまなネットワーク機能が提供されます。
代替
アーキテクチャの実装に選択する Azure サービスは、多くの要因によって異なります。
「このシナリオのデプロイ」セクションの例では、AKS が使用されます。 サーバーレス Kubernetes は、マイクロサービスの実行、エンタープライズ レベルのセキュリティとガバナンスの提供、統合 CI/CD エクスペリエンスの提供に使用されます。 代替の高速かつ簡単な方法として、Azure Container Instances でマイクロサービスを実行できます。 この代替方法では、AKS のようなより高いレベルのサービスを採用する必要はありません。
「このシナリオのデプロイ」セクションの例では、Azure Event Hubs または Azure Service Bus を使用して uBus サービスを実装することが提案されています。 詳細については、「Azure メッセージング サービスの選択」を参照してください。 メッセージング サービスは多くの場合、補完的なものであり、複数のサービスを使用できます。
このアーキテクチャのアプリケーションとサービスは、Azure Resource Manager テンプレートまたは Bicep を介してデプロイされます。 代わりに、Terraform スクリプトを使用して、クラウド インフラストラクチャをプロビジョニングおよび管理することもできます。
アーキテクチャの車両メッセージング、データ、分析レイヤーの代替については、「代替」を参照してください。
シナリオの詳細
自律型の接続された SDV は、機能、保守性、信頼性のまったく新しい世界を開きます。 ハードウェアとソフトウェアを分離させると、OEM は、特定の機能やサービスに対応する独立したアプリケーションを開発できます。 この方法により、ソフトウェアを簡単に更新して車両プラットフォーム全体に追加できます。
自動車メーカーとそのサプライヤーは、短い開発サイクルや頻繁なリリースに柔軟で適応可能なアジャイル ソフトウェア開発サイクルを可能にするために、自動車運用を調整することをお勧めします。 これらのサイクルは、コラボレーションと継続的な改善を保証するのに役立ちます。
標準化されたオープンで構成可能なツールチェーン戦略がなければ、OEM のツールは散在する可能性があります。 真にアジャイルなソフトウェア開発戦略を実現するには、Azure にネイティブな最新のクラウドベース プラットフォームに基づく統合ツールチェーンが企業に必要です。 このプラットフォームでは、開発者が共同作業を行い、ソフトウェアを再利用できるようにする必要があります。 サード パーティの開発者にアプリケーションを作成する機会を提供する必要があります。 このプラットフォームは、ソフトウェアに関する強力な専門知識を持っているものの、以前の自動車ハードウェアの経験がない開発者にとって特に役立ちます。
この自動車の例のアーキテクチャは、急速に進化する自動車業界の要求を満たしています。 シフトレフトの原則が適用され、ソフトウェアおよびハードウェア コンポーネントの早期統合が強調されます。 開発の初期段階から継続的なテストと検証が可能になります。 仮想化は極めて重要な役割を果たし、仮想プロトタイプとテスト環境を作成してイノベーションを促進し、物理プロトタイプの要件を減らすことができます。
このアーキテクチャの中核となるのは、その堅牢な CI/CD パイプライン自動化であり、車両のライフサイクル全体にわたるソフトウェア更新のシームレスな統合、テスト、デプロイが保証されます。 この機敏性により、セキュリティの脆弱性に迅速に対処し、パフォーマンスを向上させ、新機能を提供する高速なソフトウェア更新が可能になります。 これは、消費者に安全で機能豊富な運転体験を提供するのに役立ちます。
次の図は、自動車の SDV ツールチェーン アーキテクチャの一般的な概要を示しています。
このアーキテクチャの PowerPoint ファイルをダウンロードします。
考えられるユース ケース
開発者のオンボード: 完全に構成された自動車開発環境を実装して、自動車ソフトウェア開発者のオンボードを高速化します。
効率的な開発: さまざまなハードウェアとソフトウェアの組み合わせの動作をシミュレートします。 開発プロセスの早い段階で、エッジまたは車載シリコンへの依存関係を減らします。
SIL 検証: 自動構築、テスト、検証パイプラインを実行して、ソフトウェア アプリケーションの動作を検証します。 より高速な開発サイクルのためにクラウド上のコンピューティング リソースを使用します。
HIL 検証: HIL ファームのデプロイと監視を簡略化します。
テスト車両検証: ソフトウェア アプリケーションのソフトウェア メトリック、ログ、トレースおよび車両テレメトリと信号データを収集します。 そのデータを使用して、検証、根本原因分析、承認のための車両動作の包括的なビューを作成します。
ソフトウェア リリース: DevOps プラクティスを介して車両に対して更新および管理できる、追跡可能なソフトウェア リリースを作成します。
継続的な改善: 実地から収集された情報を使用して、ソフトウェア アプリケーションの改善を促進します。
推奨事項
次の推奨事項は、確実に Azure 環境を効果的に管理するのに役立ちます。 優先すべき要件がない限り、これらの推奨事項に従ってください。
セキュリティで保護され、効率的でコスト効率の高い環境を確保するのに役立つように Azure サービスをデプロイして構成するときは、ベスト プラクティスに従ってください。
実装要件に従って Azure リソースを定義します。 これらのリソースには、VM、Kubernetes クラスター、メッセージング サービス、データおよび分析サービスを含めることができます。
デプロイを自動化して一貫性を維持できるように、コードとしてのインフラストラクチャ (IaC) 用の Resource Manager テンプレートを実装します。
ロールベースのアクセス制御 (RBAC) を実装して、最小限の特権でユーザーとサービスにアクセス許可を付与します。
Azure Security Center を使用して、セキュリティの脅威を事前に監視して軽減します。
スケーラビリティと冗長性を向上させるために、Azure ロード バランサーと可用性セットまたは可用性ゾーンの使用を検討してください。
コストを最適化し、パフォーマンスを向上させられるように、Azure リソースのパフォーマンスと使用状況を定期的に監視します。 Azure Monitor や Microsoft Cost Management などのツールを使用します。
考慮事項
以降の考慮事項には、ワークロードの品質向上に使用できる一連の基本原則である Azure "Well-Architected Framework" の要素が組み込まれています。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。
[信頼性]
信頼性により、顧客に確約したことをアプリケーションで確実に満たせるようにします。 詳細については、「信頼性の重要な要素の概要」を参照してください。
サービス指向で、最新の CI/CD を使用した Azure での分散通信プロトコル プラットフォームの実装をサポートするエンドツーエンドのアプリケーション インフラストラクチャを実行できます。 このソリューションを使用する場合は、信頼性の高い高可用性アーキテクチャが必要です。 AKS でサービスを管理および実行するためのアーキテクチャ ガイダンスとベスト プラクティスについては、AKS の概要に関するページを参照してください。
HIL テストは、自動車ソフトウェア開発プロセスとテスト戦略において不可欠で重要な部分です。 HIL ファームのネットワーク アーキテクチャを設計して実装するときは、ExpressRoute を使用した高可用性のための設計を検討してください。 この戦略を使用して、単一障害点を減らし、開発およびテスト チームのリモート環境の可用性を最大化します。
セキュリティ
セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、「セキュリティの重要な要素の概要」を参照してください。
セキュリティは、アーキテクチャの最も重要な側面の 1 つです。 複雑なシステムのセキュリティを確保するには、ビジネス、社会、技術の状況を理解する必要があります。 開発プロセスの早い段階でセキュリティの問題や致命的な欠陥を見つけて修正できるように、GitHub のコード スキャン機能を実装することを検討してください。 GitHub では、AUTOSAR C++ および CERT C++ コーディング標準がサポートされています。これにより、機能的に安全なアプリケーションの開発が可能になります。
GitHub のエンドツーエンドのサプライ チェーンのセキュリティ保護について検討してください。
暗号化キー、証明書、接続文字列、パスワードなど、機密性の高いビジネスに不可欠な要素を扱う場合は、エンドツーエンドのセキュリティを維持するために Azure Key Vault を採用することを検討してください。 Key Vault マネージド ハードウェア セキュリティ モジュール (HSM) では、ソフトウェア開発とサプライ チェーンのプロセス全体を強化する堅牢なソリューションが提供されます。 Key Vault マネージド HSM を使用すると、自動車アプリケーションを使って機密性の高い資産を安全に格納および管理し、潜在的なサイバー セキュリティの脅威から保護された状態を確実に維持するのに役立ちます。 RBAC を使用して重要なリソースへのアクセスとアクセス許可を規制することで、セキュリティをさらに強化できます。
コストの最適化
コストの最適化とは、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳しくは、コスト最適化の柱の概要に関する記事をご覧ください。
vECU を作成するときは、VM のサイズと要件が一致していることを確かめてください。 必要以上に大きなサイズを使用するように構成を変更すると、特に、実行時間の長いタスクを行うために複数のマシンが並列に動作する場合は、コストが増加します。
スピードが重視されない構築、検証、テストのタスクについては、Azure Spot Virtual Machines の使用を検討してください。 未使用の容量を利用して、大幅なコスト削減を実現できます。
Azure Consumption Commitment がある場合は、開発ツールと vECU を実行環境にデプロイするときに、Azure Marketplace の対象パートナー オファリングを使用することを検討してください。
自律走行車開発ワークロードの実行に関するヒントについては、AVOps ソリューションの作成に関するページを参照してください。
Copilot では、リアルタイムのコード候補とオートコンプリートが提供され、ソフトウェア開発プロセスを加速させます。 自動車ソフトウェア エンジニアは、Copilot を使用してコードを迅速かつ効率的に記述できるため、新しい車両の機能と更新の市場投入までの時間が短縮されます。
オペレーショナル エクセレンス
オペレーショナル エクセレンスは、アプリケーションをデプロイし、それを運用環境で実行し続ける運用プロセスをカバーします。 詳細については、「オペレーショナル エクセレンスの重要な要素の概要」を参照してください。
自動車の SDV ツールチェーンでは、次のような主なソフトウェア エンジニアリング戦略が採用されています。
- IaC 環境のプロビジョニング。
- 自動車ソフトウェア スタックを構築およびリリースするための CI/CD パイプライン。
- シフトレフト アプローチに移行するための自動テスト。
- 環境間の構成のずれを回避するためのコードとしての構成。
問題の一貫性、繰り返し、早期検出のために、すべてのワークロードでこれらの主な戦略を採用することを検討してください。
Azure クラウドおよびオンプレミス環境、HIL テスト、検証ファーム全体のガバナンスと管理を簡素化するために、Azure Arc によって有効になっているインフラストラクチャを検討してください。
Copilot の AI を利用した支援により、ヒューマン エラーの可能性を減らし、コーディング プラクティスを標準化することで、全体的なコード品質を向上させることができます。 ソフトウェアの安全性と信頼性が最も重要な自動車業界では、高品質のコードが不可欠です。
パフォーマンス効率
パフォーマンス効率とは、ユーザーによって行われた要求に合わせて効率的な方法でワークロードをスケーリングできることです。 詳細については、「パフォーマンス効率の柱の概要」を参照してください。
パフォーマンス効率を向上させるために並列化する可能性がある構築およびテスト パイプラインのタスクを決定します。
次のセクションの分散通信プロトコルの例に基づくパフォーマンスの高いアプリケーションとワークロードに対して、パフォーマンス効率パターンを実装することを検討してください。
このシナリオのデプロイ
Eclipse SDV のメイン テナントは、実装の柔軟性を提供するコードソース ファーストのアプローチです。 次の例では、既存の Eclipse プロジェクトを使用し、Azure サービスとの統合について説明します。
例: Azure 上の分散通信プロトコル
Eclipse uProtocol は、自動車業界で使用されている多くの分散通信プロトコルの 1 つです。 これは、既存の自動車およびインターネット標準に基づいて構築された、トランスポートに依存しない階層化された通信プロトコルです。 検出、サブスクリプション、メッセージングのためのユビキタス言語が提供されます。これにより、異種システム上で実行されるアプリとサービスが相互に通信できるようになります。
次の概要では、分散通信プロトコルを実装するために必要なサービスについて説明します。 この例では、uProtocol と Azure サービスを使用します。
概要
このアーキテクチャの PowerPoint ファイルをダウンロードします。
メッセージは、車両のクラウド コネクタから Event Grid に送信されます。 メッセージは、MQTT 経由で uProtocol 定義を介して転送されます。
クラウド ゲートウェイは、デバイスがバックオフィスのドメインまたはデバイスと通信するために接続するクラウド サービスです。
uStreamer は、デバイス上の uEs がさまざまなトランスポート層プロトコルとシームレスに通信できるようにするイベント ディスパッチャーです。 ファイル転送やイベント バッファリングなどの機能が実行されます。 たとえば、イベントは、あるトランスポートから次のトランスポートに移動するときに、uStreamer を通過します。 uStreamer は IP ルーターに似ています。
uBus は、一般的なトランスポート経由で uEs 間で CEs をディスパッチするメッセージ バスです。 マルチキャストと転送の機能が提供されます。 ネットワーク スイッチのように機能します。
uCDS では、場所 (アドレス) やプロパティなど、uEs が相互に検出する手段が提供されます。
uSubscription は、uEs のパブリッシャーとサブスクライバーの設計パターンを管理するサブスクリプション管理サービスです。
uTwin は、公開済みイベントのローカル キャッシュです。 uTwin では、公開されたメッセージが主キーを介して格納されます。 ローカル ソフトウェア コンポーネントではキーを取得できます。 この主キーは、デバイス名を含む、トピックの完全な名前です。 主キーはトピックを表すので、特定のトピックの最後のイベントのみが uTwin に格納されます。 特定のデバイス名を含むキーを持つデバイスの uTwin インスタンスに格納されているイベントのコレクションは、そのデバイスのデジタル ツインを表します。 車両イベントの例としては、タイヤの空気圧、窓の位置、ギアの位置、車両モード (運転または駐車) の更新が含まれます。 イベントは、車両で公開され、車両の運転や機能のアクティブ化に使用される任意の情報にすることができます。
uEs は、エンド ユーザーに機能を提供するアプリケーションとサービスです。 これらのアプリでは、デジタル ツインの検出、サブスクリプション、アクセスにコア uEs が使用されます。
次の表は、Azure での uProtocol の実装に関連する推奨されるサービスを示しています。
uProtocol コンポーネント | 機能 | Azure サービス |
---|---|---|
クラウド ゲートウェイ | MQTT ブローカー | Event Grid |
uStreamer | ファイル転送、イベント バッファリング、D2D ルーティング、プロトコル変換 | Event Hubs、Storage、Functions、AKS |
uDiscovery | サービス検出 | AKS のマイクロサービス |
uBus | マルチキャスト転送 | Event Hubs、Service Bus、Event Grid |
uSubscription | Pub/Sub トピックの管理 | AKS のマイクロサービス |
uTwin | 最後の既知の状態 | Azure Digital Twins、Azure Cache for Redis |
uProtocol コンポーネント、SDK、およびドキュメントの詳細については、uProtocol GitHub リポジトリに関するページを参照してください。
uProtocol のデバイスをプロビジョニングする
このアーキテクチャの PowerPoint ファイルをダウンロードします。
ファクトリ システムでは、車両デバイスが目的の構築状態になるよう指示します。 指示には、ファームウェアとソフトウェアの初期インストールおよび構成が含まれます。 このプロセスの一環として、ファクトリ システムではデバイス証明書を取得して書き込みます。 公開キー基盤プロバイダーによって証明書が作成されます。
ファクトリ システムでは、車両およびデバイス プロビジョニング API を使用して車両およびデバイスを登録します。
デバイス登録アプリケーションでは、デバイス プロビジョニングとデバイス登録でデバイス ID を登録します。
認証と承認に関する情報は、Microsoft Entra ID に格納されます。
ファクトリ システムでは、デバイス プロビジョニング クライアントをトリガーして、デバイス プロビジョニング サービスに接続します。 デバイスでは、Event Grid で割り当てられた MQTT ブローカー機能への接続情報が取得されます。
ファクトリ システムでは、デバイスをトリガーし、初めて Event Grid の MQTT ブローカー機能への接続を確立します。 Event Grid では、クライアント認証ルート証明書を使用してデバイスを認証し、クライアント情報を抽出します。
Event Grid では、Microsoft Entra ID に格納されているデバイス情報を使用して、許可されたトピックの承認を管理します。
OEM ディーラー システムでは、部品交換が必要な場合に新しいデバイスの登録をトリガーします。
例: Eclipse 自動車ソフトウェア スタック
次のアーキテクチャでは、Eclipse プロジェクト コンポーネントに基づく自動車ソフトウェア スタックについて説明します。 このアーキテクチャでは、Eclipse uProtocol を通信プロトコルとして使用できます。
このアーキテクチャの PowerPoint ファイルをダウンロードします。
Eclipse Chariott は、アプリケーションとやり取りするための共通インターフェイスを提供する gRPC サービスです。 アプリケーションでは Eclipse Chariott のサービス レジストリに登録して、機能をアドバタイズし、サービス検出を有効にすることができます。
Eclipse Ibeji では、車両のハードウェア、センサー、および機能へのアクセスを提供する拡張可能なオープンで動的なアーキテクチャを通じて、車両の状態とその機能をデジタル表現する機能が提供されます。
Eclipse Freyja は、車両のデジタル ツイン状態 (インスタンス デジタル ツイン) とクラウド内のデジタル ツイン状態 (正規デジタル ツイン) の間の同期を可能にするアプリケーションです。
Eclipse Agemo は、Eclipse Ibeji や Eclipse Chariott を含む、車両内のアプリケーションの公開とサブスクライブの機能を提供する gRPC サービスです。
共同作成者
この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパルの作成者:
- Daniel Lueddecke | クラウド ソリューション アーキテクト、自動車
- Mario Ortegon-Cabrera | プリンシパル プログラム マネージャー、MCI SDV モビリティ
- Felipe Prezado | プリンシパル プログラム マネージャー、MCI SDV モビリティ
- Sandeep Pujar | プリンシパル PM マネージャー、Azure メッセージング
- Ashita Rastogi | プリンシパル プログラム マネージャー、Azure Messaging
- Boris Scholl | ゼネラル マネージャー、パートナー アーキテクト - Azure Cloud AI
その他の共同作成者:
- Frederick Chong | プリンシパル PM マネージャー、MCIGET SDV モビリティ
- Frank Kaleck | 業界アドバイザー - 製造、モビリティ 自動車
- Mehmet Kucukgoz | プリンシパル PM マネージャー、Azure IoT Hub
公開されていない LinkedIn プロフィールを見るには、LinkedIn にサインインしてください。
次のステップ
- GitHub では、AUTOSAR C++ と CERT C++ コーディング標準のサポートが追加されました
- Copilot を使い始める
- Dev Box 開発者ポータルを使用して開発ボックスを作成して接続する
- 自動車のメッセージング、データ、および分析の参照アーキテクチャ