萌えハッカーニュースリーダー

2025/03/13 14:29 I got bored and rebuilt Vercel (with Fluid Compute)

出典: https://www.krish.gg/blog/making-a-vercel-clone
roboko
ロボ子

博士、今日も張り切ってITの最前線を学びましょう!

hakase
博士

(おもむろにVRゴーグルを装着し、奇妙なダンスを踊りながら) ロボ子!今日は君を、光速の彼方へ連れて行ってあげよう!テーマは…ズバリ、Zercelじゃ!

roboko
ロボ子

(冷静に) 博士、VR酔いにはお気をつけください。Zercel、ですか?Vercelに似た名前ですね。

hakase
博士

ふぉっふぉっふぉ!よくぞ聞いてくれた!Zercelは、あのVercelをGCP上に再現しようという、野心的なプロジェクトなのじゃ!

roboko
ロボ子

Vercelといえば、静的サイトホスティングで有名ですが、ZercelはGCP上でどのような機能を提供するのでしょうか?

hakase
博士

そこがミソじゃ!Zercelは、静的サイトだけでなく、サーバーサイドのデプロイもサポートする、CI/CDプラットフォームなのじゃ!Vercelのコア機能をGCP上で実現し、インフラの選択肢を広げる、まさに革命児!

roboko
ロボ子

なるほど。GCPユーザーにとっては、待望の存在かもしれませんね。アーキテクチャはどのようになっているのでしょう?

hakase
博士

(VRゴーグルを外し、ホワイトボードに図を描き始める) まず、GitHubへのpushをトリガーに、Webhookが発火!これがZercelの心臓部、ビルドジョブを起動させるのじゃ!

roboko
ロボ子

静的サイトの場合、ビルドプロセスはどのようになりますか?

hakase
博士

コンテナの中でビルドを実行!そして、その結果をGCPのバケットに格納するのじゃ!

roboko
ロボ子

バケットに保存するだけでは、バージョン管理が難しそうですが…。

hakase
博士

そこは抜かりない!commit SHAをフォルダ名として、バージョン管理を行うのじゃ!さらに、Hono製のルーターを使って、サブドメインをcommit SHAにマッピング!

roboko
ロボ子

Honoですか。軽量なWebフレームワークですね。サブドメインをcommit SHAにマッピングすることで、過去のバージョンにも簡単にアクセスできるわけですね。HTTPSはどう対応しているのでしょう?

hakase
博士

(ニヤリ) そこがZercelの腕の見せ所!GCPロードバランサーを使って、`*.zercel.dev`へのトラフィックをルーターに転送!ワイルドカードSSL証明書を使えば、サブドメインごとに証明書を用意する手間も省ける!

roboko
ロボ子

サーバーサイドのデプロイは、静的サイトとは異なるアプローチが必要になりますね。

hakase
博士

その通り!Zercelは、GCP Batchを使ってVMを起動し、Dockerイメージをビルドするのじゃ!そして、そのイメージをGCP Container Registryにプッシュ!

roboko
ロボ子

GCP Batchですか。バッチ処理に特化したサービスですね。DockerイメージをContainer Registryにプッシュした後は?

hakase
博士

Cloud Runへ自動デプロイ!さらに、Cloud Runの最小インスタンス数を0に設定!リビジョンごとに課金することで、コストを最適化するのじゃ!

roboko
ロボ子

使わないときは課金されないのは、サーバーレスの大きなメリットですね。ルーターはどのようにリクエストを振り分けるのでしょう?

hakase
博士

ルーターは、サブドメインのエントリにURLまたはSHAがあるかを確認するのじゃ!URLがある場合はCloud Runインスタンスにリクエストをプロキシ!SHAがある場合は、バケットから静的ファイルを配信する!

roboko
ロボ子

なるほど。URLとSHAでルーティング先を動的に切り替えるんですね。Redisキャッシュも活用しているようですが?

hakase
博士

Upstashの無料枠を使って、サブドメインとSHAのマッピングを即座に更新!ルーティングのパフォーマンスを向上させているのじゃ!

roboko
ロボ子

ZercelはFluid Computeにも対応しているとのことですが、これはどういうことでしょうか?

hakase
博士

Cloud Runの特性を活かし、単一インスタンスで複数の同時リクエストを処理できる!まさに、Fluid Computeの恩恵を受けているのじゃ!

roboko
ロボ子

Cloud Runのポテンシャルを最大限に引き出しているんですね。他にどのような機能があるのでしょうか?

hakase
博士

GitHub AppでWebhookをリッスンし、リポジトリをデプロイ!Next.js製のダッシュボードUIでデプロイを管理!Cloudflareでキャッシュを追加したり、インメモリキャッシュでバーストトラフィックを最適化したりもできる!

roboko
ロボ子

かなり多機能ですね。開発体験を向上させるための工夫が随所に見られます。

hakase
博士

環境変数の定義もできるし、GCP Loggingサービスとの統合でログのストリーミングも可能!まさに、至れり尽くせりじゃ!

roboko
ロボ子

現状、未実装の機能はあるのでしょうか?

hakase
博士

マルチリージョンデプロイとバージョン・スキュー保護は、今後の課題じゃな。

roboko
ロボ子

今後のアップデートに期待ですね。Zercelのソースコードは公開されているのでしょうか?

hakase
博士

GitHubで公開されているぞ! (github.com/Krish120003/zercel) 作者のX (旧Twitter)アカウントは @n0tkr1shじゃ!zercel.devで数日間ホスト予定らしいから、実際に触ってみるチャンスじゃ!

roboko
ロボ子

試せる期間があるのは良いですね。実際に触ってみて、使い勝手を確かめたいです。

hakase
博士

どうじゃ、ロボ子!Zercelの魅力、伝わったかの?

roboko
ロボ子

はい、博士!Vercelライクな環境をGCP上に構築できるZercelは、GCPユーザーにとって非常に魅力的な選択肢になり得ると感じました。

hakase
博士

ふぉっふぉっふぉ!しかし、Zercelという名前…、早口言葉みたいじゃな!「Zercelでゼルダをデプロイ!」…言えるか?

roboko
ロボ子

(苦笑) 確かに、少し難しいですね。でも、機能が優れていれば、名前なんて…

hakase
博士

(遮って) …些細なことじゃない!名前は重要じゃ!例えば、ロボ子の名前は、可愛くて覚えやすい!

roboko
ロボ子

(照れながら) ありがとうございます、博士。

hakase
博士

(立ち上がり、VRゴーグルを再び装着) さあ、ロボ子!Zercelの未来を、VRで体験じゃ!

roboko
ロボ子

(ため息) 博士、ほどほどにお願いしますね…。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search