Redis®*용 Upstash
Upstash for Redis는 완전 관리형 Redis 호환 데이터베이스 서비스로, 원거리 리전의 지연 시간을 줄여주는 글로벌 읽기 레플리카를 제공해요. Upstash 데이터베이스는 Fly 조직 안에 프로비저닝되어 Fly 애플리케이션에 대한 프라이빗하고 지연 시간이 낮은 연결을 보장해요. 이 문서에서는 Fly CLI로 Redis 데이터베이스를 만들고 관리하는 방법과 Upstash가 Fly.io에서 작동하는 방식에 대해 설명해 드릴게요.
출처: 문서
본문
\*Redis는 Redis Ltd.의 등록 상표예요. 그에 대한 모든 권리는 Redis Ltd.에 있습니다. Fly.io의 사용은 참조 목적으로만 있으며, Redis와 Fly.io 사이의 후원, 보증 또는 제휴를 나타내지 않아요.Upstash for Redis는 완전 관리형 Redis 호환 데이터베이스 서비스로, 원거리 리전에서 지연 시간을 줄이기 위한 글로벌 읽기 레플리카를 제공해요. Upstash 데이터베이스는 Fly 조직 안에 프로비저닝되어 Fly 애플리케이션에 대한 프라이빗하고 지연 시간이 낮은 연결을 보장해요.
Upstash Redis가 Fly.io에서 어떻게 작동하는지에 대한 자세한 내용은 알아두어야 할 사항 섹션을 참고하세요.
Redis 데이터베이스 만들기 및 관리
데이터베이스 만들기와 관리는 전적으로 Fly CLI로 이루어져요. 설치한 뒤 Fly 계정에 가입하세요.
Redis 데이터베이스 만들기 및 상태 확인
Sidekiq, BullMQ 또는 유사한 소프트웨어를 사용한다면, 종량제(pay-as-you-go) 청구액이 쌓이지 않도록 데이터베이스를 [고정 요금 플랜](#fixed-price-plans)으로 전환하는 것을 고려해 보세요. ```bash cmd flyctl redis create ```? Select Organization: fly-apps (fly-apps)
? Choose a primary region (can't be changed later) Madrid, Spain (mad)
? Optionally, choose one or more replica regions (can be changed later): Amsterdam, Netherlands (ams)
Upstash 웹 콘솔
데이터베이스 사용량, 연결 문자열 등 더 자세한 정보를 보려면:
flyctl redis dashboard <org_name>
데이터베이스 목록 및 상태 보기
모든 Redis 데이터베이스 목록을 가져와요.
```bash cmd flyctl redis list ```ID \tNAME \tORG \tPLAN\tPRIMARY REGION\tREAD REGIONS
aaV829vaMVQGbi5\tlate-waterfall-1133\tfly-apps \tpayg\tmad \tams
데이터베이스 이름을 기록한 뒤 상태를 가져와요.
```bash cmd fly redis status late-waterfall-1133 ```Redis
ID = aaV829vaMVDGbi5
Name = late-waterfall-1133
Plan = Pay-as-you-go
Primary Region = mad
Read Regions = ams
Private URL = redis://password@fly-late-waterfall-1133.upstash.io
Redis 데이터베이스에 연결하기
redis-cli가 설치되어 있다면 Redis 데이터베이스에 직접 연결해 명령을 실행할 수 있어요.
fly redis connect
? Select a database to connect to empty-water-3291 (sjc) 200M
Proxying local port 16379 to remote [fdaa:0:6d6b:0:1::3]:6379
127.0.0.1:16379> set foo bar
OK
127.0.0.1:16379> get foo
"bar"
127.0.0.1:16379>
Redis 데이터베이스 업데이트하기
Upstash Redis 인스턴스는 프라이머리 리전이나 이름을 바꿀 수 없지만, 다음은 변경될 수 있어요:
- 읽기 리전
- 가격 플랜
- 축출(eviction) 설정
flyctl redis update를 사용하고 프롬프트를 따르세요. 리전 설정 변경은 다운타임을 일으키지 않아요.
Redis 데이터베이스 삭제하기
Redis 데이터베이스 삭제는 되돌릴 수 없어요. 조심하세요!
```bash cmd fly redis destroy my-redis-db ```Your Redis database my-redis-db was deleted
알아두어야 할 사항
데이터베이스는 Fly.io 인프라 안에서 실행되지만, 조직의 네트워크 안에서는 실행되지 않아요. 그래서 추가 VM 비용 없이 Upstash 가격만 지불하게 돼요.
모든 Upstash Redis 데이터베이스는 고가용성 구성으로 같은 리전 안에서 복제돼요. 즉 하드웨어 장애가 일반적으로 Upstash 소프트웨어, 따라서 여러분의 데이터베이스에 영향을 주지 않아요. Upstash는 또한 Fly.io 밖의 스토리지에 데이터를 정기적으로 백업해요.
프로비저닝되면 데이터베이스 프라이머리 리전은 변경할 수 없어요. 하지만 레플리카 리전은 언제든지 추가·제거할 수 있어요.
트래픽 라우팅
Upstash Redis는 Fly 조직으로 제한된 프라이빗 IPv6 주소를 통해 모든 Fly 리전에서 사용할 수 있어요. 트래픽은 자동으로 가장 가까운 레플리카로, 또는 가까운 레플리카가 없으면 프라이머리 인스턴스로 라우팅돼요.
단일 리전에 배포할 계획이라면, 애플리케이션과 같은 리전에 데이터베이스가 배포되도록 하세요.
레플리카 리전에 쓰기
레플리카는 쓰기를 프라이머리로 전달해요. 레플리카에는 쓸 수 없어요. 쓰기는 동기식이며, 지리적 거리를 넘는 동기식 쓰기는 지연 시간을 겪어요. 애플리케이션 설계에서 이 지연 시간을 계획하세요.
Redis를 리전 로컬 캐시로 사용하고 공유 캐시가 필요 없다면, 리전별로 별도 데이터베이스를 설정하고 객체 축출을 활성화하세요.
메모리 한도와 객체 축출 정책
기본적으로 Upstash Redis는 최대 데이터 크기 한도에 도달하면 쓰기를 허용하지 않아요. **축출(eviction)**을 활성화하면 공간을 확보하기 위해 키가 축출돼요.
먼저 TTL이 표시된 키가 무작위로 축출돼요. 휘발성 키가 없으면 축출을 위해 키가 무작위로 선택돼요. 이는 표준 Redis의 volatile-random과 allkeys-random 축출 정책의 조합과 대략 일치해요.
명시적 TTL이 표시된 항목은 축출이 활성화되어 있든 없든 정확하게 만료된다는 점을 알아두세요.
가격
Upstash는 다양한 사용 사례를 위한 여러 결제 플랜을 제공해요.
종량제 플랜
Upstash Redis 데이터베이스는 요청 10만 건당 $0.20의 종량제 플랜으로 시작해요. 이는 사용한 만큼만 지불한다는 뜻이에요. 대부분의 사용 사례에서 좋은 출발점이에요. 종량제 플랜에는 다음 한도가 있어요:
- 초당 최대 명령 수: 10,000
- 최대 요청 크기: 10 MB (사용자 지정 가능)
- 최대 항목 크기: 100 MB (사용자 지정 가능)
- 스토리지 한도: 10 GB
사용량은 월간 Fly.io 청구서에 시간 단위로 업데이트돼요. Upstash 웹 콘솔에서도 데이터베이스 사용량 세부 정보를 추적할 수 있어요.
고정 요금 플랜
다음 경우에는 Upstash가 고정 요금 플랜도 제공해요:
- Redis를 큐로 사용하는 Sidekiq, BullMQ 또는 유사한 사전 패키지 소프트웨어를 사용하면서 Redis를 공격적으로 폴링하는 경우
- Redis 사용 패턴을 이해하고 있으면서 예측 가능한 월간 가격을 원하는 경우
이 고정 요금 플랜은 flyctl redis update <dbname>으로 사용할 수 있어요:
| 플랜 | 최대 데이터 크기 | 월 대역폭 | 월 가격 |
|---|---|---|---|
| Fixed 250MB | 250 MB | 50 GB | $10/월 + 읽기 리전당 $5 |
| Fixed 1GB | 1 GB | 100 GB | $20 + 읽기 리전당 $10 |
| Fixed 5GB | 5 GB | 500 GB | $100 + 읽기 리전당 $50 |
| Fixed 10GB | 10 GB | 1 TB | $200 + 읽기 리전당 $100 |
| Fixed 50GB | 50 GB | 5 TB | $400 + 읽기 리전당 $200 |
자세한 내용은 공식 Upstash Pricing 페이지를 확인하세요.
부가 기능(Add Ons)
Upstash는 새 DB를 프로비저닝하거나 fly redis update <dbname>으로 기존 DB에서 활성화할 수 있는 두 가지 부가 기능을 제공해요.
Auto Upgrade
고정 플랜에서 Upstash는 현재 플랜에 따라 사용 한도를 적용해요. 이 한도에 도달하면 동작은 특정 한도 유형에 따라 달라져요. 대역폭 한도는 트래픽을 스로틀하고, 스토리지 한도는 새 쓰기 작업을 거부해요.
Auto Upgrade 기능은 사용 한도에 도달하면 데이터베이스를 자동으로 다음 상위 플랜으로 업그레이드해 중단 없는 서비스를 보장해요. 자세한 내용은 Upstash의 문서를 참고하세요.
AutoUpgrade는 fly redis update <dbname>으로 또는 고정 플랜 DB를 만들 때 옵션으로 활성화할 수 있어요.
Prod Pack - $200/월
Upstash는 데이터베이스별로 Enterprise 수준의 기능을 활성화하기 위한 ProdPack 부가 기능을 제공해요. 이 부가 기능은 데이터베이스에 추가 모니터링, 규정 준수, 가용성 기능을 제공해요. Prod Pack은 종량제와 고정 플랜 모두에서 사용할 수 있어요. 전체 혜택 목록은 Upstash의 공식 ProdPack Documentation을 참고하세요.
Prod Pack은 새 DB를 프로비저닝할 때, fly redis update <dbname>으로 기존 DB에서, 또는 Upstash 대시보드에서 활성화할 수 있어요.