메인 콘텐츠로 건너뛰기
모든 Replit App은 두 개의 데이터베이스와 함께 작동합니다. 개발 데이터베이스는 여러분과 Agent가 빌드하는 동안 실험하는 공간입니다. 프로덕션 데이터베이스는 게시된 앱을 구동하는 실제 데이터를 저장하며, 계속 빌드하는 동안에도 실제 데이터를 안전하게 보호합니다.
프로덕션 데이터베이스 관리 인터페이스

두 데이터베이스 비교

Agent는 프로덕션 데이터베이스를 수정할 수 없습니다. 이는 프로덕션 데이터베이스를 안전하게 유지하기 위한 제한입니다.Agent는 개발 데이터베이스를 수정할 수 있습니다. 게시 시점에, Agent가 개발 데이터베이스의 구조(열/테이블 추가 및 삭제)에 적용한 모든 변경 사항은 프로덕션 데이터베이스에도 적용됩니다.프로덕션 데이터를 수동으로 편집할 수 있습니다. Database 도구를 열고, 프로덕션 데이터베이스를 선택한 다음 My Data를 열고 Enable Editing을 켜세요.
게시할 때는 drizzle-kit을 사용해 테이블, 열, 인덱스, 제약 조건, 뷰, 행 수준 보안 정책의 변경 사항을 적용합니다. 도메인, 함수, 프로시저, 트리거, 권한(grant)은 복사하지 않으며, 역할(role)은 제한적으로만 지원합니다. 지원되지 않는 데이터베이스 객체를 참고하세요.

게시할 때 프로덕션 데이터베이스 만들기

게시된 앱은 빌드할 때 사용하는 개발 데이터베이스와는 별도로, 자체 프로덕션 데이터베이스를 갖게 됩니다.
  • 현재 인프라(Helium): 개발 데이터베이스에 데이터가 있는 경우, 게시할 때 Replit이 프로덕션 데이터베이스를 자동으로 만들어줍니다.
  • 레거시 Neon 개발 데이터베이스: 게시 설정에서 프로덕션 데이터베이스를 직접 만듭니다. 게시하는 동안 Database settings를 열고 Create production database를 켜세요. 개발 데이터를 함께 복사하려면 Set up your production database with your current development data를 추가로 켜세요.
Advanced settings가 확장되고, 프로덕션 데이터베이스 자동 생성이 선택되었으며, Set up your production database with your current development data가 체크된 First Publish 창

첫 게시: Publishing → Advanced settings → Database settings. Deployment secrets 섹션은 숨김.

라이브 앱에서 안전하게 사용할 수 있는 데이터인 경우에만 개발 데이터를 프로덕션에 복사하세요. 개발 데이터에는 테스트 계정, 샘플 레코드, 또는 미완성 콘텐츠가 포함될 수 있습니다.
게시가 끝나면 게시된 앱은 프로덕션 데이터베이스를 사용하고, Project Editor는 계속 개발 데이터베이스를 사용하므로 이후의 개발 변경 사항이 실제 데이터를 직접 수정하지 않습니다.

앱이 사용하는 데이터베이스 확인하기

거의 모든 경우, 게시된 앱은 Replit이 관리하는 프로덕션 데이터베이스, 즉 Database 도구에 Production Database로 표시되는 데이터베이스를 사용합니다. 두 데이터베이스 모두 DATABASE_URL이라는 변수를 사용하지만, 환경마다 값이 다릅니다.
  • Project Editor: 워크스페이스, Shell, Agent 세션에서 DATABASE_URL은 개발 데이터베이스를 가리킵니다. Replit이 자동으로 연결하므로 현재 인프라에서는 Secrets에 표시되지 않습니다.
  • 게시된 앱: 게시하면 앱은 프로덕션 데이터베이스를 가리키는 별도의 DATABASE_URL을 갖게 됩니다.
Shell에서 REPLIT_ENVIRONMENT=production이 보인다고 해서 워크스페이스가 프로덕션 데이터베이스를 사용한다는 뜻은 아닙니다. 이 변수는 앱이 아니라 Replit 플랫폼을 설명합니다. 게시된 앱은 REPLIT_DEPLOYMENT=1로 실행됩니다.

Agent에게 확인 요청하기

