콘텐츠로 이동

Render에 배포하기

출처 URL: https://docs.prisma.io/docs/orm/prisma-client/deployment/traditional/deploy-to-render

Prisma ORM을 사용하는 Node.js 서버를 Render에 배포하는 방법을 알아보세요.

이 가이드는 Prisma ORM과 PostgreSQL을 사용하는 Node.js 서버를 Render에 배포하는 방법을 설명합니다.

이 페이지에서 답하는 질문

  • Render에 Prisma 앱을 배포하는 방법은?
  • 시작 전에 마이그레이션을 실행하는 방법은?
  • 권장되는 Render 설정은?

Prisma Render deployment example에는 REST 엔드포인트와 간단한 프론트엔드를 포함한 Express.js 애플리케이션이 들어 있습니다. 이 앱은 Prisma Client를 사용해 데이터베이스에서 레코드를 조회, 생성, 삭제합니다.

Render는 개발자가 풀스택 애플리케이션을 쉽게 배포하고 확장할 수 있도록 해주는 클라우드 애플리케이션 플랫폼입니다. 이 예제를 위해 알아두면 좋은 점은 다음과 같습니다.

  • Render는 장시간 실행되는 “serverful” 풀스택 애플리케이션 배포를 지원합니다. CPU 및/또는 메모리 사용량에 따라 Render 서비스를 autoscale하도록 구성할 수 있습니다. 이는 선택 가능한 여러 deployment paradigms 중 하나입니다.
  • Render는 Node.js와 Bun을 포함한 common runtimes를 기본 지원합니다. 이 가이드에서는 Node.js 런타임을 사용합니다.
  • Render는 커밋 시 자동 배포를 위해 integrates with Git repos합니다. GitHub, GitLab, Bitbucket에서 Render로 배포할 수 있습니다. 이 가이드에서는 Git 저장소에서 배포합니다.

example code를 로컬 머신에 다운로드하세요.

curl https://codeload.github.com/prisma/prisma-examples/tar.gz/latest | tar -xz --strip=2 prisma-examples-latest/deployment-platforms/render
cd render

앱을 배포하기 전에 예제 코드를 살펴보겠습니다.

  • 웹 애플리케이션

Express 앱의 로직은 두 파일에 있습니다.

  • src/index.js: API입니다. 엔드포인트는 Prisma Client를 사용해 데이터베이스에서 데이터를 조회, 생성, 삭제합니다.
  • public/index.html: 웹 프론트엔드입니다. 프론트엔드는 일부 API 엔드포인트를 호출합니다.
  • Prisma 스키마와 마이그레이션

이 앱의 Prisma 구성 요소는 두 파일에 있습니다.

  • prisma/schema.prisma: 이 앱의 데이터 모델입니다. 이 예제는 UserPost 두 모델을 정의합니다. 이 파일 형식은 Prisma schema를 따릅니다.
  • prisma/migrations/<migration name>/migration.sql: PostgreSQL 데이터베이스에서 이 스키마를 구성하는 SQL 명령입니다. prisma migrate dev를 실행하면 이와 같은 마이그레이션 파일을 자동 생성할 수 있습니다.
  • Render Blueprint

render.yaml 파일은 Render blueprint입니다. Blueprint는 Render의 Infrastructure as Code 형식입니다. Blueprint를 사용하면 Render의 서비스를 프로그래밍 방식으로 생성하고 수정할 수 있습니다.

render.yaml은 Blueprint를 통해 Render에 생성될 서비스를 정의합니다. 이 render.yaml에서는 다음을 볼 수 있습니다.

  • Node 런타임을 사용하는 웹 서비스 : Express 앱입니다.
  • PostgreSQL 데이터베이스 : Express 앱이 사용하는 데이터베이스입니다.

이 파일 형식은 Blueprint specification을 따릅니다.

  • Render 배포가 Prisma Migrate와 동작하는 방식

일반적으로 웹 앱이 시작되기 전에 모든 데이터베이스 마이그레이션이 실행되도록 해야 합니다. 그렇지 않으면 앱이 예상한 테이블과 행이 없는 데이터베이스를 조회할 때 오류가 발생할 수 있습니다.

Render 배포의 Pre-Deploy Command 설정을 사용하면 앱 시작 전에 데이터베이스 마이그레이션 같은 명령을 실행할 수 있습니다.

Pre-Deploy Command에 대한 자세한 내용은 Render’s deploy guide를 참고하세요.

예제 코드의 render.yaml에는 웹 서비스의 build command, pre-deploy command, start command가 표시됩니다. 특히 npx prisma migrate deploy(pre-deploy command)는 npm run start(start command)보다 먼저 실행됩니다.

CommandValue
Build Commandnpm install --production=false
Pre-Deploy Commandnpx prisma migrate deploy
Start Commandnpm run start
  • 1. Git 저장소 초기화

    1. the example code를 로컬 머신에 다운로드합니다.
    2. GitHub, GitLab, BitBucket에 새 Git 저장소를 생성합니다.
    3. 예제 코드를 새 저장소에 업로드합니다.
  • 2. 수동 배포

    1. Render Dashboard에서 New > PostgreSQL을 클릭합니다. 데이터베이스 이름을 입력하고 플랜을 선택합니다. (이 데모에서는 Free 플랜으로도 충분합니다.)
    2. 데이터베이스 준비가 완료되면 해당 데이터베이스의 internal URL을 확인합니다.
    3. Render Dashboard에서 New > Web Service를 클릭하고 예제 코드가 있는 Git 저장소를 연결합니다.
    4. 서비스 생성 중 다음 값을 입력합니다.
SettingValue
LanguageNode
Build Commandnpm install --production=false
Pre-Deploy Command (참고: “Advanced” 탭에 있을 수 있음)npx prisma migrate deploy
Start Commandnpm run start
Environment VariablesDATABASE_URL을 데이터베이스의 internal URL로 설정

이제 끝입니다. 빌드가 완료되는 즉시 웹 서비스가 onrender.com URL에서 실행됩니다.

  • 3. (선택 사항) Infrastructure as Code로 배포

Render Blueprint를 사용해 예제를 배포할 수도 있습니다. Render의 [Blueprint setup guide]를 따라 진행하고, 예제의 render.yaml을 사용하세요.

Prisma ORM에는 시작 데이터를 데이터베이스에 넣기 위한 seeding the database 프레임워크가 포함되어 있습니다. 이 예제에서는 prisma/seed.js에서 테스트 사용자와 게시물을 정의합니다.

이 사용자를 데이터베이스에 추가하려면 다음 두 가지 방법 중 하나를 사용할 수 있습니다.

  1. 시드 스크립트를 Pre-Deploy Command에 추가하거나
  2. SSH 셸을 통해 서버에서 수동으로 명령을 실행
  • 방법 1: Pre-Deploy Command

Render 서비스를 수동으로 배포한 경우:

  1. Render dashboard에서 웹 서비스로 이동합니다.
  2. Settings를 선택합니다.
  3. Pre-Deploy Command를 다음으로 설정합니다: npx prisma migrate deploy; npx prisma db seed

Blueprint를 사용해 Render 서비스를 배포한 경우:

  1. render.yaml 파일에서 preDeployCommand를 다음으로 변경합니다: npx prisma migrate deploy; npx prisma db seed
  2. 변경 사항을 Git 저장소에 커밋합니다.
  • 방법 2: SSH

Render는 웹 서비스에 SSH 접속을 허용합니다.

  1. 서버에 연결하려면 Render’s SSH guide를 따르세요.
  2. 셸에서 다음을 실행합니다: npx prisma db seed