프로젝트를 제시간에 완료하려면 기존 기술과 도구를 최대한 활용하는 것이 핵심입니다. 커스텀 구현을 선택할 때마다 그 솔루션을 직접 유지보수해야 한다는 점까지 고려해야 하죠. 바로 이런 이유로 Strapi 같은 오픈소스 도구가 다음 프로젝트의 REST API 구축에 최선의 선택이 됩니다.
Strapi는 최신 헤드리스 CMS로, 그래픽 인터페이스만으로 스키마를 정의할 수 있어 비개발자도 손쉽게 데이터 모델링을 할 수 있습니다. 개발 팀은 백엔드 구현 걱정 없이 웹·모바일 앱 개발과 새로운 기능 출시에 집중할 수 있습니다. 방대한 오픈소스 커뮤니티가 Strapi를 함께 관리하고 있으니까요.
백엔드 응답 속도 높이기
SQLite를 사용할 때 Strapi는 비교적 빠르게 응답을 반환하지만, 데이터와 사용자 수가 늘어나면 이 조합이 최선의 시작점은 아닐 수 있습니다. 시장에 출시한 후에는 전 세계에 흩어진 수천 명의 사용자를 감당해야 하는 상황이 벌어질 수도 있습니다.
따라서 모든 트래픽을 처리하려면 Strapi와 데이터베이스 배포 환경을 함께 확장해야 합니다. 이때 간단히 캐시만 붙일 수 있다면 얼마나 편할까요?
REST Cache 플러그인 만나기
Strapi의 REST Cache는 여러 플러그인으로 구성된 모음으로, Strapi 애플리케이션에 LRU(Least Recently Used) 캐싱을 추가해 실제 데이터베이스 요청 수를 크게 줄여줍니다.
메모리, Couchbase, Redis가 기본 지원되며, 필요하다면 직접 커스텀 프로바이더를 작성할 수도 있습니다. 특히 주목할 부분은 Redis 캐시 프로바이더 덕분에 몇 분 만에 Upstash Redis에 연결할 수 있다는 점입니다!
Upstash Redis는 일반적으로 Redis를 쓰는 대부분의 시나리오에서 그대로 활용할 수 있습니다. 차이점이라면 클릭 몇 번으로 설정이 끝나고, 글로벌 복제(global replication)를 지원해 Strapi 인스턴스가 가장 가까운 복제본으로 자동 라우팅된다는 점입니다. 빠른 캐시에는 필수적인 기능이죠. 게다가 서버리스 방식이라 사용한 만큼만 요금을 지불합니다.
그럼 지금부터 Strapi와 Upstash Redis를 연동하는 방법을 단계별로 살펴보겠습니다!
사전 준비 사항
이 튜토리얼을 따라 하려면 다음 세 가지가 필요합니다.
- Upstash 계정
- Node.js 설치
- Yarn — Strapi에서 권장하는 패키지 매니저
Strapi 프로젝트 생성하기
이미 Strapi 프로젝트가 있다면 바로 "REST Cache 추가하기" 섹션으로 건너뛰어도 좋습니다. 아래 단계는 실습에 사용할 데이터를 준비하기 위한 과정입니다.
첫 번째 단계는 Strapi로 새 백엔드를 만드는 것입니다. 다음 명령어를 실행하세요.
$ npx create-strapi-app@latest strapi-upstash-redis-cache
명령어 실행이 끝나면 브라우저가 자동으로 열리고 관리자 로그인 정보를 입력하라는 메시지가 표시됩니다. 이후 데이터 모델과 첫 콘텐츠를 생성할 수 있습니다.
Content-Type Builder로 데이터 모델링하기
로그인 후 Strapi Content-Type Builder를 사용해 첫 데이터 컬렉션을 모델링합니다. 그림 1은 Strapi 관리자 콘솔에서 Content-Type Builder의 위치를 보여줍니다.

"Create new collection type" 링크를 클릭해 새 타입을 생성합니다. 이름은 "Article"로 정하고 두 개의 텍스트 필드를 추가합니다. 하나는 짧은 텍스트용 "title", 다른 하나는 긴 텍스트용 "content" 필드입니다.
그림 2는 "Save" 버튼을 누르기 전 타입이 어떻게 구성되어야 하는지 보여줍니다.

다음으로 해당 콘텐츠 타입의 실제 인스턴스가 필요합니다.
Content Manager로 콘텐츠 생성하기
Content Manager의 위치는 그림 1에서 확인할 수 있습니다. 해당 메뉴로 이동한 뒤 오른쪽 상단의 "Create new entry" 버튼을 클릭하세요.
그림 3에서 새 콘텐츠 항목 작성 UI를 확인할 수 있습니다. 이때 "Save"와 "Publish" 버튼을 반드시 순서대로 클릭하세요. 그렇지 않으면 공개 API를 통해 접근할 수 없는 비공개 초안으로만 남습니다.

