Amazon Web Services ブログ

AWS IoT Greengrass nucleus lite – リソース制約のあるデバイスでエッジコンピューティングに革命を起こす

この記事は Camilla Panni, Greg Breen によって書かれた AWS IoT Greengrass nucleus lite – Revolutionizing edge computing on resource-constrained devices の日本語訳です。この記事は ソリューションアーキテクトの川崎が翻訳しました。
AWS IoT Greengrass は、オープンソースのエッジランタイムです。このクラウドサービスは、マルチプロセスアプリケーションを大規模に構築 / デプロイ / 管理することができ、IoT フリート全体の運用を支援します。
AWS IoT Greengrass は2020 年 12 月に V2 をリリースし、 nucleusとして知られる Java エッジランタイムを導入しました。 2024 年 12 月の release 2.14.0 では、 C 言語で書かれた追加のエッジランタイムオプションである nucleus lite を追加しました。 AWS IoT Greengrass nucleus lite は、リソース制約のあるデバイスを対象とした軽量な オープンソース のエッジランタイムです。スマートホームハブ、スマートエネルギーメーター、スマートビークル、エッジ AI、ロボティクスなどの大量生産アプリケーション向けに、低コストのシングルボードコンピュータで AWS IoT Greengrass の機能を拡張できます。このブログでは、2つのエッジランタイムオプションの利点を説明し、ユースケースに最適なオプションを選択するための指針を提供します。

nucleus と nucleus lite の主な違い

AWS IoT Greengrass nucleus lite は、AWS IoT Greengrass の V2 クラウドサービス API と プロセス間通信 (IPC) インターフェースと完全に互換性があります。これは、1 つまたは両方の実行時を対象としたコンポーネントを構築してデプロイできること、また、クラウドサービスを使用してデバイスフリートを管理し続けることができることを意味します。ただし、nucleus lite には、いくつかの重要な違いがあり、特定のユースケースに適しています。

メモリ使用量

AWS IoT Greengrass nucleus は、ディスク スペース 256 MB 以上、RAM 96 MB 以上が必要です。
ただし、オペレーティング システムやJava 仮想マシン (JVM)、アプリケーションが動作するため、 RAM は最低 512 MB を推奨しています。昨今では、1GB以上のRAMを搭載したデバイスは一般的になってきています。しかし、限られたリソースで動作を求められるデバイスも数多く存在しています。物理的リソース条件が厳しいデバイスでも利用できるよう nucleus lite が誕生しました。
nucleus lite は非常に小さなフットプリントで動作します。RAM 5MB 、ストレージ (ディスク/フラッシュ)  5MB のみ必要です。また、JVM を必要とせず、C 標準ライブラリのみで動作可能です。

Memory footprint of nucleus versus nucleus lite

図 1: nucleus と nucleus lite のメモリフットプリントの比較

リソース制約のあるデバイス上でも AWS IoT Greengrass を利用する新しい選択肢が生ました。

静的メモリ割り当て

AWS IoT Greengrass nucleus lite  ランタイムのメモリフットプリントは、初期設定とビルドプロセス中に決定されます。ランタイムが開始すると、 nucleus lite は一定量のメモリを割り当て、その後はその量が一定のままです。
つまり、 nucleus lite はリソース要件が予測可能で再現性があり、メモリリークのリスクが最小限に抑えられ、ガベージコレクションを行う言語に関連する非決定論的な待ち時間がなくなります。
メモリ使用量が変動するのは、デプロイした AWS IoT Greengrass コンポーネントや AWS IoT Greengrass 外で実行するプログラムによる動的メモリ割り当てのみです。

ディレクトリ構造

Nucleus lite は、Nucleus lite ランタイム、Greengrass コンポーネント、設定、ログをディスク上の異なる領域に分離します。組み込み Linux システムでは、これらの異なる要素は通常、異なるパーティションまたは異なるボリュームに保存できます。
例えば:

  • nucleus lite ランタイムは、OS イメージの更新を可能にするため、A/B パーティション分割の一部として、読み取り専用パーティションに格納される可能性があります。
  • AWS IoT Greengrass のコンポーネントと設定は、アプリケーションが AWS IoT Greengrass のデプロイメントによって管理できるように、読み書き可能なパーティションまたはオーバーレイに格納される可能性があります。
  • ログファイルは、ルートボリュームの限られたフラッシュメモリの書き込みサイクルを消費しないように、一時パーティションまたは別の物理ボリュームに格納される可能性があります。

