EdgeおよびIoTアプリケーションへのソフトウェア配布に関する設計上の考慮事項
DevOpsにおいてソフトウェア配布を見過ごすことはできません。ソフトウェアリリースの信頼性、セキュリティ、スピードそしてビジネスそのものが危険にさらされているのです。
特に、多数のエッジエンドポイントやIoTデバイスにまたがってリリースしている企業では、この傾向が顕著です。リリースの頻度とペイロードが増加するにつれて、ソフトウェア配布の課題は特にエッジにおいて増加します。
エッジおよびIoT向けのソフトウェア配布の課題、利点と企業がエッジおよびIoTアプリケーション向けに安全で継続的なソフトウェア配布を拡張する方法をご説明します。
ソフトウェア配布とエッジコンピューティングマーケット
エッジおよびIoTマーケットの業界調査会社Topio Networksはエッジ環境における新たな高成長サブセグメントとして、ソフトウェア配信を挙げており、これは重要かつ興味深い分野として注目すべきと見ています。
このエッジソフトウェア配布のサブセグメントにはJFrog Distributionを擁するJFrogをはじめ、現在複数企業が存在しています。「JFrogはこの分野のリーディングカンパニーの1つです。」とTopio共同創業者兼COOのGavin Whitechurch(ギャビン・ホワイトチャーチ)氏は先日の合同WebセミナーScaling Continuous Software Delivery for Edge & IoT Applicationで述べています。
エッジ市場の状況
ソフトウェア配布とは?
ソフトウェア配布とはバイナリを作成した場所(通常は開発またはCI/CD段階)からデータセンター/クラウドサーバー、エッジインフラ、組み込みデバイスなど、デプロイのためのランタイム環境に移すことです。とJFrogのIoTプロダクトマネージャーであるMichael Vakulenko(ミカエル・バクレンコ)氏はウェビナーで説明しましたた。
小規模なシステムであればソフトウェアの配布はかなり簡単です。しかし、大規模なシステムでは信頼性が高く、安全で、タイムリーなソフトウェアリリースの配布を迅速に実現することがすぐに大きな課題となります。
現在の配布の課題には、次のようなものがあります。
- 数千台のサーバ、ポッド、エッジノードへのバイナリ配布
- 異なる規制や問題を抱える複数のクラウドプラットフォームと世界各地域への対応
- ハイブリッド、オンプレミス、エッジデプロイメント対応 -しばしば全てが同時に
- 早く、安全に、確実に、頻繁に実施
企業にとって、スケーラブルで安全かつ信頼性の高いソフトウェア配布の必要性は今後ますます深まっていくでしょう。なぜでしょうか?企業は1日に何度もプロダクション環境にソフトウェアをデプロイし、リリースを加速させたいと考えているからです。
同時に、特にコンテナの利用が増えるにつれて、バイナリーアーティファクトは大きくなり続けています。一方、ハイブリッドやマルチクラウド環境、エッジコンピューティングやIoTデバイスの採用など、ITインフラはより複雑化しています。
そのため、自社で配布ソリューションを地道に構築するのは現実的ではありません。そのためにJFrog Distributionを作りました。Vakulenko氏は「このソリューションにより、開発者、DevOps、SREチームはソフトウェア配布の難しい課題を解決するのではなく、アプリに集中できるようになります」と説明します。
CDNについてはどうでしょうか?
コンテンツ配信ネットワーク(CDN)はソフトウェア配信のために利用されるものですが、この目的のために構築されたものではないので、弱点が目立ちます。
JFrogのようなソフトウェア配布のために一から構築されたソリューションとCDNの比較を見てみましょう。
- CDNはDevOpsパイプラインとは別に動作します。JFrog DistributionはJFrog DevOps Platformのネイティブコンポーネントです。
- CDNが届くのは大都市だけです。JFrog Distributionは小売店やオフィスビル、さらにはエンドポイントデバイス自体のキャッシュレイヤーとして、より遠方まで届きます。
- CDNは通常、クラウド環境に最適化されており、その「エッジ」位置でさえも、混在したインフラやオンプレミスのインフラ上ではなく、パブリッククラウド上にあるのが現状です。JFrog Distributionはオンプレミスとハイブリッドの両方のデプロイメントをサポートし、混在したランタイム環境で動作させることができます。
- CDNはWebアプリケーションの画像など、主に静的なファイルを提供するために設計されており、HTTPダウンロードのためのインフラストラクチャを提供します。JFrog Distributionはパッケージ固有のプロトコルをサポートし、デプロイを加速し、ダウンロードの高い同時実行性をサポートするとともに、エンドポイント上のローカルレジストリとして機能します。
- CDNは個々のファイルを扱うように設計されています。JFrog Distributionはリリースを構成するバイナリの集合体を扱います。
- CDNはダウンロードの統計だけ提供します。JFrog Distributionは詳細なデプロイメントのトラッキングを提供し、どのソフトウェアがどこで動作しているかを把握できます。
- CDNはパッケージもセキュリティも意識していません。JFrog Distributionはセキュリティプロセスやポリシーと密接に統合されており、リリースのソフトウェア部品表(SBOM)をトレースし、パッケージにセキュリティの脆弱性が検出された場合は配布をブロックすることさえできます。
エッジ配布とアプリケーションリリースに関する問題
従来のデータセンターとは異なり、エッジにソフトウェアを配布する場合は特有の課題があります。
これらはサービスプロバイダーのエッジ、オンプレミスや地域のデータセンター、スマートデバイスや制約のあるデバイスなど、すべてのエッジコンピューティングセグメントに適用される重要な課題です。
- 断続的な帯域幅と長い遅延を含む接続性の制限
- 各エッジサイトにスキルのあるスタッフがいないことによるリモートマネジメントの必要性
- データセンターのセキュリティ境界の外にあるノードによる信頼されないネットワーク
- クラウド接続がない場合の自律的な運用の必要性
- 地理的に分散した多数のノード
JFrog Platformでのソフトウェア配布
JFrogはソフトウェア配布プロセスが最新のDevOpsスタックにとっていかに重要かを理解し、配布をJFrogエンドツーエンドDevOpsプラットフォームの不可欠な部分としました。
JFrog Platformはコードからプロダクションまで、ソフトウェアバイナリ管理ライフサイクルのすべての段階(私たちがBinOpsと呼ぶもの)をカバーします。JFrog Artifactoryによる一元化したアーティファクトリポジトリとコンテナレジストリ、Xrayによるセキュリティとコンプライアンス、JFrog PipelinesによるCI/CDオーケストレーション、そしてJFrog Distributionが含まれています。
業界唯一のソリューションであるJFrog Distributionは大規模なハイブリッドトポロジと並行性の要件に対応し、限られた帯域幅とネットワークラグさえも克服し、統制のとれた安全なパッケージ配布を加速させることが可能です。JFrog Distributionを利用することでパブリッククラウド、オンプレミスデータセンター、支社、地域拠点、IoT/エッジデバイスなどの幅広いデプロイメントターゲットにバイナリソフトウェアのリリースを加速できます。
エッジへのソフトウェア配布のための設計上の考慮点
ここでは支社やPOSなどのインフラエッジから「シン」エッジやIoTデバイスまで、エッジ領域に効果的かつ安全にソフトウェアを配布するソリューションに必要な5つの重要な検討事項を確認します。また、これらの設計のベストプラクティスがJFrogのソリューションでどのように対処されているのかについても触れます。
1 — 混在環境での分散アーキテクチャ
まず、大規模なエッジデプロイメントとその高いピークロードに対処するためには分散アーキテクチャが鍵となります。JFrog DistributionのPrivate Distribution Network (PDN)は混在する分散環境においてソフトウェアアーティファクトを大規模に配布するためにゼロから設計されています。
PDNは分散型ネットワークとして、パッケージやコンテナイメージなどのソフトウェアアーティファクトを中央のArtifactoryからグループ化された配布ノードの多層トポロジーを介して配布します。エッジクライアントは最も近いディストリビューショングループからソフトウェアのバイナリをダウンロードします。
さらに、配布ノードはJFrog Platformによってリモートで管理され、その状態やメトリックスをレポートします。プラットフォームはネットワークのライブトポロジービューを表示します。
PDNは2つのネットワークを高速化し、最適化技術を1つのエージェントに統合したCDNとP2Pです。配布ノードはネットワークの耐障害性を確保するために多数の同時ダウンロードの負荷を共有し、PDNはあらゆる汎用ハードウェアに導入できるため、基本的にキャッシュ層(CDN)を追加して、あらゆる種類のインフラノードやデバイスへの導入と高同時ダウンロード(P2P)が可能です。そのため、高性能サーバーや大容量のネットワークは必要ありません。
最後に、PDNのデプロイと設定は簡単です。配布ノードの設定で親、グループ名、セキュリティトークンを定義するだけで自動的にネットワークに参加します。
2 — 完全なリリース
ソフトウェアのリリースには通常、複数のバイナリが含まれており、同時にデプロイする必要があるため、配布ソリューションはこれらのコンポーネント間の相互依存性を維持する必要があり、その数は数千にも及びます。
そこで異なるリリースの互換性のないコンポーネントをデプロイしないように、完全なリリースの概念が重要になります。
JFrogはリリースバンドル(リリースのすべてのコンポーネントとそのメタデータを含むソフトウェア配布の最小単位)を通じて、リリースの完全性を保証します。リリースバンドルが作成後に署名されるとJFrogはそれを配布インフラの一部であるすべてのPDNノードまたはDistribution Edgeあるいはランタイム環境の最終地点に配布します。
エッジコンピューティングノードは全てのコンポーネントが配布ノードに届き、リリースバンドルの署名によって検証されるまで、リリースコンポーネントのダウンロードを開始できません。このようにしてJFrogはリリースが配布プロセスを通して内部の一貫性が担保された最小ブロックとして到着することを保証します。
3– ダウンロードの最適化
エッジコンピューティングでは限られた帯域、高レイテンシ、不安定な接続性など、接続に関する問題が多く発生します。特に大きなバイナリファイルをダウンロードする場合、時間がかかりすぎたり、単に失敗したりすることがよくあります。さらに問題を複雑にしているのはエッジノードがファイアウォールの後ろにあることが多いことです。
JFrogのPDNはダウンロードを最適化し、多くのノードで大きなバイナリファイルの効率的な配布を可能にします。その方法は次のとおりです。
- 大きなファイルは小さなチャンクに分割し、それぞれのチャンクは別々のTCP接続でダウンロードされます。これにより、ダウンロード時間が短縮し、接続エラーの影響も受けにくくなります。
- 通常、新しいリリースでは前のリリースのファイルのごく一部が変更されるだけです。JFrogでは配布ノードがリリースバンドルのマニフェストを分析し、新しいファイルのみをダウンロードし、使用する帯域幅を劇的に削減します。
- 次に、JFrog配布ノードはグループ内のピアノードからファイルのチャンクをダウンロードし、さらにダウンロードを高速化することができます。これを可能にするため、JFrogはHTTPとGRPCプロトコルをベースにした効率的で耐障害性のあるピアツーピア(P2P)プロトコルを開発しました。
- また、JFrogのダウンロードはファイアウォールに対応しています。ファイアウォールをクリアするため、JFrog PDNでは接続は常に配布ノードから親ノードに確立されるため、ファイアウォール環境の内側からネットワークにアクセスします。
- 配布ノードは定期的に親ノードに対してダウンロード通知をポーリングし、保留中のダウンロードがあればそれを開始します。
4 — ゼロトラストセキュリティ
エッジデプロイメントでは配布ノードはデータセンターのセキュリティ境界の外に設置されることが多く、信頼されていないネットワークを介してバックエンドに接続されます。そのため、ノードとネットワーク間のすべての接続の認証、認可、暗号化を含むゼロトラストセキュリティモデルを実装することが非常に重要です。
JFrogのPDNでは配布ノードは常に相互に認証されたTLS接続を使用して親ノードに接続します。この認証は各配布ノードの証明書を使用した業界標準のセキュリティモデルを使用して行われます。
また、配布ノードからバイナリファイルをダウンロードする場合、エッジコンピューティングノードが有効な認証トークンを提示し、許可を与える必要があります。つまり、私たちのセキュリティモデルにはダウンロード計画の暗号化、認証、認可が常に含まれています。
5 — ソフトウェア・アーティファクトのローカルキャッシュ
病院、石油プラットフォーム、ファーストフード店などのエッジサイトにおいて、ソフトウェアアーティファクトをローカルにキャッシュすることには主に2つの利点があります。
- まず、サイトの自律的な運用を可能にします。つまり、セントラルリポジトリへのインターネット接続がなくても、サイト内のコンピューティングシステムを再起動し、再設定することができます。これはエッジサイトで専用のKubernetesクラスターを運用する場合に重要です。
- 次にソフトウェアアーティファクトのダウンロードを集約し、エッジサイト内の各マシンで個別にダウンロードするのではなく、一度だけダウンロードするようにすることで必要な帯域幅を大幅に削減できます。
エッジサイトに設置されたPDN配布ノードはDockerコンテナイメージのようなソフトウェアバイナリをローカルにキャッシュします。このローカルキャッシュは新しいソフトウェアリリースを事前にダウンロードすることで温存できます。
キャッシュが準備されるとクラウドへの接続がなくても、ローカルのマシンやデバイスはキャッシュからバイナリをダウンロードできるようになります。バイナリは一度だけダウンロードされ、サイト内のすべてのマシンで使用されるため、帯域幅も大幅に削減されます。
JFrogのPrivate Distribution Network (PDN)のメリット
これらはエッジコンピューティングのための安全で効率的かつ信頼性の高いソフトウェア配布ソリューションを実現するための5つの主要な設計上の考慮事項と、それらがJFrogのPDNにどのように実装され、次のような利点をもたらすかを示しています。
- ハイブリッド環境対応
- サーバーの負荷を大幅に軽減しながら、スピードと効率性を実現
- 分散アーキテクチャによる大規模なスケーラビリティ、耐障害性、高可用性(HA)
- WANまたはLANで動作する柔軟なネットワークトポロジーをサポート
- アーティファクトを事前に配布する能力
- 暗号化、認証、認可でセキュアにサポート
- コンテナなどのパッケージのサポート
- 監査および規制遵守の簡素化
- 低TCO
Vakulenko氏は「エッジシステムを含む大規模システムへのソフトウェア配布の難しい問題を解決することで、お客様はこのソリューションの構築に時間をかけることなく、アプリケーションに集中することができます」と共同ウェビナーで締めくくりました。
今後に向けて
JFrogは最近、IoTソフトウェアのアップデートとデバイス管理を行うUpswift(現JFrog Connect)を買収し、エッジおよびIoTデバイスの配布能力をさらに強化することに成功しました。
デバイス管理に加え、JFrog ConnectはIoTソフトウェアアップデートのための堅牢な機能を提供し、デバイスをDevOpsプラットフォームの第一級オブジェクトとして開発からデバイスまで迅速、安全かつ信頼性の高い配布を可能にします。
PDNにより、強力なサーバーを内蔵した製造工場のような大きなエッジノードから組み込みデバイスまで、JFrog Connectで幅広くカバーします。
実際に使ってください
PDNのデモをご覧になり、エッジおよびIoTアプリケーション配布を拡張するためのこれらの設計上の考慮事項の詳細についてはTopioとの共同ウェビナーの録画をご覧ください。
IoTアプリケーションの開発?
JFrog Connectの詳細については無料アカウントを作成し、IoTデバイスの管理、アップデート、接続がいかに簡単であるかをご確認ください。