콘텐츠 타입 권한 설정하기
Article 타입과 실제 게시글이 준비되었지만, 아직 외부에서 접근할 수 없습니다. 이를 변경하려면 Public 역할(role)을 수정해야 합니다. 그림 4는 내비게이션에서 해당 메뉴의 위치를 보여줍니다.

Public 역할을 클릭한 후 "Article" 권한으로 이동합니다. 여기서 "find"와 "findOne"을 선택하고 "Save"를 누르면, 해당 API에 접속하는 누구나 게시글 전체 목록을 조회하거나 개별 게시글을 불러올 수 있습니다.
브라우저에서 articles 리소스를 열면 방금 만든 게시글이 표시됩니다. Strapi 기본 설정 기준으로 다음 URL에서 리소스에 접근할 수 있습니다.
https://localhost:1337/api/articles
응답은 대략 다음과 같은 형태입니다.
{
"data": [
{
"id": 2,
"attributes": {
"title": "My First Article",
"content": "This is an article!",
"createdAt": "2022-04-06T15:29:48.104Z",
"updatedAt": "2022-04-06T15:29:48.949Z",
"publishedAt": "2022-04-06T15:29:48.948Z"
}
}
],
"meta": {
"pagination": {
"page": 1,
"pageSize": 25,
"pageCount": 1,
"total": 1
}
}
}
REST Cache 추가하기
드디어 핵심 단계, Upstash Redis로 캐싱을 추가하는 파트입니다!
먼저 세 개의 패키지를 설치해야 합니다.
yarn add strapi-plugin-redis \
strapi-plugin-rest-cache \
strapi-provider-rest-cache-redis
이 세 패키지를 통해 Strapi가 Upstash Redis 데이터베이스로 데이터를 전송할 수 있게 됩니다.
Upstash Redis 데이터베이스 생성하기
캐시를 올바르게 구성하려면 Redis 인스턴스의 URL이 필요합니다. 이를 위해 Upstash Redis 데이터베이스를 생성해야 합니다. 브라우저에서 Upstash Console을 열고 "Create database" 버튼을 클릭하세요.
생성 과정은 몇 초밖에 걸리지 않으며, 완료되면 데이터베이스 URL을 바로 확인할 수 있습니다. "Node" 탭을 선택한 뒤 그림 5와 같이 코드 예제에서 URL을 복사하세요.

REST Cache 구성하기
REST 캐시를 구성하려면 config/plugins.js 파일을 생성하고 다음 내용을 입력합니다.
config/plugins.js
module.exports = {
redis: {
config: {
connections: {
default: { connection: "REDIS_URL" },
},
},
},
"rest-cache": {
config: {
provider: { name: "redis" },
strategy: {
contentTypes: [{ contentType: "api::article.article", hitpass: false }],
//debug: true,
},
},
},
};
redis 필드에서는 Upstash Redis 데이터베이스 연결 정보를 설정합니다. 앞서 복사한 URL에는 Strapi에 필요한 모든 자격 증명이 포함되어 있어 별도 설정이 필요 없습니다.
rest-cache 필드에서는 캐시가 사용할 프로바이더와 캐싱 대상 콘텐츠 타입을 지정합니다. 여기서는 Article 콘텐츠 타입 하나만 대상으로 했습니다. hitpass: false 설정은 인증 여부와 관계없이 콘텐츠가 항상 캐시되도록 보장합니다.
debug: true의 주석을 해제하면 디버그 출력이 표시되어 캐시가 정상 동작하는지 쉽게 확인할 수 있습니다.
참고로 Strapi는 기본적으로 SQLite를 사용하며, 이는 개발 머신에서 인프로세스(in-process)로 동작하기 때문에 멀리 떨어진 곳에 배포된 Upstash Redis보다 빠를 수 있습니다. 실제 데이터베이스 서버를 운영하는 프로덕션 환경에서는 상황이 완전히 달라지므로 참고만 해두세요.
캐시 테스트하기
모든 설정을 마쳤다면 개발 서버를 재시작합니다.
yarn run develop
서버가 정상적으로 실행되면 다음 URL로 다시 접속해 보세요.
https://localhost:1337/api/articles
첫 번째 요청은 데이터베이스가 처리하고, 이후의 요청부터는 Upstash Redis가 담당합니다.
결론
Upstash Redis를 활용하면 Strapi 배포 환경의 응답 속도를 단 몇 분 만에 개선할 수 있습니다. Upstash Console이 제공하는 URL을 설정 파일에 붙여넣기만 하면 끝입니다.
첫 Upstash Redis 데이터베이스는 무료로 제공되며 신용카드 등록도 필요하지 않습니다. 지금 바로 직접 경험해 보세요!