Categories: Cisco DevNet

IOx アプリの開発に役立つ 5 つの秘訣

この記事は、Advanced Services の Solutions Architect である Emmanuel Tychon によるブログ「5 Tips for Developing IOx Apps」(2021/4/5)の抄訳です。

 

私はシスコで、IOx 用アプリを構築する多数のパートナーやお客様とともに仕事をしています。IOx は、一部のシスコのルータやスイッチでコンテナインスタンスを実行できます。私の経験の中には、そのようなアプリが、今後何年にもわたって効率的かつ効果的に稼働させるために役立つベストプラクティスがあります。DevNet Day 2020 でいくつかを紹介しましたが、IOx アプリを構築する開発者のお役に立てるよう、他の例と合わせて本稿に取りまとめることとしました。

1.VM ではなくコンテナを選択すること

コンテナと仮想マシン (VM) のどちらかを選択する余地がある場合は、コンテナを使用してください。VM はコンテナよりはるかに大きいです。それは、完全な OS が含まれるからです。VM を選ぶと、貴重なスペースやリソースを無駄にします。それだけでなく、VM は、限られた数の IOx プラットフォームでしかサポートされません – ARM ベースのプラットフォームでは VM は実行できません。しかも、新しい IoT プラットフォームはすべて ARM がベースになっています。将来性のあるアプリを作成することを望むなら、それがどんな CPU アーキテクチャでも稼働することを確実にし、選択の機会があるならコンテナを選択してください。

2.コンテナを軽量 VM として使用しないこと

パートナーやお客様と作業をしていて、一部の開発者が、コンテナに VM のようにアプローチしていることに気付きましたが、これらは同じものではありません。VM とは異なり、コンテナは軽量であり、理論的に 1 つの特定のタスクを実行します。コンテナは軽量で、敏捷で、確かに一般的な VM と同様のサービスを含みます。プロセススケジューラのようにホスト機能を再利用するためです。可能であっても、「肥大化したコンテナ」を作り上げることは避けたいところです。従来からのサーバに比べれば、ネットワークエッジではストレージも速度も限られているからです。あまりに多くの CPU リソースがあるというだけで、コンテナのサイズが大き過ぎれば、処理時間が長くなることがわかります。

3.ディスクを賢く使用すること

ほとんどの IOx 機器には内蔵フラッシュディスクがありますが、すべてのフラッシュディスクと同様に消耗しやすいです。一部のシスコ機器は、追加としてより高速でかなり消耗しにくい SSD ディスクを搭載できます。連続的な短時間の書き込みには、主として RAM メモリに保存される一時ファイルシステムの使用を推奨します。一時的なものですが、再書き込みには耐久性があります。高周波数のシステム振動に関わるような長期間のデータについては、その情報は通常 SSD フラッシュディスクを装備したデバイスに保存する必要があります。

4.CPU のアーキテクチャに依存しないこと

シスコ製品には、インテルベースも、ARM ベースも、さらには PowerPC プラットフォームさえあります。アプリケーションを将来性のあるものにするために、CPU に依存しないことが良い考え方です。コードをインテルだけでしか実行できない C 言語で書くと、何らかの時点で制限を受けます。それは、作成したアプリケーションを、シスコのすべての製品ポートフォリオを通して使用できないためです。すべての異なるプラットフォーム用のコンパイラがある言語、またはインタプリタ言語 (実行時コンパイラ型 Java、Python、Perl、PHP、NodeJS) を使用してください。

5.サイズを考慮すること

作成するアプリは、複数の理由によりできる限り小さくする必要があります。最初に、ご使用のハードウェアがリモートの場所で実行される場合、通常のイーサネットアクセスでは到達できないかもしれません。例えば、Cellular/LTE/4G を使用しているとしましょう。その場合、大きなアプリケーションではプロセスが遅くなり、展開にコストが掛かります。例えば、300 メガバイトのコンテナなら、展開してアクティブ化するために 15 分間を要するかもしれませんが、それに比べると数メガバイトの Cisco Edge Intelligence のような小型アプリなら展開にほんの数秒しか掛かりません。より小型のアプリなら、さらにコンテナがクラッシュした場合の再起動もより速く、ダウンタイムを最小限にします。

アプリを小さくしておくことが賢明であるもう 1 つの理由は、ストレージ容量が限られていることです。IOx アプリは、インストールするために、アプリ容量の 3 倍を要します。注意しないと、ユーザに、SSD ディスクにインストールすることを強いることになり、追加コストが発生します。展開のためのコンテナが大きくなることは構いません – デバッグ、トラブルシューティング、その他のためにさまざまなユーティリティを処理するため – 但し、実稼働に移す際には、もはや不要となったものはすべて削除してください。

IOx Local Manager により、開発者が IOx アプリケーションを
シスコのゲートウェイ上に迅速にアップロードして実行させることが容易になります

落とし穴を避けること – この動画をご覧ください。

これら 5 つの秘訣で、IOx アプリ開発のベストプラクティスをより深く学習することができます。最近 Cisco DevNet Day のための 20 分間のワークショップを開催しました (IOx Application Hosting Advanced)。その中で、特に x86 や ARM などさまざまな CPU アーキテクチャのための開発を行う際に避けるべき落とし穴を取り上げています。

IOx に関してより深く学習する— コードやスクリプトのサンプルを用意しました。学習ラボや DevNet サンドボックス、ビデオなどにぜひアクセスしてください。

その他の資料:

 


ぜひご意見をお聞かせください。ご質問やご意見は下記にお寄せください。
また、Cisco DevNet のソーシャルネットワークにも参加してください。

Twitter@CiscoDevNet | Facebook | LinkedIn

新しいDeveloper Video Channelを見る 

Kazumasa Ikuta

シスコシステムズ合同会社 APJアーキテクチャー プリンシパルアーキテクト。2001 年入社。エリア担当 SE、通信事業者担当 SE、SDN応用技術室を経て、2021年よりアジア太平洋地域アーキテクチャーセントラルグループ所属、プリンシパルアーキテクト。主に企業向けのネットワーク運用管理全般および製品、SDNやネットワークプログラマビリティ関連、Cisco DevNetを担当。提案、構築、運用維持管理における技術サポート、本社開発部門と連携したアジア地域での製品や技術のロールアウトプラン策定と実行、対外的なプレゼンテーションなど、仕事を選ばず幅広く活動中。書籍:Ciscoネットワーク構築教科書[解説編](共著)Ciscoネットワーク構築教科書[設定編](共著)Cisco WAN 実践ケーススタディ(共著)