Computer >> 컴퓨터 >  >> 프로그램 작성 >> Redis

Strapi용 서버리스 Redis 캐싱

프로젝트를 적시에 제공한다는 것은 일반적으로 가능한 한 많은 기존 기술을 활용해야 함을 의미합니다. 사용자 지정 구현으로 이어지는 모든 결정은 자체 솔루션도 유지 관리해야 한다는 점을 고려해야 합니다. 이것이 Strapi와 같은 오픈 소스 도구가 다음 프로젝트를 위한 REST API를 구축하는 방법인 이유입니다.

Strapi는 최첨단 헤드리스 CMS입니다. 이를 통해 그래픽 인터페이스로 스키마를 정의할 수 있으므로 비기술자도 데이터를 모델링할 수 있습니다. 개발 팀은 백엔드 구현에 대한 걱정 없이 웹 및 모바일 앱을 구축하고 새로운 기능을 제공하는 데 집중할 수 있습니다. 결국, 대규모 오픈 소스 커뮤니티가 Strapi를 유지 관리합니다.

백엔드 속도 향상

이제, Strapi는 SQLite를 사용할 때 응답을 제공하는 데 비교적 빠르지만 데이터와 사용자 기반이 늘어남에 따라 시작하기에 가장 좋은 솔루션이 아닐 수 있습니다. 시장에 출시한 후에는 전 세계에 수천 명의 사용자가 분산될 수 있습니다.

따라서 모든 로드를 처리하기 위해 Stripi를 확장하고 데이터베이스 배포를 확장해야 합니다. 일종의 캐시를 연결할 수 있다면 좋지 않을까요?

REST 캐시 입력

Strapi REST Cache는 Strapi 플러그인 모음입니다. LRU 캐싱을 Strapi 앱에 추가하여 실제 데이터베이스 요청을 줄이는 데 도움이 됩니다.

메모리, Couchbase 및 Redis가 지원되며 사용자 지정 공급자를 작성할 수도 있습니다. 여기서 흥미로운 부분은 몇 분 안에 Upstash Redis에 연결할 수 있는 Redis 캐시 공급자입니다!

Redis를 사용하는 대부분의 시나리오에서 Upstash Redis를 사용할 수 있습니다. 차이점은 몇 번의 클릭으로 Upstash Redis를 설정할 수 있다는 것입니다. 또한 글로벌 복제와 함께 제공되므로 Stripi 인스턴스는 가장 가까운 복제본으로 라우팅되며, 이는 빠른 캐시에 중요합니다. 그리고 서버리스이므로 사용한 만큼만 비용을 지불하면 됩니다.

이제 Upstash Redis를 사용하여 Strapi를 시작하고 실행할 수 있는 방법을 살펴보겠습니다.

전제조건

이 튜토리얼에서는 Upstash 계정과 Node.js 설치가 필요합니다. 또한 Strapi에서 선호하는 패키지 관리자인 Yarn이 필요합니다.

Strapi 프로젝트 만들기

이미 기존 Strapi 프로젝트가 있는 경우 "REST 캐시 추가" 섹션으로 직접 이동할 수 있습니다. 다음 단계는 작업할 데이터를 설정하기 위한 것입니다.

첫 번째 단계는 Strapi로 새 백엔드를 만드는 것입니다. 다음 명령으로 이 작업을 수행할 수 있습니다.

$ npx create-strapi-app@latest strapi-upstash-redis-cache

명령이 완료되면 Strapi는 브라우저를 열고 데이터 모델과 첫 번째 콘텐츠를 생성하기 위해 관리자 로그인 세부 정보를 요청합니다.

콘텐츠 유형 빌더로 데이터 모델링

로그인한 후 Strapi Content-Type Builder를 사용하여 첫 번째 데이터 수집을 모델링할 수 있습니다. 그림 1은 Strapi 관리 콘솔에서 Content-Type Builder를 찾을 수 있는 위치를 보여줍니다.

Strapi용 서버리스 Redis 캐싱

