組み込み用コンテナとは?
組み込み用コンテナとは?

組み込み用コンテナとは?

コンテナ化技術が、組み込みプラットフォームとエンタープライズプラットフォーム間の
ギャップを埋め、新たなIoTの要件に対応する方法についてご紹介します。

組み込み用コンテナとは?

コンテナ技術は、システムの開発、テスト、デプロイ、管理のあり方を根本から変えつつあります。組み込みコンテナの主な機能は、アプリケーションやサービスとそのすべての依存関係をまとめてパッケージ化し、同じハードウェア上で実行される複数のソフトウェアコンポーネントを分離することです。

コンテナといえば、アプリケーションが実行されるインフラ(ハードウェアやオペレーティングシステムを含む)から切り離される「クラウドネイティブアーキテクチャ」の一部として、最もよく知られています。 このアプローチの利点としては、ソフトウェアパイプラインを自動化して人為的なミスを排除し、ツールを標準化し、製品のイテレーションサイクルを加速できることが挙げられます。CI/CDパイプラインを活用することで、企業はコードの変更を中央リポジトリにマージする継続的インテグレーション(CI)と継続的デリバリー(CD)を組み合わせ、ソフトウェアデリバリープロセス全体の自動化を実現し、高品質なソフトウェアをより迅速に提供できるようになります。

コンテナ技術は、システムの開発および管理のあり方を根本的に変えつつあります。

組み込み開発者も、コンテナによって実現されるインフラに依存しないスケーラブルな実行環境の恩恵を受けることができます。開発からテスト、本番環境へのデプロイ、そして運用に至るまでの設計プロセスにおいて、開発者がチーム全体でリソース、パイプライン、結果を共有できる状況を想像してみてください。利用可能な開発ボードの数に制限されることなく、企業はクラウドの弾力性を活用して、オンデマンドでシステムの複数のインスタンスを立ち上げることも可能になります。

アビオニクスの事例

アビオニクスシステムは、コンテナ化への潮流を示す好例です。これらは、基本的にハードウェアベースのソリューションから、アジャイルで高度にアップグレード可能なソフトウェア定義のインフラへと進化しており、大規模なハードウェアの入れ替えを行うことなく、システムに新しい技術を即座に組み込むことが可能になっています。ソフトウェアコンテナ技術は、迅速な更新やパッチ適用を通じてサイバーセキュリティの脅威に対抗する効果的な手段となることが期待されており、民間部門だけでなく、航空宇宙・防衛部門にもメリットをもたらします。

組み込み技術とクラウドネイティブ技術の橋渡し

コンテナの利点があるにもかかわらず、従来の組み込みアプリケーションの開発および展開は、クラウドネイティブアーキテクチャとはいくつかの重要な点で異なります。

  • 特定のハードウェアと密接に結合している。
  • C/C++などの低レベル言語で記述されている。
  • ハードウェア(周辺機器など)と直接やり取りする。
  • 専用の開発・管理ツールが必要である。
  • ライフサイクルが長く、ステートフルな実行となる傾向がある。
  • 現場に導入されるエンドハードウェアやソフトウェアの多様化が進んでいます。

コンテナ技術を組み込みの世界に橋渡しするには、組み込み開発がクラウドネイティブにインスパイアされたワークフローに適応する必要がありますが、その際には、リアルタイムの決定性、最適化されたメモリフットプリント、クロスコンパイルおよびリンクのための統合ツールチェーン、セキュリティスキャンおよび品質保証のためのツール、ビルド環境のセキュリティ確保能力など、アプリケーションの要件を維持する形で行う必要があります。

組み込みLinux向けコンテナ

LinuxコンテナはデータセンターやIT環境では広く導入されていますが、使い勝手の良い事前統合済みプラットフォームやエコシステム全体での有意義な連携が欠如しているため、OT(オペレーショナルテクノロジー)分野における小型でライフサイクルの長いエッジ組み込みシステムでは、コンテナの利用は依然として限定的です。産業用、医療用、自動車用システムなどの組み込みデバイスには、多くの場合、軽量で信頼性が高く、ライフサイクルの長いソフトウェアが求められます。 エンタープライズLinuxに見られるような既存のコンテナ技術やプラットフォームは、多くの場合、肥大化していたり、更新頻度が高すぎたりするため、こうした組み込みシステム上で効果的に動作させることは困難です。

