クラウドプラットフォームサービス会社のVercelは、顧客のビルドのインフラストラクチャを支える新しい低レベルコンピュートプラットフォームであるHiveについての詳細な分析を公開した。Vercelは、2023年11月から信頼されていない一時的なコンピューティングタスクのためにHiveを使用している。
ブログ記事で、VercelのビルドおよびコンピュートのプロダクトマネージャーであるMariano Cocirio氏とプリンシパルエンジニアのGuðmundur Bjarni Ólafsson氏は、Hiveを開発した理由について説明している。彼らは、顧客の増大する要求に応えつつ、マルチテナント環境におけるセキュリティを維持するためにHiveを設計したという。
私たちは、Vercelのインフラストラクチャを継続的に改善するために、より細かな制御とより粒度の高い管理が必要だったため、Hiveを構築したのです。
このプラットフォームは、「Hive」と呼ばれる地域クラスターのシステムで構成されており、それぞれが独立して機能し、独自の障害境界を持っている。各クラスターには、いくつかの重要なコンポーネントが含まれており、これには「Box」(ベアメタルサーバー)、「Cell」(仮想マシン)、オーケストレーション用のコントロールプレーン、そして各Hiveインスタンス専用のAPIが含まれている。
技術的なレベルでは、HiveはKernel-based Virtual Machine(KVM)技術と、AWSで最初に開発されたオープンソースのMicroVMであるFirecrackerを使用している。これらの技術は組み合わさって、ビルドプロセスを実行するための安全で分離された環境を作り出している。このシステムには「ボックスデーモン」があり、プロビジョニングと「セルデーモン」との通信を管理している。セルデーモンは、顧客のワークロードを実行するビルドコンテナを制御する役割を果たしている。
Vercelは、セルを事前にウォームアップすることでビルドプロセスをさらに効率化し、ほとんどのビルドがセルの作成を待つことなく即座に開始できるようにした。ビルドが開始されると、システムは顧客とビルドの設定に基づいて適切なHiveクラスターを選択し、その後、セル内のコンテナでビルドを実行する。ビルドが完了すると、セルは破棄され、プラットフォームの一時的な性質が維持される。
Vercelは、Hiveのアーキテクチャにおいてセキュリティと分離に重点を置いている。各仮想マシンには専用のCPUとメモリが割り当てられ、ディスクおよびネットワークのスループットは全体の容量とボックスの分割に基づいてレート制限されている。このアプローチにより、システムの整合性やパフォーマンスが損なわれることなく潜在的に悪意のあるコードがマルチテナント環境で安全に実行できるようになる。
YouTubeの動画で、CodedamnのMehul Mohan氏はVercelのブログ記事について実際のワークフローを説明している。開発者がコードをGitHubにプッシュすると、ウェブフックがVercelのビルドプロセスをトリガーし、Hiveがなぜ信頼されていない一時的なものである必要があるのかを示している。Mohan氏は、Codedamnのプレイグラウンドが信頼されていないコードを実行する際に直面する類似の課題を引き合いに出し、Vercelのアーキテクチャが複数の分離層を使用している理由を明らかにしている。
Sum Of Bytesの投稿で、Arpit Kumarはサーバーレスコンピューティングにおける仮想化のさまざまなアプローチについて論じており、特にセキュリティ、分離、パフォーマンスのバランスを取る解決策としてMicroVMに焦点を当てている。従来のコンテナは高速で効率的であるものの、ホストカーネルを共有しており、悪意のあるコードがカーネルパニックを引き起こすとセキュリティリスクとなる可能性がある。。この問題を受けて、MicroVMが開発され、Firecrackerは、わずか300ミリ秒で起動することができる注目すべき例である。
Kumar氏は、大手企業におけるさまざまなMicroVMの実装を比較している。AWSはLambdaやFargateのためにFirecrackerを使用し、Cloudflareはワーカーを実行するためにV8 Isolatesを採用している。また、GoogleのgVisorはコンテナを実行するための別のセキュリティ重視のVMとして挙げられている。さらに、Kumar氏はWebAssemblyを別のサンドボックスアプローチとして言及しており、これはほぼネイティブの速度を実現する。また、他の新興のRustベースのMicroVMの代替案についても触れている。
Hiveは、VercelのSecure Compute製品とも統合されており、組織が機密性の高いビルドプロセスのためにプライベートネットワーク接続を利用できる。この統合は、特にセキュアなビルドのためのプロビジョニング時間において、以前のソリューションに比べて大幅な改善をもたらしている。
Cocirio氏とÓlafsson氏は追加投稿で、この仕組みについて説明している。
各Hiveセルは、コネクタのWireGuardインターフェースを使用して安全なトンネルを開始します。キーはインスタンスのブート時に生成され、キー交換サービスを介して配布されますが、持続性や再利用はありません。
このプラットフォームのセキュリティモデルは、Linuxネットワークネームスペースを使用しており、各WireGuardインターフェースはボックス内の独自のネームスペースで動作している。このアーキテクチャにより、すべてのセルトラフィックが暗号化され、顧客のインフラストラクチャに戻る安全なトンネルを通じて正しくルーティングされることが保証されている。
以前のFargateベースのソリューションに比べて、システムのパフォーマンスにおいて大幅な改善が見られる。セキュアなビルドは以前、プライベートネットワーク内で最大90秒のプロビジョニング時間を必要としていたが、新しいHiveベースのアーキテクチャではこれがわずか5秒に短縮され、同じレベルのネットワークセキュリティを維持している。また、以前のソリューションと比較して全体のビルドパフォーマンスは30%向上している。Vercelは、これらの改善の一部をDockerイメージキャッシングなどの最適化に起因しており、これによりスタートアップ時間が約45秒短縮されたと述べている。
プラットフォームの成功により、VercelはHiveの使用を他のビジネス領域に拡大することを検討している。現在は顧客ビルドのインフラストラクチャに焦点を当てているが、同社はHiveを汎用コンピュートプラットフォームとして位置付けており、将来的にはより広範なアプリケーションの可能性を秘めている。Vercelは、キャッシング戦略のさらなる強化やリポジトリのクローン最適化に向けた作業を進めており、改善や新しいユースケースの探求を続けている。