Agent는 코드와 Secrets를 확인할 수 있으며, 대부분의 앱에서는 프로덕션 데이터를 변경하지 않고 살펴볼 수 있습니다. Agent는 읽기 전용 복제본, 즉 최신 상태로 유지되는 프로덕션 데이터베이스의 읽기 전용 복사본을 통해 프로덕션을 읽습니다. 아주 최근의 변경 사항은 여기에 나타나기까지 잠시 걸릴 수 있습니다. 읽기 전용 복제본은 게시 전에 변경 사항을 테스트하기 위한 별도의 임시 복사본인 배포 프리뷰와는 다릅니다. 다음 프롬프트를 Agent에 붙여넣으세요.
Prompt
세 가지 확인이 모두 통과하면 게시된 앱은 Replit이 관리하는 프로덕션 데이터베이스를 사용하는 것입니다. 즉, 코드가 DATABASE_URL을 읽고, Secrets에 다른 데이터베이스 연결이 없으며, 가장 최근 행이 라이브 앱과 일치한다는 뜻입니다.

Database 도구와 Publishing에서 확인하기

1

프로덕션 데이터베이스 열기

Database 도구에서 All Databases 옆의 데이터베이스 메뉴를 열고 Production을 선택하세요.
데이터베이스 메뉴가 열려 있고 Production이 강조 표시된 Database 도구
2

라이브 앱의 레코드 찾기

My Data를 열고 게시된 앱에서 최근에 만든 항목(예: 새 계정이나 주문)을 찾아보세요. 보인다면 게시된 앱이 이 데이터베이스에 기록하고 있는 것입니다. 프로덕션은 읽기 전용 모드로 열리므로 탐색해도 안전합니다.
가장 최근 행이 강조 표시된 customers 테이블을 보여주는 Production Database의 My Data 탭
3

연결 설정 비교하기

프로덕션 데이터베이스의 Settings 탭을 열고 Connection string을 찾으세요. 그런 다음 Publishing을 열고 Adjust settings를 선택한 뒤 Production app secrets 아래에서 DATABASE_URL을 찾으세요. 각 값을 표시하여 두 값이 같은 호스트를 가리키는지 확인하세요. 대부분의 앱에서는 엔드포인트 ID, 즉 ep-로 시작하는 부분이 같다는 뜻입니다. 풀링된 주소는 ID 뒤에 -pooler가 붙으므로 전체 문자열이 정확히 일치하지 않아도 됩니다.
Connection string이 강조 표시되고 엔드포인트 ID가 나타나는 위치를 보여주는 예시가 있는 Production Database의 Settings 탭
Production app secrets와 DATABASE_URL 행이 강조 표시된 Publishing 설정
두 값 모두 데이터베이스 비밀번호를 포함합니다. 직접 비교하고, 채팅, 지원 티켓, 스크린샷에 붙여넣지 마세요.
4

다른 데이터베이스가 있는지 Secrets 확인하기

Secrets를 여세요. Replit의 기본 제공 연결은 여기에 표시되지 않습니다. 직접 추가한 DATABASE_URL이나 SUPABASE_DATABASE_URL 같은 다른 데이터베이스 연결이 보인다면, 앱이 대신 그 데이터베이스를 사용하고 있을 수 있습니다. 코드가 어느 것을 읽는지 Agent에게 물어보세요. NEON_DATABASE_URL 시크릿은 데이터베이스 인프라 업그레이드 중에 저장된 이전 개발 데이터베이스 연결입니다. 코드가 이를 읽는 경우에만 앱이 사용합니다.
두 개의 데이터베이스 연결 시크릿이 강조 표시된 Secrets 창

결과의 의미

이 확인은 앱이 어떻게 설정되어 있는지를 보여줍니다. 라이브 앱에 예상하지 못한 데이터가 계속 표시된다면, 코드가 해당 데이터를 어디에서 읽고 쓰는지 Agent에게 찾아달라고 요청하세요.

연결 풀링

기본적으로 프로덕션 데이터베이스는 연결 풀링이 활성화되어 있지 않습니다. 앱은 DATABASE_URL 연결 문자열을 사용해 데이터베이스에 직접 연결하므로, 대부분의 프레임워크가 자체적으로 클라이언트 측 연결 풀을 관리해야 합니다.
각 Neon 프로젝트에는 다이렉트 연결 문자열과 풀링된 연결 문자열이 모두 포함되어 있습니다. 다이렉트 연결 문자열은 postgresql://neondb_owner:<password>@<host>.<region>.neon.tech/<db>?sslmode=require와 같은 형태입니다.풀링된 연결을 사용하려면 호스트에 -pooler를 추가하세요: postgresql://neondb_owner:<password>@<host>-pooler.<region>.neon.tech/<db>?sslmode=require.
프로덕션 연결 문자열이 노출된 경우, 프로덕션 데이터베이스 자격 증명을 재생성하세요.