ガートナーは、2020年には5%未満だったエンタープライズアプリケーションの最大15%が、2024年までにコンテナ環境で実行されると予測しています。

当初Wind River®で開発され、GitHubで公開されているWind River Linuxのコンテナ技術「OverC」は、Cloud Native Computing Foundation(CNCF)およびYocto Projectのコンポーネントを統合し、組み込みシステム向けのコンテナを構築・展開するための包括的なフレームワークの定義を支援します。 この技術は、事実上あらゆるプロセッサアーキテクチャやオーケストレーション環境に対応しており、産業用制御システム、自動運転車、医療機器・装置、IoTゲートウェイ、無線アクセスネットワーク(RAN)製品、および幅広いネットワークアプライアンスなど、多様なアプリケーション向けの組み込みソフトウェアプロジェクトにおけるコンテナ利用の難しさを解消し、導入のハードルを下げます。

リアルタイムOS用コンテナ

コンテナ技術は複雑であり、クラウド向けに構築されているため、組み込みシステム、とりわけリアルタイムOS(RTOS)がしばしば必要とされるエッジ上のミッションクリティカルなアプリケーションでの利用を妨げることが多い。

しかし、アプリケーションとその基盤インフラの複雑化に伴い、ますます巧妙化するハッカーによる新たな攻撃経路が生まれる中、組み込みシステムにおけるコンテナは、インテリジェントエッジに対して応答性が高く安全なアプリケーション提供を実現する手段となります。これらの機能により、航空宇宙・防衛機関、エネルギー事業者、大規模製造業者、医療機関は、最も困難なアプリケーションにおいても、低遅延かつ高帯域幅のパフォーマンスを活用できるようになります。

ミッションクリティカルなアプリケーションにおいてコンテナの持つ可能性を最大限に引き出すため、Wind Riverは最近、市場をリードする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が、アプリケーションのコンポーネントを含むパッケージ化されたファイルバンドルであるコンテナイメージを作成します。その後、コンテナはコンテナレジストリにプッシュされ、対象となるホストにもコピーされます。Kubernetesは、VxWorks OCIコンテナの管理とオーケストレーションを提供します。

図1:VxWorksベースのコンテナの作成および更新プロセス

コンテナレジストリ自体(Docker Hub、Amazon ECR、Harbor、またはその他の OCI 準拠のレジストリ)は、アプリケーションのライフサイクルを通じて、コンテナへの安全なアクセスを提供します。レジストリに投稿された更新は、コンテナにパッケージ化されたアプリケーション(またはアプリケーション群)を使用する正当なホストであれば、自動または手動でプルすることができます。

コンテナの配布プロセスは、いくつかの異なる方法で処理できます。 例えば、着陸後、航空機は整備エリアまでタキシングし、空港のサービスインフラに接続して、システムサーバー内のレジストリから最近更新されたコンテナを取得できます。その後、コンテナの更新内容が航空機システムに組み込まれます。最新のワイヤレス機能を備えた車両は、5G基地局の前を通過してコンテナ内の更新情報を含む送信を受信し、自宅のガレージに駐車した後、それらの更新を自動的にインストールすることができます。

VxWorksコンテナの実装に使用される技術はOCIガイドラインを厳密に遵守しているため、開発者は、自身が構築したコンテナがOCI標準に従って構築されたインフラストラクチャ全体で確実に機能することを確信できます。 一方、ソフトウェア展開のための独自ソリューションは、標準ベースのソリューションのような俊敏性や予測可能性に欠けており、そうした理由から業界では一般的に敬遠されています。対照的に、イメージ形式仕様とランタイム仕様の両方に準拠したOCI準拠のツールは、コンテナプラットフォームやコンテナエンジンで構成されるエコシステムだけでなく、標準ベースのクラウドプロバイダー環境やオンプレミスインフラストラクチャにも効果的に対応しています。

図2:コンテナの作成および配布のためのエンドツーエンドのワークフロー

コンテナのセキュリティ

航空宇宙・防衛、自動車用途、エネルギーグリッドおよびサブシステム、ロボット工学の応用など、高度なセキュリティが求められる環境においてコンテナ技術が成功を収めるためには、ソリューションを強化するための追加措置が必要となります。