この分離により、スケールでデバイス製造のための golden イメージを構築するのに役立ちます。詳細については、 Manufacturing devices at scale with AWS IoT Greengrass golden images をご覧ください。

systemd との統合

systemd は Linux システムで一般的に利用可能なシステムとサービス管理フレームワークで、AWS IoT Greengrass nucleus lite には必須です。
nucles lite をデバイスにインストールすると、 systemd サービスまたはデーモンの集合体 としてインストールされます。nucles lite は、デバイスに展開する AWS IoT Greengrass コンポーネントごとに個別の systemd サービスとしてインストールします。nucles lite は、デバイスの多数のフリートにまたがってスケールするクラウド管理の systemd として考えることができます。
nucleus lite とコンポーネントを systemd サービスとしてインストールしているため、systemd がシステムログを処理し、集中管理します。つまり、一般的な Linux システムツールを使用して、デバイスソフトウェアを監視、保守、デバッグできます。

nucleus と nucleus lite の選択

nucleus ランタイムと nucleus lite ランタイムの選択は、使用ケース、デバイスの制約、必要な機能、および OS によって異なります。次の表は、選択の目安を要約したものです。

nucleus 利用ケース nucleus lite 利用ケース
  • オペレーティングシステムに Windows を使用したい、または systemd が含まれていない Linux ディストリビューションを使用したい場合
  • アプリケーションコンポーネントが Docker コンテナである場合
  • アプリケーションコンポーネントが Lambda 関数である場合
  • スクリプト言語または解釈型プログラミング言語を使ってアプリケーションコンポーネントを開発する場合
  • nucleus lite でまだサポートされていない機能を使用したい場合
  • AWS IoT SiteWise ゲートウェイを作成する場合
  • デバイスのメモリが制約されており、RAM が 512 MB 以下の場合
  • デバイスの CPU のクロック周波数が 1 GHz 未満の場合
  • 組み込み Linux ディストリビューションを作成し、OS イメージの更新や A/B パーティションなどの機能をサポートするため、パーティションスキームを正確に制御する必要がある場合
  • マシン語にコンパイルされるプログラミング言語を使ってアプリケーションコンポーネントを開発する場合
  • ava が適さないコンプライアンス要件がある場合
  • 静的メモリ割り当てを好む場合

表 1: nucleus と nucleus lite を選択する際の指針

表 1 の指示は規範ではなく、一般的なガイダンスです。たとえば、ユースケースのニーズに基づいて、ギガバイトの RAM を搭載したデバイスで nucleus lite を使用することができます。また、デバイスのリソースが十分にある場合は、スクリプト言語やインタプリタ型言語で書かれたコンポーネントを nucleus lite にデプロイすることもできます。

シナリオとユースケース

ユースケース

メモリとプロセシング能力が制限された低コストデバイス、そして慎重に選別された組み込み Linux ディストリビューションに適しているのが、リソース要件のハードルが低い nucleus lite です。こうしたデバイスには、スマートホーム、産業、自動車、スマートメーターなど、さまざまな分野があります。

組込みシステム

nucleus lite は、ローンチ時から meta-aws project によって提供される組み込み Linux のサポートを含むことで、組み込みシステム開発者にとって大きな前進を示しています。このプロジェクトには、サンプルレシピ が含まれており、AWS IoT Greengrass を OpenEmbedded または Yocto プロジェクトにビルドインすることができます。このプロジェクトの姉妹プロジェクト meta-aws-demos には、RAUC を使った A/B アップデートのデモなど、AWS IoT Greengrass の数多くのデモが含まれています。

コンテナ化された軽量 AWS IoT Greengrass nucleus lite によるマルチテナンシーのサポート

nucleus lite はフットプリントが小さいため、マルチテナント IoT デプロイに対して効果的なコンテナ化を実現できます。独自の AWS IoT Greengrass ランタイムと一体化した複数の分離アプリケーションを実行できます。

