Contents
블로그

서비스를 배포했는데 저장한 데이터가 사라졌어요

Vercel에서 데이터가 사라지는 원인과 배포용 데이터베이스로 옮기는 방법

2026-08-23 · 읽는 시간 6분

배포서버리스데이터베이스

Vercel에 서비스를 배포하면 데이터가 사라지는 이유는, Vercel이 요청이 있을 때만 앱 실행 공간을 만들고 끝나면 없애기 때문입니다.

앱 메모리나 임시 폴더(/tmp)에 저장한 데이터는 사라집니다. 게시글이나 회원 정보 같은 중요한 데이터는 PostgreSQL 같은 배포용 데이터베이스에 저장해야 해요. 로컬 서비스에서는 UQA로 게시글과 회원 정보를 저장하고 조회할 수 있지만, Vercel 배포본은 배포용 데이터베이스에 연결해야 합니다.

1. Vercel에 배포하면 데이터가 사라지는 이유

로컬 개발 환경의 계속 실행되는 공간과 Vercel의 임시 실행 공간 비교
  • 로컬(내 컴퓨터)에서 프로그램을 만들 때는 데이터를 저장해도 잘 남아있어요.

    • 예를 들어, 게시글이나 회원 정보를 저장하면 프로그램이 꺼지기 전까지는 계속 볼 수 있습니다.

    • 이건 마치 책상 서랍에 중요한 서류를 보관하면 내가 방을 나갔다 와도 그대로 있는 것과 같아요.

  • 하지만 Vercel 같은 곳에 프로그램을 올리면 데이터가 사라질 수 있어요.

    • Vercel은 요청이 들어올 때만 프로그램을 잠깐 켰다가, 일이 끝나면 바로 꺼버리는 방식입니다. 이걸 서버리스(Serverless)라고 불러요.

    • 마치 손님이 올 때만 잠깐 문을 여는 임시 가게 같은 거예요. 손님이 가면 가게 문을 닫고 진열한 상품도 모두 치워버리는 거예요.

    • 그래서 처음엔 데이터가 보이다가 며칠 뒤에 다시 보면 사라져 있을 수 있습니다.

2. Vercel에서 데이터를 저장하는 세 가지 방법과 문제점

  • Vercel에서는 데이터를 저장할 수 있는 곳이 몇 군데 있지만, 모두 임시적이에요.

    • 앱 메모리: 프로그램이 실행되는 동안만 데이터를 기억하는 곳입니다.

      • 로컬에서는 프로그램이 켜져 있는 동안 계속 유지되지만

      • Vercel에서는 프로그램이 꺼지거나 새로 시작되면 메모리가 싹 지워져요.

      • 이건 마치 칠판에 글씨를 썼다가 수업이 끝나면 지우는 것과 같아요.

    • 프로젝트 폴더: 프로그램 파일들이 들어있는 곳입니다.

      • 로컬에서는 이 폴더 안에 파일을 만들거나 수정할 수 있지만

      • Vercel에 올라간 프로젝트 폴더는 읽기만 가능하고, 새로운 파일을 만들거나 수정할 수 없습니다.

      • 마치 도서관 책은 읽을 수 있지만, 그 책에 직접 글씨를 쓰거나 새 페이지를 끼워 넣을 수 없는 것과 같아요.

    • `/tmp` 임시 폴더: Vercel에서 유일하게 파일을 쓸 수 있는 곳이에요.

      • 하지만 여기에 저장된 데이터도 다음번에 요청이 올 때까지 남아있다는 보장이 없습니다.

      • Vercel이 프로그램을 끄거나 새 버전으로 업데이트하면 이 폴더의 데이터도 사라져요.

      • 이건 마치 쓰레기통에 버린 파일이 언제 치워질지 모르는 것과 비슷합니다.

3. 새로고침할 때마다 데이터가 보였다 안 보였다 하는 이유

새로고침 요청이 서로 다른 Vercel 실행 공간으로 연결되어 글이 보였다 안 보이는 과정
  • Vercel은 여러 사람이 동시에 프로그램을 사용할 때 여러 개의 임시 실행 공간을 운영할 수 있어요.

    • 각 임시 가게는 자기만의 칠판(메모리)과 쓰레기통(/tmp 폴더)을 가지고 있습니다.

    • 그래서 한 가게에서 게시글을 썼는데, 새로고침을 했더니 다른 가게로 연결돼서 글이 안 보일 수 있는 거예요.

    • 마치 내가 A라는 가게에서 주문했는데, 다음번에 B라는 가게에 갔더니 그 주문 기록이 없는 것과 같습니다.

4. 데이터를 안전하게 저장하는 방법: 배포용 데이터베이스

여러 Vercel 실행 공간이 하나의 배포용 데이터베이스에 연결된 구조
  • 이 문제를 해결하려면 Vercel의 임시 가게들과는 별도로, 데이터를 영원히 보관할 수 있는 중앙 창고(배포용 데이터베이스)를 사용해야 합니다.

    • PostgreSQL이나 MySQL 같은 데이터베이스가 이런 중앙 창고 역할을 해요.

    • 모든 임시 가게들이 이 하나의 중앙 창고를 바라보도록 설정하면, 어떤 가게가 손님을 받든 항상 같은 데이터를 보여줄 수 있습니다.

    • 이렇게 하면 Vercel이 임시 가게를 닫거나 새로 열어도 데이터가 사라지지 않고, 새로고침해도 항상 같은 정보를 볼 수 있게 돼요.

5. UQA 적용 전 저장 위치와 이전 범위 점검하기

  • 지금 만들고 있는 프로그램이 데이터를 어디에 저장하고 있는지 확인해야 합니다.

    • 혹시 앱 메모리, 프로젝트 폴더, /tmp 폴더 같은 임시 저장소를 쓰고 있지는 않은지 점검하는 거예요.

    • 마치 내 방의 문서가 책상 서랍에 있는지, 아니면 언제 버려질지 모르는 쓰레기통에 있는지 확인하는 것과 같습니다.

  • 임시 저장소에 있는 데이터를 중앙 창고(배포용 데이터베이스)로 옮겨야 합니다.

    • 기존에 데이터를 저장하고 읽던 방식을 중앙 창고에 맞게 바꿔야 해요.

    • 중앙 창고에 접속하려면 필요한 정보들(주소, 비밀번호 등)을 Vercel에 알려줘야 합니다.

    • 그리고 기존에 임시 저장소에 있던 데이터를 중앙 창고로 옮기는 작업도 필요해요.

    • 이건 마치 책상 서랍에 있던 중요한 문서를 안전한 금고로 옮기고, 금고 문을 여는 방법을 배우는 것과 같습니다.

Vercel에 배포한 서비스가 게시글과 회원 정보를 어디에 저장하는지 확인해줘. 메모리, 프로젝트 폴더, /tmp를 사용한다면 [선택한 배포용 데이터베이스]로 저장 코드를 교체하고, 필요한 환경 변수와 기존 데이터 이전 절차까지 정리해줘