프로덕션 데이터베이스를 안전하게 변경하기

데이터베이스 변경 사항이 포함된 업데이트를 게시하면, Replit이 Publish 창에서 마이그레이션 과정을 안내합니다. 데이터를 제거할 수 있는 변경 사항을 표시하고, 마이그레이션된 프로덕션 복사본으로 앱을 테스트할 수 있게 하며, 승인한 후에만 변경 사항을 적용합니다. 전체 흐름은 Publish가 프로덕션 데이터베이스를 업데이트하는 방법을 참고하세요.
게시 중에 게시된 앱에서 짧은 다운타임이 발생할 수 있습니다. 데이터베이스 변경 사항을 적용하는 동안 충돌을 방지하고 데이터를 보호하기 위해 앱을 일시적으로 중지해야 할 때가 있습니다.
다음과 같은 유형의 변경 사항은 일반적으로 주의가 필요합니다.
  • 여전히 데이터가 들어 있는 열 또는 테이블 제거
  • 기존 값이 변환되지 않으면 실패할 수 있는 열 데이터 타입 변경
  • 이미 행이 있는 테이블에 기본값 없이 필수 필드 추가
  • 테이블 또는 열 이름 변경: Publish가 물어볼 때 이름 변경을 확인하지 않으면 데이터가 삭제됩니다
  • 기존 행이 위반할 수 있는 테이블에 고유 제약 조건 추가

게시 프리뷰로 변경 사항 테스트하기

게시 프리뷰는 실제 사용자에게 영향을 주기 전에 데이터베이스 변경 사항과 애플리케이션 업데이트를 테스트할 수 있는, 프로덕션 환경의 임시적이고 격리된 복사본입니다. 다음과 같은 용도로 사용하세요.
  • 데이터베이스 변경 사항이 적용된 상태에서 주요 사용자 흐름 전반에 걸쳐 앱이 계속 제대로 작동하는지 확인
  • 기존 데이터가 올바르게 마이그레이션되었고 새 필드에 예상 값이 포함되어 있는지 확인
  • 쿼리 응답 시간에서 성능 저하가 없는지 확인
프리뷰를 만들려면 마이그레이션이 검증된 후 Publish 창에서 Create preview deploy를 선택하세요. 마이그레이션된 복사본에서 앱 미리 보기를 참고하세요.

청구 및 리소스 사용량

프로덕션 데이터베이스 요금에는 컴퓨팅 사용량과 스토리지가 포함됩니다. 데이터베이스는 5분간 활동이 없으면 유휴 상태로 전환되어, 다음 쿼리가 올 때까지 컴퓨팅 청구가 일시 중지됩니다. 컴퓨팅이 유휴 상태인 동안에도 저장된 데이터에는 스토리지 요금이 계속 부과됩니다. Database 도구의 랜딩 화면에는 Billing Period와 Hours of Compute Used가 표시됩니다. 데이터베이스별 저장 공간 사용량을 보려면 해당 데이터베이스의 Settings 탭을 여세요. 모든 Replit App에서의 사용량을 확인하려면 Settings의 Account usage로 이동하여 PostgreSQL Storage와 PostgreSQL Compute 행을 확장하세요. Replit이 데이터베이스 사용량에 대해 청구하는 방법을 알아보려면 배포 및 데이터베이스 요금을 참고하세요.

프로덕션 데이터베이스 제거하기

프로덕션 데이터베이스를 제거하기 전에 중요한 데이터를 백업하세요. 제거하면 데이터베이스에 대한 액세스가 비활성화되고 7일간의 소프트 삭제 기간이 시작됩니다.실수로 제거한 데이터베이스를 복구하려면 7일 이내에 Replit 지원팀에 문의하세요. 프로젝트 URL과 제거한 시점을 포함하되 자격 증명은 포함하지 마세요. 7일이 지나면 데이터베이스는 영구적으로 삭제됩니다.
제거된 데이터베이스를 복구하는 것은 삭제된 행이나 테이블을 복원하는 것과 다릅니다. 기존 데이터베이스의 데이터 변경에 대해서는 데이터 복구를 참고하세요.
Database 도구에서:
  1. 데이터베이스를 선택한 다음 Settings 탭을 여세요
  2. Remove database를 선택하고 Yes, Remove database를 선택하여 확인하세요

