Kedge: フォーク可能なVMスナップショットとグローバルSQLiteを備えたグローバルに分散されたクラウドプラットフォーム
Kedgeはフルスタックアプリケーション向けにグローバルに分散されたインフラストラクチャを提供します
Kedgeは、静的サイト、サーバーレス関数、フルスタックアプリケーションをエンドユーザーに近い場所で統合データベースと共にデプロイすることを目的とした軽量クラウドプラットフォームです。このプラットフォームは、ハードウェアで分離された仮想マシン(VM)とサーバーレススケーリングの俊敏性、そして組み込みのグローバルデータ層を組み合わせることで差別化されています。
コアインフラストラクチャとコンピュートモデル
Kedgeは、フルLinuxカーネルを実行する安全なハードウェアで分離されたVMを利用し、標準的なコンテナランタイムよりも強力な分離を提供します。プラットフォームは以下の仕組みによって迅速なデプロイとスケーリングを最適化しています。
- Instant Sandboxes and Scale-out: KedgeはVMスナップショットを使用して、ほぼ瞬時のスケーリングとサンドボックスの作成を可能にします。
- Autoscaling to Zero: インスタンスは需要に応じてユーザーに近い場所で起動され、アイドル時には自動的にゼロにスケールダウンしてコストを最小化します。
- Deployment Flexibility: ユーザーはSSH(
echo '# Hello, world!' | ssh kedge.dev)、Git、またはHTTP APIを通じてデプロイでき、プッシュ・トゥ・デプロイやプルリクエストごとのプレビュー環境のためのネイティブGitHub統合が提供されます。 - Network Services: プラットフォームはエッジでの静的コンテンツキャッシュ用の組み込みCDN機能、パブリックHTTPSエンドポイント、プライベートネットワーキング、カスタムドメインのサポートを含みます。
統合されたグローバルデータ層
多くのクラウドプロバイダーがデータベース管理を別個のオーケストレーションタスクとみなすのとは異なり、Kedgeはデータ永続性をアプリケーション環境に直接統合しています。
- Global SQLite and Shared Filesystem: すべてのアプリケーションは組み込みのグローバルSQLiteデータベースと共有ファイルシステムにアクセスでき、リージョン間での分散状態を容易にします。
- Persistent Local Volumes: ローカルボリュームは高性能ストレージ用に提供され、耐久性のためにオブジェクトストレージで継続的にバックアップされます。
リソースベースの価格モデル
Kedgeは、割り当てられた容量ではなく実際のリソース消費に基づく秒単位の課金モデルを採用しています。このアプローチにより、ユーザーはアプリケーションが実際に使用しているリソースに対してのみ支払うことが保証されます。
- CPU: スケジュールされたミリ秒分のみ課金されます($15 / vCPU-month)。
- Memory: アクティブな常駐ページを追跡し課金されます($5 / GB-month)。
- Storage: 使用されたバイト数のみ課金されます($0.05 / GB-month)。
- Egress: $0.01 / GB で課金されます。
$5/月 の無料ティアが利用可能で、小規模なウェブサイトや開発環境に十分です。
技術コミュニティの洞察と考慮事項
Kedgeのアーキテクチャに関する技術的議論は、スナップショットとデータレプリケーションモデルに関するいくつかの高度な考慮点を強調しています。
VMスナップショットとエントロピー
重要な技術的懸念の一つは、VMスナップショットの「フォーク境界」に関するものです。スナップショットはプロセスが listen を呼び出したときに取得されるため、以降のクローンは同一のメモリイメージになります。これにより、クローンが同じシードを共有する可能性があるため、エントロピーや乱数生成(RNG)に関するセキュリティと安定性の問題が生じます。ユーザーは、クローンされたインスタンス間で一意な暗号シードを確保するために、復元後のリシードフックが必要であることを指摘しています。
データレプリケーションと一貫性
グローバルSQLiteデータベースの実装に関して、書き込みの同時実行性や基盤エンジンに関する質問が出されています。具体的には、システムが「syzy」(CRDTベースのアプローチ)を利用しているか、複数のインスタンスが同時に書き込みを行う場合の処理方法についてユーザーが問い合わせています。
既存プラットフォームとの比較
コミュニティメンバーはKedgeの統合アプローチをFly.ioと比較し、Flyがビルディングブロックを提供するのに対し、Kedgeはレプリケートされたデータベースとファイルシステムを第一級のプリミティブとして統合することで、開発者の運用負荷を軽減していると指摘しています。