Multi-tenant containerization

図 2: マルチテナントのコンテナ化

アーキテクチャの利点は次のとおりです:

  • セキュリティを考慮した分離: それぞれのコンテナ化されたインスタンスは、アプリケーション間の厳格な境界を維持します。
  • リソース最適化: 軽量なフットプリントにより、制約された環境でも複数のコンテナをサポートできます。
  • 独立した運用: アプリケーションを個別に管理、デバッグ、更新できます。
  • 柔軟なデプロイ: デバイスの機能に基づいて、さまざまなコンテナ化の戦略をサポートします。

実装のベストプラクティス

nucleus lite を使用するには、コンポーネントを書き直す必要はありません。ただし、メモリ効率を最大化したい場合は、コンポーネントを最適化または書き換えることを選択できます。
nucleus lite を使用するにあたり、以下の重要な考慮事項を確認ください。

プラグインの互換性

プラグインコンポーネント は、Java 版 の nucleus ランタイムと密接に統合された特殊な Java コンポーネントです。これらのプラグインは nucleus lite ランタイムでは使用できません。

コンポーネント言語の考慮事項

カスタムコンポーネント用のプログラミング言語を選択する際は、各言語のインタープリターまたはランタイム環境が全体のメモリフットプリントに影響することを考慮する必要があります。Python のような言語を選択すると、nucleus lite のメモリ節約効果がある程度相殺されます。Java を選択する場合は、システムに JVM を導入する必要があります。

異なるシナリオ向けの推奨事項

nucleus から nucleus lite に移行する際、既存のコンポーネントはそのまま動作します。そのため、nucleus lite への移行が簡単になり、最適化の計画を立てている間も機能が維持されます。

新規に作成する場合:

  • 最大の効率を得るために、重要なコンポーネントを書き換えることを検討してください。
  • C、C ++、Rust などのランタイムオーバーヘッドが最小限の言語を選んでください。
  • 開発の労力とメモリ最適化のニーズのバランスをとってください。

メモリ容量の計画を立てる場合:

  • メモリ計算では、すべてのランタイム依存関係を考慮してください。
  • nucleus lite のサイズだけでなく、システム全体のフットプリントを評価してください。
  • 適切な場合はコンポーネントの統合を検討してください。

将来の展望と結論

今後、AWS IoT Greengrass nucleus lite を活用することで、エッジコンピューティングの実装を再構築できます。
リソース要件を大幅に削減することで、次のようなことが可能になります。

  • リソースの制限のあるデバイスに IoT 機能をデプロイ
  • より広範なハードウェアでのエッジコンピューティングソリューションの実装
  • 機能を維持しながら運用オーバーヘッドの削減
  • リソース要件に制限されていた新しい使用例の実現

開発者にとって、nucleus lite はエッジで革新的なことを行う新たな機会を提供します。リソース制約のあるデバイスでエッジコンピューティングが可能かどうかを気にする代わりに、ビジネス価値を生み出すソリューションの実装に集中できます。
この AWS IoT ポートフォリオの強化により、より幅広いデバイスやユースケースに対応する効率的かつスケーラブルな IoT ソリューションを構築するというコミットメントが示されました。
AWS IoT Greengrass nucleus lite を使用して IoT ソリューションの開発に向けて以下を検討ください。

_________________________________________________________________________________

著者について

Camilla Panni は、 Amazon Web Services のソリューションアーキテクトです。彼女は、イタリア全土の公共部門の顧客がクラウド導入の取り組みを加速するのを支援しています。自動化とIoTにおける彼女の技術的背景が、顧客が新興技術でイノベーションを起こすのを支援することへの情熱を後押ししています。

 

Greg Breen は、Amazon Web Services のシニア IoT スペシャリスト ソリューションアーキテクトです。オーストラリアを拠点とし、アジア太平洋地域全体の顧客がIoTソリューションを構築するのを支援しています。組み込みシステムにおける豊富な経験を持つ彼は、製品開発チームがデバイスを市場に投入するのを支援することに特に関心を持っています。