"새 컬렉션 유형 만들기" 링크를 클릭하고 새 유형을 만듭니다. 이름을 "Article"로 지정하고 두 개의 간단한 텍스트 필드를 추가합니다. 하나의 필드는 "제목"이라는 짧은 텍스트를 위한 것이고 다른 하나는 "콘텐츠"라는 긴 텍스트를 위한 것입니다.

그림 2는 "저장" 버튼을 클릭하기 전의 유형을 보여줍니다.

Strapi용 서버리스 Redis 캐싱

그런 다음 해당 콘텐츠 유형의 실제 인스턴스가 필요합니다.

콘텐츠 관리자로 콘텐츠 만들기

그림 1에서 콘텐츠 관리자의 위치를 ​​볼 수 있습니다. 콘텐츠 관리자로 이동하여 오른쪽 상단의 "새 항목 만들기" 버튼을 클릭합니다.

그림 3에서 새로운 콘텐츠 입력 UI를 볼 수 있습니다. "저장" 및 "게시" 버튼을 클릭하는 것을 잊지 마십시오. 그렇지 않으면 공개 API를 통해 액세스할 수 없는 비공개 초안을 갖게 됩니다.

Strapi용 서버리스 Redis 캐싱

콘텐츠 유형에 대한 권한 설정

기사 유형과 실제 기사가 있지만 공개적으로 액세스할 수 없습니다. 이를 변경하려면 public 역할을 업데이트해야 합니다. 그림 4는 탐색에서 찾을 수 있는 위치를 보여줍니다.

Strapi용 서버리스 Redis 캐싱

공개 역할을 클릭한 다음 "기사" 권한을 클릭합니다. 여기에서 "find" 및 "findOne"을 선택하고 "저장"을 클릭해야 합니다. 이 API를 여는 사람은 누구나 모든 기사를 나열하고 하나의 기사를 로드할 수 있습니다.

브라우저에서 기사 리소스를 열면 새 기사가 표시되어야 합니다. 기본 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 캐시 추가

마지막으로 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 콘솔을 열고 "데이터베이스 생성" 버튼을 클릭하십시오.

생성 프로세스가 완료되면 데이터베이스 URL을 가져올 수 있습니다. 이 작업에는 몇 초밖에 걸리지 않습니다. "Node" 탭을 선택하고 그림 5와 같이 코드 예제에서 URL을 복사합니다.

Strapi용 서버리스 Redis 캐싱

REST 캐시 구성

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 필드에서 어떤 공급자를 사용해야 하고 어떤 콘텐츠 유형을 캐시해야 하는지 캐시에 알려줍니다. 우리의 경우 기사 콘텐츠 유형일 뿐입니다. hitpass: false 일부 인증이 발생한 경우에도 콘텐츠가 항상 캐시되도록 합니다.

debug: true 주석을 제거하는 경우 , 일부 디버그 출력이 표시됩니다. 이 출력을 통해 캐시가 작동하는지 더 쉽게 확인할 수 있습니다.

Strapi는 개발 컴퓨터에서 in-process로 실행되는 SQLite를 기본으로 사용하므로 이 시스템에서 수 킬로미터 떨어진 곳에 배치된 Upstash Redis보다 빠릅니다. 실제 데이터베이스 서버가 있는 프로덕션 환경에서는 상황이 상당히 다르게 보일 것입니다.

캐시 테스트

모든 것을 올바르게 구성했으면 개발 서버를 다시 시작할 수 있습니다.

yarn run develop

서버가 가동되고 실행되면 다음 URL을 사용하여 다시 액세스할 수 있습니다.

https://localhost:1337/api/articles

우리 데이터베이스는 첫 번째 요청을 처리하고 Upstash Redis는 다음을 수행합니다.

결론

Upstash Redis를 사용하면 Stripi 배포 속도를 높이는 데 몇 분 밖에 걸리지 않습니다. Upstash 콘솔은 구성에 간단히 붙여넣을 수 있는 URL을 제공합니다. 그게 전부입니다.

첫 번째 Upstash Redis 데이터베이스도 무료이므로 확인하십시오. 신용 카드가 필요하지 않습니다!