레거시 개발 데이터베이스

2025년 12월 4일 이전에는 개발 데이터베이스가 Neon에서 호스팅되었습니다. 모든 새로운 개발 데이터베이스는 Replit 자체 인프라(Helium)에서 호스팅됩니다. 앱이 어느 쪽을 사용하는지는 Settings 탭에서 확인할 수 있습니다. DATABASE_URL에 neon.tech가 포함되어 있으면 레거시 Neon이고, helium이 포함되어 있으면 현재 인프라입니다.

데이터베이스 인프라 업그레이드

Replit은 개발 데이터베이스를 Neon에서 Replit 자체의 관리형 PostgreSQL 인프라인 Helium으로 업그레이드하고 있습니다. 이 업그레이드는 자동으로 진행되며, Project Editor에서 앱을 열 때 앱마다 한 번 실행되고, 모든 데이터를 보존합니다. 다음이 변경됩니다.
  • 더 낮은 지연 시간과 더 많은 저장 공간: 데이터베이스가 앱과 함께 Replit 인프라에서 실행되며, 저장 용량 한도가 10GB에서 20GB로, Pro 및 Enterprise 요금제에서는 50GB로 늘어납니다.
  • 동일한 데이터베이스 엔진: Helium은 Neon과 동일한 버전인 PostgreSQL 16을 사용합니다. 쿼리, 스키마, 데이터가 동일하게 작동합니다.
  • 연결이 자동으로 업데이트됨: DATABASE_URL이 Helium을 가리키도록 업데이트됩니다. 이전 Neon 연결 문자열은 참고용으로 Secrets에 NEON_DATABASE_URL로 저장됩니다.
  • 개별 PG 변수 제거: PGHOST, PGPORT, PGUSER, PGPASSWORD가 제거됩니다. 대신 DATABASE_URL을 사용하세요.
업그레이드 중에는 “Upgrading your database” 진행 화면이 표시됩니다. 대규모 데이터베이스의 경우 몇 분에서 몇 시간까지 걸릴 수 있으며, 탭을 닫고 나중에 다시 돌아와도 됩니다. 업그레이드 중 문제가 발생하면 자동으로 건너뛰고 다음에 앱을 열 때 다시 시도됩니다. 완료되면 확인 대화상자가 표시됩니다. 대부분의 빌더에게는 이후 별도의 조치가 필요하지 않습니다. 다음 중 해당하는 사항이 있다면 검토하세요.
  • 하드코딩된 Neon 연결 문자열: neon.tech 연결 문자열을 참조하는 코드를 대신 DATABASE_URL 환경 변수를 사용하도록 업데이트하세요.
  • 커스텀 PostgreSQL 역할: 역할과 권한은 자동으로 마이그레이션되지만 비밀번호는 복사할 수 없습니다. 새 데이터베이스에서 커스텀 역할의 비밀번호를 재설정하세요.

업그레이드 후 SSL 연결 오류

The server does not support SSL connections 같은 오류가 표시된다면, 연결 코드가 SSL 핸드셰이크를 강제하고 있는 것입니다. Neon은 SSL이 필요했지만, Helium은 앱과 함께 로컬에서 실행되며 SSL을 사용하지 않습니다. SSL 설정을 환경에 따라 조건부로 설정하세요.
Drizzle, Prisma, Sequelize 같은 ORM을 사용한다면, SSL 설정을 조건부로 구성하는 방법을 해당 문서에서 확인하세요. 같은 원칙이 적용됩니다. 개발 데이터베이스에서는 SSL을 비활성화하고 프로덕션에서는 활성화하세요.

데이터베이스를 공유한 포크된 앱

레거시 Neon 시스템에서는 앱을 포크하면 원본 앱의 DATABASE_URL이 복사되어, 두 앱과 그 게시된 버전이 동일한 데이터베이스에 연결되었습니다. 공유된 레거시 데이터베이스는 2026년 6월 8일에 종료되었습니다. 게시된 앱이 작동을 멈추거나 데이터 접근 권한을 잃었다면 공유 데이터베이스를 사용하는 게시된 앱 수정하기 또는 지원팀 문의를 참고하세요.

다음 단계