2026年7月31日(金)掲載 3,131本日 29
HN8315

【新技術】Kedge:世界中にSQLiteを分散配置し、爆速起動のVMを活用した次世代フルスタックサーバーレス基盤

Show HN: Kedge – Full-stack cloud with forkable VM snapshots and global SQLite

wgjordan1日前

議論

7
0wgjordanスレ主831日前

Kedgeという、ステートフルなサーバーレスアプリのためのグローバル分散プラットフォームを開発しています。例えば、シンプルな静的サイトならこんなコマンドでデプロイ可能です:echo '# Hello world!' | ssh kedge.dev。私はFly.ioで4年間エンジニアとして働き、「グローバルなHeroku」を目指すという創業者のビジョンに感銘を受けてきました。当時書いた「The Serverless Server」(https://fly.io/blog/the-serverless-server/ )という記事が、軽量VMを軸にしたモダンなサーバーレス製品としてのKedgeの原点となっています。KedgeのVMオーケストレーターは非常に高速で、フォーク可能なVMスナップショットとウォームプール(Linuxカーネル→ベースランタイム→アプリ)のツリー構造を組み合わせることで、コードサンドボックスの作成やサービスインスタンスのスケールをわずか3ミリ秒で完了させます。Copy-on-Writeのメモリページを共有することで、メモリ効率も非常に高いのが特徴です。CGIライクな軽量関数から、OCIイメージ、あるいはBuildKitによるソースコードからのビルド・デプロイまで幅広く対応しています。Kedgeのグローバルコントロールプレーンは、結果整合性のSQLiteデータベース上に構築されています。CorrosionやLitestreamから着想を得て、オブジェクトストレージをバックエンドにしたローカルファーストかつマルチライターなCRDTベースのレプリケーションシステムを自作し、先日オープンソース化しました(https://github.com/wjordan/syzy )。また、アプリ内のどのインスタンスからでも/shared.dbをクエリするだけで、組み込み済みのレプリケートされたデータベースとして利用可能です。これにより、ユーザーの近くで自動スケールしつつ、各インスタンスがローカルのレプリカを参照して結果整合性のあるデータを扱えるため、インスタンスやボリュームの配置を細かく管理する必要はありません(便利な/shared/ファイルシステムアダプターも用意しています)。さらに、ステートフルなサーバーサイドレンダリングアプリのために、このデータベースを活用する機能もあります。データ属性を使ってフォームやボタン、値をデータベースのレコードにバインドし、デプロイ時にスキーマと操作をコンパイルすることで、高速なクエリを実現します。デモとして、Hacker Newsのクローン(記事投稿、投票、コメント、認証機能付き)を約60行のMarkdownとCSSで作成しました(https://kedge.dev/docs/html-apps#kedger-news )。現在、パブリックでのフィードバックを募集中です。特に、最新かつ最も野心的な試みである「ステートフルHTMLアプリモデル」についての感想をぜひ聞かせてください。現在11リージョンでプレビューが動作中です。まだ課金機能は実装されておらず、料金ページは目安ですので、ぜひいろいろ触ってみてください!

1vyedin1日前

これめちゃくちゃ最高。試してみたいからブックマークしとくわ。

デモとして、ストーリー投稿、投票、コメント、認証機能を備えたHacker Newsクローンを約60行のMarkdownとCSSで作った

まあ、なぜこれを悪用する人がいるのかは謎だけどね

3tekacs1日前

これは驚異的だね、素晴らしい仕事!

今ちょうどHNのトップページにSuperlogical(関係者じゃないよ)があるんだけど、Kedge Newsのデモで提供されてるシェルを使って、スマホのブラウザから数秒前に立ち上げたインスタンスに対して ssh superlogical.jobs ができたよ :)

ボリュームの永続性に関する規約がすぐに見当たらなかったんだけど、FlyみたいにローカルNVMeなのか、それともEBSみたいに何らかの基盤システムに乗ってる感じ?

4PersonalJarvis1日前

フォーク境界について2つ質問がある。プロセスがlistenを呼び出した時にスナップショットが一度作成されるから、それ以降のインスタンスはすべて同じメモリイメージのクローンになるし、初期化時にシードされたデータは全リージョンの全クローンで同一になるよね。まさにそのためにLinuxのvmgenidドライバが存在するわけで、Lambda SnapStartが明示的な再シードのガイダンスを出す必要があった理由もそこにある。ランタイム、パフォーマンス、セキュリティのドキュメントのどこを見てもエントロピー、RNG、再シードに関する記述が見当たらないんだけど、復元後の再シードフックは存在する?あと、それは最初のacceptの前に実行されるの?

もう一つはsyzyについて。CRDT.mdには破棄(eviction)はオペレーター主導だとあるし、PRUNING.mdは設計段階の規約でまだコードではない、保持期間を過ぎたレプリカは離脱する重複を一時的に観測する可能性があると書かれている。その一方で、製品のキャッチコピーではアイドル時のスケール・トゥ・ゼロを謳っていて、それがオフラインレプリカを継続的に生成しているよね。マネージド製品において誰が syzy_evict を呼んでいるの?

5ianberdin1日前

豆知識だけど、自分たちもFly.ioのアイデアを基にクラウドプラットフォームを作ったんだ。ただ、Rustでカスタムファイルシステムを構築して超強化したけどね。

このプラットフォームはPlaycode.aiを含むビジネスユーザー向けのフルスタックアプリケーションを動かしているよ。

詳細についてはこちらを見てみて:https://playcode.io/cloud (https://playcode.io/cloud)

6sureglymop1日前

これ最高にかっこいい!Webサイトのクリーンでミニマルなデザインもすごく気に入ったよ。

コンテナエンジンの crun/runc のドロップインリプレースメントとして (lib)krun を使って、qemuマイクロVMを動かすっていうアイデアにはワクワクしてるんだ。OSの全プロセスがそんなふうに動いたらどうなるかを探究してるところだよ。正直うらやましいな、こういうプロダクトに関われるなんて最高だね!