PaaS에서 Kamal로 데이터베이스 마이그레이션하기

How to migrate your database from PaaS to Kamal

작성자
발행일
2025년 05월 10일

핵심 요약

  • 1 PaaS 환경에서 Kamal 기반의 자체 서버로 데이터베이스를 안전하게 마이그레이션하는 방법을 다룹니다.
  • 2 데이터베이스 덤프를 생성하고 S3 호환 객체 스토리지에 업로드한 후 Kamal을 통해 복원하는 절차를 상세히 설명합니다.
  • 3 마이그레이션 중 데이터 일관성 유지를 위해 PaaS 웹 컨테이너를 스케일 다운하는 것이 중요합니다.

도입

이 글은 PaaS(Platform as a Service)에서 Kamal을 활용한 자체 서버 환경으로 데이터베이스를 마이그레이션하는 과정을 상세히 설명합니다. 기존 Slog-app을 예시로 들어, 데이터베이스 마이그레이션이 애플리케이션 전환의 가장 중요하고 섬세한 부분임을 강조하며, 이전 게시물에서 다룬 Kamal을 이용한 데이터베이스 백업 및 업그레이드 기법을 바탕으로 진행됩니다. 성공적인 마이그레이션을 위한 필수 단계와 주의사항을 소개하여 사용자가 PaaS 종속성에서 벗어나 자체 호스팅 환경으로 전환할 수 있도록 돕는 것이 목표입니다.

데이터베이스 마이그레이션은 몇 가지 핵심 단계로 이루어집니다.

1. Kamal 기반 앱 배포 및 초기 설정

  • 새 VPS에 애플리케이션 배포: 먼저 Kamal을 사용하여 새로운 VPS에 애플리케이션을 배포합니다. 이 단계에서 애플리케이션은 임시 도메인으로 완전히 작동해야 하지만, 데이터베이스는 비어있는 상태로 유지됩니다.

  • 백업 저장소 준비: 데이터베이스 덤프를 저장할 S3 호환 객체 스토리지(예: Scaleway Object Storage)를 준비합니다. 이는 데이터베이스 서버와 다른 머신이어야 합니다.

2. PaaS 환경 준비 및 데이터 덤프

  • 웹 컨테이너 스케일 다운: 마이그레이션 중 새로운 쓰기 작업이 발생하지 않도록 PaaS의 웹 컨테이너를 0으로 스케일 다운합니다. 이는 PaaS에서 데이터베이스를 백업하고 자체 서버에 복원하는 과정 사이에 데이터 일관성을 보장합니다.

  • 데이터베이스 덤프 생성: 사용 중인 PaaS(예: Scalingo PostgreSQL)의 CLI 또는 UI를 통해 데이터베이스 덤프를 생성합니다. Scalingo의 경우 PostgreSQL 대시보드에서 수동 백업을 트리거하고 직접 다운로드할 수 있습니다.

3. 데이터 덤프 업로드 및 복원

  • S3 버킷에 덤프 업로드: s3_backup 액세서리 설정에 정의된 S3_PREFIX 값과 일치하는 이름으로 S3 버킷에 폴더를 생성하고, 생성된 덤프 파일을 해당 폴더에 업로드합니다. yaml accessories: s3_backup: image: eeshugerman/postgres-backup-s3:16 host: 192.168.0.1 env: clear: SCHEDULE: '@daily' BACKUP_KEEP_DAYS: 30 S3_REGION: your-s3-region S3_BUCKET: your-s3-bucket S3_PREFIX: backups S3_ENDPOINT: https://your-s3-endpoint POSTGRES_HOST: my_awesome_app-db POSTGRES_DATABASE: my_awesome_app_production POSTGRES_USER: my_awesome_app secret: - POSTGRES_PASSWORD - S3_ACCESS_KEY_ID - S3_SECRET_ACCESS_KEY

  • Kamal을 통한 데이터 복원: 다음 명령어를 사용하여 새 PostgreSQL 인스턴스에 백업을 복원합니다. bash $ kamal accessory exec s3_backup "sh restore.sh"

4. 마이그레이션 완료 및 DNS 업데이트

  • 애플리케이션 확인: 이 시점에서 애플리케이션은 최신 버전의 PostgreSQL과 모든 데이터가 성공적으로 복원된 상태로 실행됩니다.

  • DNS 설정 업데이트: 마지막으로 DNS 설정을 업데이트하여 새 서버를 가리키도록 변경합니다.

결론

이처럼 몇 가지 간단한 단계를 통해 PaaS 환경에서 Kamal 기반의 자체 호스팅 환경으로 데이터베이스를 성공적으로 마이그레이션할 수 있습니다. 이 과정은 데이터의 무결성을 최우선으로 고려하며, 특히 웹 컨테이너 스케일 다운을 통해 쓰기 작업을 중단하는 것이 핵심입니다. 마이그레이션이 완료되면 애플리케이션은 최신 PostgreSQL과 함께 자체 서버에서 안정적으로 운영되며, PaaS에 대한 의존성 없이 더 큰 유연성과 통제권을 확보하게 됩니다. 이 글은 Kamal을 활용한 효율적인 인프라 전환의 실질적인 가이드라인을 제공합니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!