-
SevallaでRedisキャッシュを導入してNext.js APIのパフォーマンスを大幅に向上させる方法
Next.jsと聞くと、静的なウェブサイトやReact駆動のフロントエンドを思い浮かべる方が多いかもしれません。しかし、それはNext.jsの能力の一部にすぎません。実はNext.jsは、他のバックエンドサービスと同じようにホスティングやスケーリングが可能な、本格的なバックエンドAPIの構築にも活用できます。 以前の記事では、Next.jsでAPIを構築し、Sevallaにデプロイする手順を解説しました。そのサンプルではPostgreSQLデータベースにデータを保存し、リクエストを直接処理していました。小規模なうちは問題なく動作しますが、トラフィックが増加すると、リクエストごとにデータベース
-
Docker化した時系列モデルに「記憶」を持たせる:RedisとDockerボリュームで状態を永続化する実践ガイド
売上予測や株価予測ができる優秀な時系列モデルを作ったのに、いざ本番環境にデプロイしたら動かなくなった——そんな経験はありませんか?これはよくある悩みです。ローカルマシンでは完璧に動いていたモデルが、Dockerコンテナにデプロイした途端、「記憶喪失」になったかのように、昨日学んだことをすべて忘れてしまい、明日の予測がまったく役に立たなくなるのです。しかし心配はいりません。これはモデルの欠陥ではありません。時系列モデルの設計思想と、Dockerコンテナの設計思想が根本的に衝突していることが原因です。時系列モデルは「記憶」が命です。過去を記憶してこそ未来を予測できます。一方、Dockerコンテナは
-
QStash:サーバーレス時代のメッセージキュー&タスクスケジューラ
私たちは、QStashのリリースを誇りに思うとともに、大きな興奮を感じています🔥🔥🔥 正式には、QStashはサーバーレスランタイム向けに設計されたメッセージキュー兼タスクスケジューラです。砕けて言えば、QStashはあなたのサーバーレス関数同士をつなぐ「糊(グルー)」のような存在です。 かつて「サーバーレスは単純なタスクにしか向かない」という見方が一般的でした。しかしそうではありません。今や人々はサーバーレススタックで強力なシステムを構築しています。強力なシステムは複数のコンポーネントで構成され、それらの間の通信は大きなエンジニアリング課題となります。この問題に対する優れたソリューショ
-
Next.js API RoutesとUpstash Redisで構築する、高速かつセキュアな認証付きREST API
本記事では、Next.jsのAPI RoutesとUpstash Redisを活用して、最小限でありながら完全に機能する認証付きREST APIサービスを構築します。Upstash Redisは、データの保存はもちろん、ユーザー認証情報やJWT(JSON Web Token)の管理にも使用する超高速なストレージ兼キャッシュシステムとして活躍します。なお、このプロジェクトにはフロントエンドは含まれず、さまざまなクライアントからクエリできるAPIのみを公開する形になります。 前提条件 このチュートリアルを進めるには、以下が必要です。 Upstashアカウント — 無料プランにこちらからサインアッ
-
Upstash RedisでNext.jsに機能フラグを実装し、安全で柔軟なリリースを実現する方法
ソフトウェアのアップデートは避けて通れません。バグの修正、新機能の追加、そしてセキュリティや信頼性、速度の向上のための改善は、継続的な開発の中で常に求められます。 しかし、新機能や変更をデプロイと密接に結びつけるのは必ずしも得策ではありません。定期的なデプロイスケジュールに沿ってリリースしても、マーケティングチームがまだ新機能の発表準備を整えていないケースは少なくありません。変更がコードにハードコードされていれば、機能の有効化・無効化のたびに開発者の力を借りることになってしまいます。 機能フラグ(フィーチャートグル)は、こうした変更をデプロイから切り離すための仕組みです。実装した機能をif文の
-
Upstash・Redis・QStashで実現するリアルタイム緊急対応システムの構築
本記事では、Upstashを活用して国の避難所マップに関する情報をRedisで安全に保存・アクセスする方法と、QStashを使ってデータベースをリアルタイムに更新する方法について解説します。 はじめに 今日の世界では、自然災害や軍事的な脅威がますます深刻化しており、それに伴い社会サービス分野におけるデジタル化のニーズも高まっています。 AMBERアラートのような緊急放送システムから、COVID-19の追跡アプリ、SOSシステムまで、国に影響を及ぼすあらゆる危機的状況に対して、幅広いテクノロジーが活用されてきました。 本記事では、Redisとサーバーレスワークロードがどのようにリアルタイム緊急対
-
OpenAI・Upstash・Next.jsを使ってAI搭載のストーリージェネレーターを構築する方法
このチュートリアルを進める前に、以下の環境がすでに整っていることを前提とします。まだの場合は、事前に準備しておいてください。 RedisインスタンスとQStashインスタンスが作成済みのUpstashアカウント APIキーを取得できるOpenAIアカウント ストーリージェネレーター機能を実装するNext.jsプロジェクト プロジェクトをデプロイするためのVercelアカウント はじめに AIでオリジナルの物語を生成してみたいと思ったことはありませんか? OpenAIのCompletions APIとUpstashのQStashおよびRedisを組み合わせれば、自然言語処理を活用した独自のス
-
Vercel EdgeとUpstash RedisでNext.jsにレート制限を実装する方法
Vercel Edge Middlewareと@upstash/ratelimitライブラリを活用して、Webアプリケーションにレート制限(レートリミット)を実装する方法を解説します。@upstash/ratelimitは、バックエンドでRedisを使用してレート制限データの保存・管理を行うライブラリです。 Vercel Edgeを使うメリット Vercel Edgeは、ユーザーに最も近いロケーションで計算処理を実行するコンピューティングプラットフォームです。本記事では、リクエストがバックエンドに到達する前に処理を割り込ませるVercel Edge Middlewareを使用します。レート制限
-
Upstash Redisで実現するEnvShareの安全な環境変数共有の仕組み
EnvShareとは envshare.devは、開発者が環境変数を安全に誰とでも共有できるようにするオープンソースプロジェクトです。.envファイルをアップロードするか、環境変数を直接入力すると、データはデータベースに保存される前に暗号化されます。生成されたリンクを受け取った人は、環境変数を復号して閲覧できます。 EnvShareは無料で利用でき、完全にオープンソースです。ソースコードはGitHubで公開されています。 主な機能 共有リンク:リンクを送るだけで、環境変数を安全に共有できます エンドツーエンド暗号化:データは保存前にAESで暗号化されます 閲覧回数の制限:リンクが読み取れる回
-
Replicate・Next.js・Upstashで作る写真復元アプリ開発チュートリアル
この記事では、機械学習モデルを活用した写真復元アプリの開発方法を解説します。進める前に、以下の環境が整っていることを前提とします。 Redisインスタンスを作成済みのUpstashアカウント APIトークンを取得済みのReplicateアカウント 機能を実装するためのNext.jsプロジェクト プロジェクトをデプロイするためのVercelアカウント このチュートリアルについて Replicateで提供されているモデルを使って、機械学習による画像生成を始めてみたいと思ったことはありませんか?本チュートリアルでは、Replicateがホストする多彩なモデルとUpstashのRedisを組み合わ
-
Next.jsミドルウェアにEdge Flagsを実装して位置情報ベースのコンテンツ制御を行う方法
Edge Flagsは、サーバーレスアプリケーション向けのフィーチャーフラグを簡単に管理できるツールです。Upstash Redisを基盤としており、強力な地理位置情報ルールを備えています。この記事では、Next.jsのミドルウェアでEdge Flagsを使用し、ユーザーの位置情報に基づいてリクエストを書き換える、シンプルな実装例をご紹介します。 1. フラグを作成する 今回のサンプルアプリでは、EU圏内のユーザーにのみコンテンツを公開したいと考えます。まず、新しいRedisデータベースを作成し、edge-flagsページへ移動しましょう。そこで、作成したデータベースとproduction環境
-
Upstash Redisを活用したリアルタイムコード共同編集プラットフォームの構築
はじめに Codeshareのようなプラットフォームがどのように構築されているのか、疑問に思ったことはありませんか?また、優れた開発者体験を維持しながら、そのようなサービスのスケーリングという課題に挑戦してみようと思ったことはありますか? 私がBytecrowdsの開発を決めたとき、これらすべてを学ぶ必要がありました。徹底的な調査を行った結果、テキスト共有機能にはYjsを使用することに決めました。次はデータベースを選ぶ番です。市場には数多くの選択肢がありますが、私は一つの重要なキーワード、シンプルさで候補を絞り込みました。 なぜUpstashなのか? Upstashを知る前から、私はRedis
-
Upstash Global 2.0発表:超高速・リージョン柔軟性・ダウンタイムゼロのスケーリングを実現
Upstashユーザーの皆様にお知らせできることを嬉しく思います。この度、グローバルデータベース(Redis)の最新版「Global 2.0」をリリースしました。新しいグローバルデータベースでは、利用するリージョンを自由に選択できます。さらに注目すべきは、稼働中のクラスターに対してダウンタイムなしでリージョンの追加・削除が行える点です。各リージョンは、低レイテンシと高可用性を実現するためにデータのコピーを保持するレプリカとして機能します。 エッジ関数向けに設計 Cloudflare WorkersやVercel Edgeなどのエッジランタイムは、ユーザーに最も近いロケーションでコードを実行する
-
Vercel Edge MiddlewareとUpstash Edge Flagsで実現するNext.jsアプリの国別トラフィック制御
本記事では、特定の国からWebアプリケーションへのアクセスをブロックする方法を解説します。この仕組みは、IPアドレスやユーザーエージェントなど、他の条件によるトラフィック制御にもそのまま応用できます。目指すのは、以下のような疎結合・軽量・動的なソリューションです。 対象国を変更する際に、コードの更新や再デプロイが不要であること アプリケーションへのオーバーヘッドとコストを最小限に抑えられること これらを実現するために、「Vercel Edge Middleware」と「Upstash Edge Flags」を活用します。 Vercel Edge Middlewareとは Vercel Ed
-
QStashスケジューラでWhatsAppリマインダーを自動化する方法
QStashは、サーバーレス環境向けに設計されたタスクスケジューラ兼メッセージキューのシステムです。状態管理を意識することなく、特定の間隔で1回だけ、あるいは繰り返し実行される自動化ワークフローを構築できるため、開発者にとって非常に心強いツールとなっています。 まずはQStashのコンソールを実際に触ってみて、リクエストの組み立て方を感覚的に掴んでみると良いでしょう。 ユースケース 私が開発しているプロダクト「GPT Hotline」は、いわばWhatsApp上で動くChatGPTです(同じ基盤モデルを使用しています)。ChatGPTアプリを使うときと同じ感覚で、専用の番号宛てにボットへメッ
-
UpstashとNext.jsで実現するSaaS向けの信頼性の高いクォータシステム構築ガイド
この記事では、Next.jsとPrismaで構築されたSaaSアプリケーション向けに、Upstashを活用したクォータシステムの実装方法を解説します。APIの作成にはNext.jsのAPIルートを使用します。 クォータシステムとは 多くのSaaSアプリケーションでは、クォータシステムが採用されています。これは、一定期間内にユーザーが実行できるアクションの回数を制限する仕組みです。 本記事の例では、「Free」プランのユーザーは月に1,000リクエストまでAPIを利用できます。1,000件を超えるAPIリクエストを送信しようとすると、アプリケーションはそれ以上のリクエストをブロックします。 これ
-
QStashでRedisの状態をデータベースへシームレスに同期する方法
前回の記事では、フルスタックなNext.jsアプリケーションにおいて、ユーザーのクォータ(利用制限)の状態をRedisに保存する方法について解説しました。一般的にRedisはデータベースよりもはるかに高速なため、この手法を採用することでアプリケーションのパフォーマンスを大幅に向上させることができます。 特にUpstash Redisは、このユースケースに最適な選択肢です。完全マネージド型のRedisデータベースであり、HTTP経由でアクセスできるため、Vercelのようなエッジランタイム上でも、ユーザーに近い場所で低レイテンシのコード実行が可能になります。 QStashとは何か? QStash
-
Upstash for RedisでDenoアプリのパフォーマンスを向上させる:応答時間を大幅に短縮するサーバーレスキャッシュの実装
本記事では、Upstash for RedisとJavaScriptのPerformance APIを活用して、Denoアプリのパフォーマンスを最大限に引き出す方法を解説します。Upstash for Redisは、サーバーサイドキャッシュに最適なサーバーレスデータベースです。筆者が開発していたWebアプリは、初期サーバー応答時間(Initial Server Response Time)のスコアが低く、Lighthouseでは500ミリ秒と報告されていました。そこへUpstashのキャッシュを導入したところ、この数値を150ミリ秒未満まで削減し、監査にも合格できるようになりました。実は難しか
-
Vercel Edge FunctionsとUpstash Redisで実現する、安全で低遅延なフィルタリングによるデータ漏洩防止
インターネット上では、データ漏洩が深刻な問題となっています。Statistaの調査によると、2022年だけで4億人以上がデータ漏洩の影響を受けました。自分のデータがネット上に流出することを望む人は誰もいません。そのため、ユーザーのプライバシーを尊重するセキュアなアプリケーションの構築は、多くの業界において極めて重要な課題です。 データ漏洩に対抗する有効な手段の一つが、問題のあるデータを他のサービスやユーザーへ配信する前にフィルタリングすることです。この手法には、データの見逃しを防ぐための常に最新のフィルターと、フィルタリングによるパフォーマンスへの影響を最小限に抑えるための低遅延インフラという
-
Next.js・Replicate・Redisで作るAI画像キャプションアプリ開発ガイド
AIがますます身近な存在となる中、Replicateのような企業は機械学習モデルをプロジェクトへシームレスに組み込むことを容易にしています。 本記事では、ユーザーが画像をアップロードするとAIが生成したテキストキャプションを受け取れるWebアプリケーション「CaptionAI」の開発方法について解説します。このプロジェクトはVercelの公式テンプレートをベースに構築しており、開発の様子を収めた解説動画も公開されています。 使用する技術スタック Next.js 13(フロントエンドおよびバックエンド) Upstash Redis(レート制限) Replicate(機械学習API) Tail