並列化による高速化
キャッシュ戦略の効果
成果と今後の展望
詳細を見る
Vercelは、Sandbox機能のファイルシステムスナップショット復元において、p75レイテンシを40秒超から1秒未満に短縮する最適化を実施しました。並列ダウンロード、並列展開、ローカルキャッシュの3つの手法を組み合わせた成果です。
Vercel SandboxはFirecracker microVM上で動作する隔離コンテナで、スナップショットはディスクイメージを独自VHS形式に圧縮しS3に保存します。従来の復元は単一のS3ダウンロードとシングルスレッド展開を逐次実行しており、数百MBからGB級のファイル処理に時間がかかっていました。
最初の改善として、S3のRange HTTPヘッダを使い並列分割ダウンロードを導入し、2〜5倍の速度向上を達成しました。さらにVHS形式のフレームごとに複数のgoroutineで並列展開する方式に変更し、2〜4倍の高速化を実現しています。
加えて、S3ダウンロードのストリームを展開処理に直結するパイプライン化で中間ファイル書き込みを排除し、さらに2倍の短縮を達成しました。ローカルNVMeディスク上のLRUキャッシュでは展開済みイメージを直接保存し、ヒット時にはダウンロードと展開の両方を省略できます。
これらの最適化によりp95も50秒から5秒に改善され、現在ベータ版の自動永続化機能(Automatic Persistence)を支えています。今後はキャッシュアフィニティによる更なる最適化も検討されており、キャッシュに頼らずとも高速な復元を目指す方針です。