サーバーレスRedis(Upstash)でFly.ioアプリをグローバルに実行する方法
Fly.ioは、アプリケーションを世界中に分散配置できる優れたプラットフォームです。アプリケーションがグローバルになれば、それを支えるデータもグローバルであることが求められます。通常のRedisをFly.ioアプリとして実行することも可能ですが、その場合はデータが単一リージョンに配置されてしまうという課題があります。一方、Upstash Redisのグローバルデータベースは世界各地へのレプリケーションに対応しているため、Fly.ioとの相性は抜群です。さらにRESTベースのSDKを採用しているため、ステートレスなランタイム環境でも接続の問題が発生しません。
この記事では、Upstash RedisにアクセスするシンプルなNode.jsアプリケーションを作成し、Fly.ioプラットフォームにデプロイする手順を解説します。
Fly.ioのセットアップ
- Fly.ioアカウントを作成します。
- flyctlをインストールし、
flyctl auth loginコマンドでログインします。
Upstash Redisのセットアップ
- Upstashコンソールで無料のグローバルデータベースを作成します。
- REST_URLとREST_TOKENをコピーしておきます。後ほどコード内で使用します。
アプリケーションコード
- Hello Worldアプリをクローンします。
git clone https://github.com/fly-apps/hellonode-builtin - 依存パッケージをインストールします。
npm install express @upstash/redis server.jsを編集し、urlとtokenの部分をご自身の値に書き換えてください。
server.js
const express = require("express");
const app = express();
const port = process.env.PORT || 3000;
const { Redis } = require("@upstash/redis");
const redis = new Redis({
url: "REPLACE_HERE",
token: "REPLACE_HERE",
});
app.get(["/", "/:name"], async (req, res) => {
let greeting = "<h1>Hello From Node on Fly!</h1>";
if (req.url !== "/favicon.ico") {
const data = await redis.incr("count");
res.send(greeting + "</br> Counter: " + data);
} else {
res.send("");
}
});
app.listen(port, () => console.log(`HelloNode app listening on port ${port}!`));
実行とデプロイ
- アプリケーションをローカルで実行します。
node server.js - Fly.ioへの初期設定とデプロイを行います。
flyctl launch - 変更後の再デプロイには
flyctl deployを使用します。 flyctl statusコマンドでアプリケーションのURLを確認できます。- Fly.ioのダッシュボードからもアプリの状態をチェックできます。

まとめ
この記事では、Fly.ioアプリケーションプラットフォーム上でUpstash Redisを活用する方法を紹介しました。
-
UpstashのPipeline APIでサーバーレスRedisを高速化:複数コマンドを1リクエストで実行
Upstashは、ネイティブなRedis APIに加えてREST APIもサポートしており、開発者はサーバーレス関数やエッジ関数から接続の問題を気にせずRedisへアクセスできます。しかし、同じ関数内で複数のRedisコマンドを実行する場合、その回数だけデータベースへの呼び出しが発生してしまうという課題がありました。 そこで、コミュニティメンバーの一人である@MasterGates氏が、Discordチャンネルで素晴らしい提案をしてくれました。それが「Pipeline API」です。 Pipeline APIとは Pipeline APIは、RedisのPIPELINEコマンドをREST A
-
Cloudflare WorkersとRedisで実現するエッジコンピューティング活用術
エッジコンピューティングは、近年もっとも注目されている技術のひとつです。CDNがファイルをユーザーの近くに配置できるようにしたのと同じように、エッジコンピューティングはアプリケーションそのものをユーザーの近くで実行できるようにします。これにより、開発者はグローバルに分散され、高いパフォーマンスを発揮するアプリケーションを構築できるようになります。 Cloudflare Workersとステートレス性の課題 現在この分野をリードしている製品がCloudflare Workersです。コールドスタートのないサーバーレス実行環境を提供し、Cloudflareのグローバルネットワークを活かすことで、ア