Netlify Edge FunctionsとUpstashサーバーレスRedisで始めるエッジアプリ開発
Netlifyは最近、Denoランタイム上でエッジロケーションにてコードを実行できる「Edge Functions」を発表しました。これにより、グローバルに低レイテンシでコードを実行することが可能になります。この記事では、Netlify Edge Functionsを使ったシンプルなアプリを構築し、データストアとしてUpstash Redisへアクセスする方法を紹介します。
Upstash RedisがNetlify Edge Functionsと相性抜群である理由は、以下の点にあります。
- Upstash Redisには「Global」データベースタイプがあり、Redisレプリカが世界中に分散配置されています。そのため、エッジ関数は最寄りのリージョンへ低レイテンシでアクセスできます。
- 組み込みのREST APIとSDKを備えており、サーバーレスランタイムで起こりがちな接続トラブルを気にせず利用できます。
- Denoランタイム向けにビルド・テスト済みのJS SDKを提供しています。
プロジェクトのセットアップ
以下の手順をスキップしたい場合は、公開されているサンプルフォルダをご確認ください。
まず、空のNodeプロジェクトを作成し(npm init)、netlify > edge-functionsディレクトリ配下にhello.jsを以下の内容で作成します。
hello.js
import { Redis } from "https://deno.land/x/upstash_redis@v1.3.2/mod.ts";
export default async () => {
const redis = Redis.fromEnv();
const counter = await redis.incr("edge_counter");
return new Response(counter);
};
次に、プロジェクトフォルダ直下にnetlify.tomlファイルを作成します。
netlify.toml
[[edge_functions]]
path = "/test"
function = "hello"
続けて、プロジェクトフォルダ直下に.envファイルを作成します。
.env
UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=
UpstashコンソールからRedisデータベースを作成しましょう。エッジ関数からのレイテンシを最小限に抑えるため、「Global」データベースを選択してください。Upstashダッシュボードに表示されるREST_URLとREST_TOKENをコピーし、.envファイルに貼り付けてください。
テストとデプロイ
ローカル環境では、netlify devコマンドでアプリケーションを起動し、https://localhost:8888/testにアクセスして動作を確認できます。
また、Netlifyダッシュボードからアプリをデプロイすることも可能です。その際は、Netlify側の環境変数としてUpstashのURLとトークンを設定しておく必要があります。
まとめ
この記事では、Netlify Edge Functions内でUpstash Redisを使用する方法を解説しました。エッジでの低レイテンシ処理とサーバーレスRedisの組み合わせは、高速かつスケーラブルなWebアプリケーションの構築に非常に有効です。
ご不明な点やフィードバックがある場合は、GitHub、Discord、Twitterでお気軽にお問い合わせください。
-
エッジキャッシングで実現する、世界どこでも5ミリ秒のRedisレイテンシ
Redisでは、データベースとクライアントが同じリージョン内にあれば、1ミリ秒のレイテンシは容易に実現できます。しかし、クライアントが世界中に分散している場合、レイテンシは100ミリ秒を超えてしまいます。この課題を解決するために開発されたのが「Edge Caching(エッジキャッシング)」です。 エッジキャッシングとは エッジキャッシングでは、CDNと同じようにREST APIのレスポンスが世界各地のエッジロケーションにキャッシュされます。エッジキャッシングを有効にすると、平均5ミリ秒というグローバルレイテンシを実現できます。実際に、10の異なるリージョンに配置したクライアントからレイテンシ
-
Cloudflare WorkersとRedisで実現するエッジコンピューティング活用術
エッジコンピューティングは、近年もっとも注目されている技術のひとつです。CDNがファイルをユーザーの近くに配置できるようにしたのと同じように、エッジコンピューティングはアプリケーションそのものをユーザーの近くで実行できるようにします。これにより、開発者はグローバルに分散され、高いパフォーマンスを発揮するアプリケーションを構築できるようになります。 Cloudflare Workersとステートレス性の課題 現在この分野をリードしている製品がCloudflare Workersです。コールドスタートのないサーバーレス実行環境を提供し、Cloudflareのグローバルネットワークを活かすことで、ア