クラウドネイティブのオープンソースレジストリは、通常、コンテナ利用時に一定のセキュリティ層を提供します。例えば、Harborはポリシーやロールベースのアクセス制御(RBAC)を採用し、コンテナコンポーネントのセキュリティを確保しています。各コンテナイメージは、既知の脆弱性を含まないことを確認するためにスキャンされ、配布前に信頼できるものとして署名されます。機密性が高く、ミッションクリティカルな展開において、Harborはクラウドネイティブのコンピューティングプラットフォーム間でコンテナを移動する際に、一定の保証を提供します。

グローバルなセキュリティ技術リーダーのうち、コンテナの使用に関して自社で十分なセキュリティポリシーとツールを備えていると回答したのはわずか45%です。

DevSecOpsのソフトウェア開発ベストプラクティスに従うことは、コンテナのセキュリティを保護する最も効果的な手段の一つです。米国国防総省は『コンテナ強化ガイド(Container Hardening Guide)』を公表しており、これにはセキュリティ侵害を防ぐために重要なDevSecOpsプロセスが概説されています。

Wind Riverのアプローチ

VxWorks

VxWorksは、コンテナを通じたアプリケーションの展開をサポートする世界初のリアルタイムオペレーティングシステム(RTOS)です。VxWorksの最新リリースではOCIコンテナへの対応が追加されており、決定性とパフォーマンスを損なうことなく、従来のIT技術を活用してインテリジェントエッジソフトウェアの開発と展開をより効率的かつ迅速に行うことが可能になります。

» 詳細はこちら

Wind River Linux

Wind River Linuxには、DockerやKubernetesなどの開発およびオーケストレーションフレームワークをサポートするコンテナ技術が組み込まれています。

当社のチームは、サイバーセキュリティの脅威から組み込みデバイスを保護するためのセキュリティ強化において、数十年にわたる経験を有しています。

OCI仕様に準拠したDocker互換性を備えつつ、Dockerよりも軽量でフットプリントも小さいため、組み込みシステムにおいてしばしば不可欠となる要件を満たしています。Yocto Project互換のクロスアーキテクチャ・コンテナ管理フレームワークを提供するWind River Linuxは、組み込み開発者によるコンテナの利用を容易にし、加速させます。

» 詳細はこちら

Wind River Helix Virtualization Platform

Wind River Helix™ Virtualization Platformは、複数の OS を混在させ、決定性と安全認証を必要とする異種混在システムにおいて、組み込みシステムにしばしば求められる厳しい要件を満たしつつ、コンテナのスケーラビリティを活用できるようにします。

» 詳細はこちら

組み込みコンテナに関するFAQ

組み込みコンテナとは、組み込みシステム上でアプリケーションを実行するためのコンテナ化された環境を提供する、軽量で移植性の高いソフトウェアコンポーネントです。
組み込みコンテナの目的は、組み込みシステム上で動作するアプリケーションに対して、標準化され移植性の高い実行環境を提供し、ソフトウェアの開発と展開をより迅速かつ効率的に行うことです。
組み込みコンテナは、組み込みシステムのようなリソースに制約のある環境での使用を想定して設計されており、低メモリおよび低消費電力に最適化されている点で、従来のコンテナとは異なります。
組み込みコンテナを使用するメリットとしては、移植性と標準化の向上、開発期間とコストの削減、スケーラビリティと信頼性の向上、およびセキュリティの強化などが挙げられます。
代表的な組み込みコンテナプラットフォームには、Docker、Kubernetes、OpenShift、Balenaなどがあります。
組み込みコンテナは、リソース効率、移植性、標準化が重要な、モノのインターネット(IoT)、産業オートメーション、自動車、その他の組み込みシステムアプリケーションにおけるユースケースに最適です。
組み込みコンテナは、一貫性があり標準化された実行環境を提供することで、ソフトウェア開発プロセスを大幅に簡素化し、ソフトウェアの開発とデプロイをより迅速かつ効率的に行えるようにします。
組み込みコンテナの利用に伴う課題としては、さまざまなハードウェアやソフトウェアプラットフォームとの互換性の問題、パフォーマンスの制限、セキュリティ上の脆弱性などが挙げられます。
組み込みコンテナはエッジコンピューティングにおける重要な技術であり、ソフトウェアを組み込みデバイス上で直接実行できるようにし、集中型の処理やストレージへの依存を軽減します。
組織は、さまざまなプラットフォームや技術を調査し、要件やユースケースを評価した上で、経験豊富な開発者やコンサルタントと協力して、効果的な組み込みコンテナ戦略を策定・実装することで、組み込みコンテナの利用を開始できます。