← 전체 글로 돌아가기

DB

SQLite에서 Postgres로 옮기기 전에 먼저 본 차이

작은 프로젝트 DB를 옮기기 전에 문법보다 운영 방식 차이를 먼저 확인했던 비교 기록이다.

왜 바로 마이그레이션하지 않았나

작은 서비스를 만들 때 SQLite로 시작하면 편하다. 파일 하나로 끝나고 로컬 개발도 빠르다. 그런데 배포 서버에서 쓰기 요청이 늘어나자 백업, 동시성, 접속 관리가 신경 쓰이기 시작했다.

처음에는 "Postgres로 바꾸면 더 안정적이겠지"라고 생각했지만, 바로 옮기기 전에 차이를 적어 보니 코드 수정 외에도 볼 게 많았다.

비교해 본 기준

기준SQLitePostgres
실행 방식앱 근처의 파일별도 서버 프로세스
백업파일 복사 중심dump 또는 관리형 백업
동시 쓰기작을 때는 단순여러 연결 처리에 유리
배포파일 경로가 중요연결 문자열과 권한이 중요

여기서 내가 가장 헷갈린 부분은 성능보다 운영 방식이었다. SQLite는 파일 위치와 권한이 중요했고, Postgres는 네트워크 접속과 계정 권한이 중요했다.

옮기기 전에 찍어 본 정보

현재 DB 크기와 테이블 목록부터 확인했다.

sqlite3 app.db '.tables'
sqlite3 app.db 'select count(*) from posts;'
du -h app.db

Postgres 쪽은 접속 문자열을 앱에 넣기 전에 터미널에서 먼저 연결했다.

psql "$DATABASE_URL" -c '\dt'
psql "$DATABASE_URL" -c 'select now();'

이 두 단계만 해도 "코드가 문제인지, DB 접속이 문제인지"를 꽤 빨리 나눌 수 있었다.

코드에서 조심한 부분

SQL 문법은 대부분 비슷해 보여도 타입과 기본값에서 차이가 났다. 특히 날짜 저장 방식과 불리언 값, 자동 증가 ID를 확인했다.

  • 날짜를 문자열로 저장할지 timestamp로 저장할지 정한다.
  • 개발 DB와 운영 DB의 마이그레이션 순서를 맞춘다.
  • 연결 풀을 너무 크게 잡지 않는다.
  • 실패하면 되돌릴 수 있게 SQLite 원본을 보관한다.

내 결론

사용자가 적고 서버도 하나라면 SQLite가 나쁜 선택은 아니었다. 다만 운영 중에 백업과 동시 접속을 직접 챙기기 버거워지는 순간이 오면 Postgres가 편해진다. 나는 "더 멋진 DB"가 아니라 "복구와 운영이 덜 불안한 구조"를 기준으로 옮길지 결정하는 게 맞다고 느꼈다.