Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

Fly.io 앱에 서버리스 Redis 연동하기: Upstash Redis 글로벌 데이터베이스 완벽 가이드

Fly.io는 애플리케이션을 전 세계 여러 리전에 분산 배포할 수 있는 훌륭한 플랫폼입니다. 하지만 애플리케이션이 글로벌하게 운영된다면, 그 데이터 역시 글로벌하게 접근 가능해야 합니다. 일반적인 Redis를 Fly.io 앱으로 실행할 수도 있지만, 이 경우 데이터가 단일 리전에만 위치한다는 한계가 있습니다.

반면 Upstash의 Redis 글로벌 데이터베이스(Global Database)는 전 세계 리전에 복제되기 때문에 Fly.io와 완벽하게 어울립니다. 또한 REST 기반 SDK를 제공하기 때문에 서버리스(stateless) 런타임 환경에서도 연결 문제 없이 안정적으로 사용할 수 있습니다.

이 글에서는 Upstash Redis에 접근하는 기본적인 Node.js 애플리케이션을 만들고, 이를 Fly.io 플랫폼에 배포하는 과정을 단계별로 살펴보겠습니다.

Fly.io 설정

  • Fly.io 계정을 생성합니다.
  • flyctl CLI를 설치한 후 터미널에서 flyctl auth login 명령어로 로그인합니다.

Upstash Redis 설정

  • Upstash 콘솔에서 무료 글로벌 데이터베이스를 생성합니다.
  • 발급된 REST_URLREST_TOKEN을 복사해 둡니다. 다음 단계에서 사용하게 됩니다.

애플리케이션 코드 작성

  • hello world 예제 앱을 클론합니다:
    git clone https://github.com/fly-apps/hellonode-builtin
  • 필요한 의존성을 설치합니다:
    npm install express @upstash/redis
  • server.js 파일을 열고 아래 코드의 urltoken 값을 앞서 복사한 값으로 교체합니다.

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}!`));

위 코드는 요청이 들어올 때마다 Redis의 count 키를 1씩 증가시키고, 방문 횟수를 화면에 표시하는 간단한 카운터 예제입니다. Upstash Redis는 HTTP 기반 REST API로 동작하므로, 영구 연결(persistent connection)이 어려운 서버리스 환경에서도 별도 설정 없이 바로 사용할 수 있습니다.

실행 및 배포

  • 로컬에서 애플리케이션을 실행합니다:
    node server.js

  • Fly.io에 앱을 등록하고 배포합니다:
    flyctl launch

  • 코드 수정 후에는 아래 명령어로 재배포할 수 있습니다:
    flyctl deploy

  • 배포된 애플리케이션의 URL은 다음 명령어로 확인합니다:
    flyctl status

  • Fly.io 대시보드에서도 애플리케이션 상태를 확인할 수 있습니다.

Fly.io 앱에 서버리스 Redis 연동하기: Upstash Redis 글로벌 데이터베이스 완벽 가이드

마무리

이번 글에서는 Fly.io 애플리케이션 플랫폼에서 Upstash Redis를 활용하는 방법을 알아보았습니다. 글로벌 복제와 REST 기반 접근이라는 두 가지 강점 덕분에, Fly.io처럼 전 세계에 분산된 환경에서도 데이터 계층을 손쉽게 구축할 수 있습니다.

사용 중 문제가 발생하거나 의견이 있다면 GitHub, Discord, Twitter를 통해 언제든지 문의해 주세요.