組込みシステム用コンテナとは?
コンテナ技術により、システムの開発、テスト、デプロイ、管理の方法が根本的に変化しています。組込みシステム用のコンテナの主な機能は、アプリケーションとサービス、それらの依存関係にあるすべてのコンポーネントをパッケージ化し、同じハードウェア上で動作する複数のソフトウェアコンポーネントを切り分けることです。
コンテナは、クラウドネイティブアーキテクチャの一部として最もよく知られており、アプリケーションが実行されているハードウェアやオペレーティングシステムなどのインフラストラクチャから切り離されています。このアプローチの利点は、ソフトウェアパイプラインを自動化することで、手動によるエラーの排除、ツールの標準化、製品のイテレーション速度の加速化が可能になることです。CI/CDパイプラインにより、企業はコードの変更を中央のリポジトリにマージする継続的インテグレーション(CI)と継続的デリバリー(CD)を活用し、ソフトウェアデリバリープロセス全体の自動化と高品質なソフトウェアの迅速なデリバリーを実現することが可能になります。
コンテナ技術は、システムの開発と管理方法に根本的な変化をもたらしています。
また、組込み開発者は、コンテナによって実現されるインフラに依存しないスケーラブルな実行環境の恩恵を受けることができます。開発からテスト、デプロイ、運用、管理まで、開発者がチーム全体でリソース、パイプライン、結果を共有できるデザインプロセスを想像してみてください。開発ボードの数に制限されることなく、クラウドの拡張性を利用して、オンデマンドで複数のシステムインスタンスをセットアップすることができます。
アビオニクスの事例
アビオニクスシステムは、コンテナ化のトレンドを示す良い例です。アビオニクスシステムは、基本的にハードウェアベースのソリューションから、アジャイルで高度にアップグレード可能なソフトウェア定義型のインフラストラクチャへと進化しています。また、ハードウェアを大幅に交換することなく、新しい技術を即座に取り入れることが可能になっています。ソフトウェアコンテナ技術は、迅速なアップデートとパッチ適用により、サイバーセキュリティの脅威に対抗する効果的な手段となり、商用および航空宇宙・防衛の両分野に利益をもたらすことが期待されています。
組込み技術とクラウドネイティブ技術の橋渡し
コンテナによる利点があるにもかかわらず、従来の組込みアプリケーションの開発とデプロイは、クラウドネイティブアーキテクチャと大きく異なる点があります。
- 特定のハードウェアと密接に結合している
- C/C++のような低いレベルの言語で書かれている
- ハードウェア(ペリフェラルなど)と直接通信している
- 専用の開発・管理ツールを必要とする
- ライフサイクルが長く、ステートフルに実行される傾向がある
- 現場で使用されるハードウェアやソフトウェアがますます多様化している
コンテナ技術を組込みの世界に橋渡しするには、組込み開発をクラウドネイティブにインスパイアされたワークフローに適応させる必要があります。ただし、リアルタイム決定性、最適化されたメモリーフットプリント、クロスコンパイルとリンク用の統合ツールチェーン、セキュリティスキャンと品質保証のためのツール、ビルド環境のセキュリティ機能といったアプリケーションの要件は維持した形で、適応させる必要があります。
組込みLinux用コンテナ
LinuxコンテナはデータセンターやIT環境で広く導入されていますが、使いやすい統合済みプラットフォームやエコシステム全体への有意義なエンゲージメントがないため、OT(Operational Technology)領域における小フットプリントでライフサイクルが長いエッジ組込みシステムでのコンテナ利用はほとんどありません。産業用、医療用、自動車用システムなどの組込み機器では、多くの場合、軽量で信頼性が高く、ライフサイクルの長いソフトウェアが必要とされます。エンタープライズ Linux のような既存のコンテナテクノロジーとプラットフォームは、多くの場合、これらの組込みシステムで効果的に実行するには、肥大化しているか、頻繁にアップデートする必要があります。
ガートナー社は、2020年には5%未満であったエンタープライズアプリケーションの最大15%が、2024年までにコンテナ環境で実行されると予測しています。
ウインドリバーで開発され、GitHubで公開されているOverCと名付けられたWind River Linuxのコンテナ技術は、Cloud Native Computing Foundation (CNCF) とYocto Projectのコンポーネントを統合し、組込みシステム向けのコンテナの構築とデプロイのための総合フレームワークを定義するのに役立っています。このテクノロジーは、事実上あらゆるプロセッサアーキテクチャとオーケストレーション環境をサポートし、産業用制御システム、自律走行車、医療機器・装置、IoTゲートウェイ、無線アクセスネットワーク(RAN)製品、幅広いネットワーク家電など多様なアプリケーションの組込みソフトウェアプロジェクトにおけるコンテナ技術の採用にあたっての困難と障壁を取り除くことができます。
リアルタイムOS用コンテナ
コンテナ技術は複雑で、クラウド向けに構築されているため、組込みシステム、特にリアルタイムオペレーティングシステム(RTOS)が必要とされるエッジ上のミッションクリティカルなアプリケーションでの利用が抑制される場合があります。
しかし、アプリケーションとそれを支えるインフラの複雑化により、ますます巧妙になるハッカーに悪用される新たな潜在的攻撃ベクトルが生まれています。組込みシステムにおけるコンテナは、インテリジェントエッジに応答性と安全性の高いアプリケーションの提供を実現します。これらの機能により、航空宇宙・防衛関連企業、エネルギー供給企業、大規模製造企業、医療機関は、最も困難なアプリケーションに対して低レイテンシと高帯域幅のパフォーマンスを実現することができます。
ミッションクリティカルなアプリケーションにコンテナの可能性を活かすため、ウインドリバーは、市場をリードするRTOS、VxWorks®のOCI準拠コンテナサポートを開始し、開発者が使い慣れたIT環境と同じクラウド基盤、ツール、ワークフローを利用できることを可能にしました。RTOSアプリケーションのためのこの技術的な進歩は、さまざまな産業分野の重要なエッジコンピューティングアプリケーションに十分な堅牢性を備えた、小フットプリントの組込みソリューションの新時代を切り開くものです。
オープンコンテナイニシアチブ(OCI)
Docker、CoreOS、およびその他のコンテナ技術分野のリーダーたちは、コンテナ技術の進歩を推進し統一するために、ランタイム仕様とイメージ仕様の2つの仕様を策定しました。ランタイム仕様は、ダウンロードされたファイルシステムバンドル(OCIイメージ)の解凍をします。ファイルシステムバンドルは、OCIランタイムによって実行されるOCIランタイムファイルシステムバンドルに解凍されます。VxWorksは、これらのOCI仕様に完全に準拠しています。ツールおよびサンプルコードは、OCIおよびGitHubリポジトリから入手できます。
OCI準拠のVxWorks
図1は、VxWorksコンテナの作成とメンテナンスのフローを示しています。VxWorksベースのコンテナを含む典型的なDevSecOps環境では、ベストプラクティスのセキュリティフレームワークを使用してアプリケーションコードが作成されます。アプリケーションは、VxWorksベースのデバイスなど、対象となるエンドポイントであるホストと、コンテナレジストリにコンテナとしてリリースされます。コードのアップデートやパッチはすべてレジストリにプッシュして保存し、ホストシステム(航空機、コネクテッドカー、変電所など、コードの配布にコンテナを使用しているあらゆる車両、医療機器、IoT機器、製造施設)が必要に応じてレジストリからプルすることが可能です。
図2が示すように、アプリケーションのバイナリが開発されると、標準的なDockerファイルが生成されます。オープンソースのツールであるBuildahは、アプリケーションのコンポーネントを含むパッケージ化されたファイルバンドルであるコンテナイメージを作成します。その後、コンテナはコンテナレジストリにプッシュされ、ターゲットとなるホストにもコピーされます。
図1: VxWorksベースのコンテナの作成とアップデートのためのプロダクションプロセス
コンテナレジストリ(Docker hub、Amazon ECR、Harbor、またはその他のOCI準拠のレジストリ)は、アプリケーションのライフサイクルを通じて、安全なコンテナアクセスを可能にします。レジストリに投稿されたアップデートは、コンテナにパッケージ化されたアプリケーション(またはアプリケーション群)を使用する正規のホストによって、自動的にまたは手動で取得することができます。
コンテナを配布するプロセスは、いくつかの異なる方法で処理することができます。例えば、着陸後、航空機はメンテナンスエリアに移動し、空港のサービスインフラストラクチャに接続し、システムサーバーのレジストリから最近更新されたコンテナを引き出すことができます。コンテナのアップデートは、その後、航空機のシステムに組み込まれます。最新のワイヤレス機能を搭載した自動車は、5G基地局の前を通り、コンテナのアップデートを含む通信を受信し、自宅のガレージに駐車した後、それらのアップデートを自動的にインストールすることができます。
VxWorksのコンテナ実装に使用されている技術はOCIガイドラインに忠実に準拠しているため、開発者は、構築したコンテナがOCI基準に従って構築されたインフラストラクチャで確実に機能することを理解しています。一方、ソフトウェアデプロイメントのための独自ソリューションは、標準ベースのソリューションのようなアジリティと予測可能性に欠けているため、一般に業界では不人気です。しかし、OCI に準拠したツールは、イメージフォーマット仕様とランタイム仕様の両方に準拠しており、コンテナプラットフォームやコンテナエンジン、標準ベースのクラウドプロバイダ環境、オンプレミスインフラからなるエコシステムに効果的に対応します。
図2: コンテナの作成と配布のためのエンドツーエンドのワークフロー
コンテナのセキュリティ
航空宇宙・防衛、自動車アプリケーション、エネルギーグリッドとサブシステム、ロボティクスの実装など、高度なセキュリティを必要とする環境でコンテナ技術を成功させるには、ソリューションを堅牢化するための特別な対策が必要です。
クラウドネイティブのオープンソースレジストリは、通常、コンテナを使用する際にセキュリティのレイヤを提供します。例えば、Harbor では、ポリシーとロールベースのアクセス制御を採用して、コンテナコンポーネントを保護しています。各コンテナイメージは、既知の脆弱性がないことを確認するためにスキャンされ、配布前に信頼できるものとして署名されます。機密性が高くミッションクリティカルな環境において、Harborは、クラウドネイティブなコンピューティングプラットフォーム間でコンテナを移動させる際に、一定の保証を提供します。
グローバルなセキュリティ技術リーダーのうち、コンテナの使用に関して自社で十分なセキュリティポリシーとツールを備えていると回答したのはわずか45%です。
DevSecOpsソフトウェア開発のベストプラクティスに従うことは、コンテナセキュリティを保護する最も効果的な手段の1つです。国防総省は、セキュリティ侵害を防ぐために重要なDevSecOpsプロセスの概要をまとめた 「Container Hardening Guide」を公開しています。
ウインドリバーのアプローチ
VxWorks
VxWorksは、コンテナによるアプリケーションのデプロイメントをサポートする世界初かつ唯一のリアルタイムオペレーティングシステム(RTOS)です。VxWorksの最新リリース版にはOCIコンテナのサポートが含まれており、従来のITライクな技術を利用して、決定論とパフォーマンスを犠牲にすることなく、インテリジェントなエッジソフトウェアをより良く、より速く開発、デプロイすることができます。
» 詳細はこちらWind River Linux
Wind River Linuxは、DockerやKubernetesなどの開発とオーケストレーションフレームワークをサポートするコンテナ技術を搭載しています。
ウインドリバーは、組込み機器周辺のセキュリティを強化し、サイバーセキュリティの脅威から機器を保護するための、数十年にわたる経験を有しています。
Wind River Linuxは、OCI準拠でDockerへの互換性があり、Dockerよりも軽量で小フットプリントの、組込みシステムには欠かせないニーズを多く含んでいます。Yocto Project互換のクロスアーキテクチャのコンテナ管理フレームワークを提供するWind River Linuxは、組込み開発者のコンテナ利用を容易にし、加速する支援をします。
» 詳細はこちらWind River Helix Virtualization Platform
Wind River Helix™ Virtualization Platformは、多様なOSを採用し、決定論や安全認証を必要とする異機種混在のシステムで、コンテナの拡張性を活用しながら、組込みシステムの厳しい要件に対応することを可能にします。
» 詳細はこちら