Amazon Web Services ブログ
AWS IoT Greengrass nucleus lite – リソース制約のあるデバイスでエッジコンピューティングに革命を起こす
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 標準ライブラリのみで動作可能です。
図 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 利用ケース |
|
|
表 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 ランタイムと一体化した複数の分離アプリケーションを実行できます。
図 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 ソリューションの開発に向けて以下を検討ください。
- 詳細を理解する : AWS IoT Greengrass のドキュメントを参照してください。
- nucleus lite を試す : インストールガイドまたは Getting Started チュートリアル に従って実験と開発を始めましょう。
- 専門家に質問 : 質問やガイダンスが必要な場合は、AWS IoT の専門家に相談してください。
- コミュニティに参加 : AWS IoT コミュニティフォーラムで体験を共有したり、他のユーザーから学びましょう。
- コントリビュート : オープンソースリポジトリにコードを投稿してください。
_________________________________________________________________________________
著者について
Camilla Panni は、 Amazon Web Services のソリューションアーキテクトです。彼女は、イタリア全土の公共部門の顧客がクラウド導入の取り組みを加速するのを支援しています。自動化とIoTにおける彼女の技術的背景が、顧客が新興技術でイノベーションを起こすのを支援することへの情熱を後押ししています。
