サーバーレスの進化形!? Vercel Fluid Computeを理解する

# はじめに

現代のWebアプリケーション開発において、パフォーマンスとコスト効率の両立は常に大きな課題です。従来のサーバーレスコンピューティングやエッジコンピューティングは、それぞれに優れた特性を持ちながらも、特有の問題点を抱えていました。

Vercelが発表した「Fluid Compute」は、これらの課題を解決する画期的なソリューションとして注目を集めています。この記事では、Fluid Computeの仕組みと特徴について、技術的な視点から解説します。

# 従来のアーキテクチャの課題

## サーバーレスコンピューティングの課題

サーバーレスコンピューティングは、インフラストラクチャの管理から開発者を解放してくれる革新的な手法でした。しかし、いくつかの根本的な課題がありました。

1. **コールドスタート問題**
   サーバーレスは最初のリクエストがあるまでサーバーは停止しているため、起動の時間がかかりレイテンシーが高くなりがちです。これが「コールドスタート」と呼ばれる問題です。

2. **リソースの非効率な使用**
   従来のサーバーレスでは、1つの関数呼び出しが完了すると、そのインスタンスは即座に破棄されます。これにより、リソースが頻繁に生成・破棄され、効率が低下します。

## エッジコンピューティングの課題

エッジコンピューティングは、コンテンツをユーザーに近いエッジサーバーで処理することで低レイテンシーを実現します。しかし、こちらにも課題があります。

1. **厳しいリソース制限**
   エッジコンピュートはメモリやCPUなどのリソースに厳しい制限があります。


2. **レプリケーションの非効率性**
   エッジコンピュートはデータを事前に複製（レプリケーション）し、複数のエッジサーバーに配置しておく必要があります。つまり、同じデータが複数のエッジサーバーに保存されていることになります。そして、これは非効率的です。

エッジコンピュートの仕組みは以下のようになります。

1. データのレプリケーションを行う（複製を作成）
2. それらのレプリカを複数のエッジサーバー（エッジデバイス）に分散して保存
3. ユーザーからリクエストがあった場合、最も近いエッジサーバーのレプリカにアクセスさせる

これにより低レイテンシーを実現できますが、レプリケーションの部分に非効率性があります。

# Vercel Fluid Computeとは

Fluid Computeは、従来のサーバーレスとエッジコンピューティングの長所を取り入れつつ、それぞれの短所を解消する新しいコンピューティングモデルです。その特徴は次のとおりです。

## 主な特徴

1. **コールドスタートの排除**
   既存のリソースを優先的に活用し、ウォームコンピューティング（予め用意されたコンピューティングのためのインスタンス）を利用することで、コールドスタートを最小限に抑えます。

2. **動的なコンピューティング配置**
   データの存在場所に合わせてコンピューティングを動的に配置するため、エッジコンピューティングのようなレプリケーションが必要ありません。

3. **コスト削減**
   Fluid Computeを有効にしたプロジェクトでは、コンピューティングコストが最大85%削減されます。

4. **ゼロ構成・ゼロメンテナンス**
   構成もメンテナンスのオーバーヘッドもゼロで利用できます。

## Vercel Functions Routerの役割

Fluid Computeの中核を担うのが「Vercel Functions Router」です。これには以下の機能があります。

1. **セキュアな状態管理**
2. **低レイテンシーの実現**
3. **自動スケーリング**
4. **リソース効率化**

# Fluid Computeのメカニズム

## 動作フロー

Fluid Computeがどのように動作するのか、そのフローを見てみましょう。

1. ユーザーからリクエストが発生します。
2. ユーザーの位置情報などから、データの存在場所を特定します。
3. そのデータの近くにあるコンピューティングリソースを見つけます。
4. 見つかったリソースにリクエストをルーティングします。

つまり、Fluid Computeはリクエスト時に、その時々の状況に応じて最適なコンピューティングリソースを動的に見つけ出し、ルーティングすることが特徴です。

## マルチリージョンフェイルオーバー

Fluid Computeはマルチリージョンのフェイルオーバーも提供しています。あるリージョンに障害が発生した場合に、別のリージョンに自動的に切り替えることで、サービスの可用性を維持します。

フェイルオーバーの結果、レイテンシーは少し増加する可能性がありますが、高可用性の実現には不可欠な機能です。

# 従来モデルとの比較
公式の比較表です。
公式では、以下の3つを比較しており、Fluid Computeが両者の優れた特徴を兼ね備えていることがわかります。

1.	サーバー
2.	従来のサーバーレス
3.	Fluid Compute

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/879778/f812fb54-9d7b-4fac-b12b-09645b1ef800.png)

ここでは、以下の情報なども参考し、Server lessとedge computingとの比較について記載していきます

https://assets.ctfassets.net/e5382hct74si/2B6mqMu7zeFco4XFGzraya/4438d8a7d7c003665c7f2bc6c5c1032c/Fluid_Compute_Whitepaper__2_.pdf

## サーバーレスとの比較

| 機能 | 従来のサーバーレス | Fluid Compute |
|------|-------------------|--------------|
| コールドスタート | あり | 最小限 |
| リソース利用 | 非効率（使い捨て） | 効率的（再利用） |
| コスト | 高い（※ Fluid Computeと比較して） | 最大85%削減 |
| スケーリング | 通常 | より効率的 |

## エッジコンピューティングとの比較

| 機能 | エッジコンピューティング | Fluid Compute |
|------|------------------------|--------------|
| データ配置 | レプリケーション必要 | レプリケーション不要 |
| リソース制限 | 厳しい | 柔軟 |
| レイテンシー | 低い | 低い |
| グローバル対応 | 複製による | 動的配置による |

# まとめ

Vercel Fluid Computeは、従来のサーバーレスコンピューティングのようなコールドスタートの問題や、エッジコンピューティングのような厳しいリソース制限を克服した新しいコンピューティングモデルです。動的にデータの存在場所に合わせてコンピューティングを配置することで、レプリケーションの必要がなく、既存のリソースを優先的に活用することでコールドスタートも解消しています。

これにより、エッジコンピューティングのような速さとサーバーレスのような可用性を兼ね備えながら、コンピューティングコストを最大85%削減することが可能になります。Fluid Computeは、次世代のWebアプリケーション開発において、パフォーマンスとコスト効率を両立させる重要な技術といえるでしょう。

# おわりに
今回、最近発表されたVercel Fluid Computeについて紹介しましたが、参考になれば幸いです。

hobbyプランでも利用できるため、ぜひ試してみてください。（私は既にVercelにデプロイして有効化しています）

私は、インフラ面にそこまで明るくないですが、今回の記事では不明点を調べて記載しました。誤りがある可能性もありますので、お気づきの点があればご指摘いただけると幸いです。

## 参考文献
https://vercel.com/fluid

https://vercel.com/blog/introducing-fluid-compute

https://vercel.com/blog/how-fluid-compute-works-on-vercel

https://assets.ctfassets.net/e5382hct74si/2B6mqMu7zeFco4XFGzraya/4438d8a7d7c003665c7f2bc6c5c1032c/Fluid_Compute_Whitepaper__2_.pdf