728x90
320x100
1. 마이그레이션이란?
- DB 스키마(테이블, 컬럼, 인덱스 등) 변경 사항을 버전 관리하면서 적용하는 과정
- create table, alter table 같은 쿼리를 직접 날리는 대신, 코드/도구로 관리
2. 왜 필요한가?
- 개발/테스트/운영 환경을 똑같이 맞추기 위함
- 팀 단위 협업 시 "누가 alter 했더라?" 문제 방지
- 배포 시 Render 서버가 자동으로 동일한 DB 스키마로 맞춰짐
3. 도구 선택
🔹 Spring Boot에서 주로 쓰는 툴
- Flyway (가장 많이 씀)
- Liquibase
👉 보통 Flyway를 간단히 붙이면 충분함.
4. Flyway 설정 방법
의존성 추가 (Gradle)
dependencies {
implementation 'org.flywaydb:flyway-core'
}
application.yml
spring:
flyway:
enabled: true
baseline-on-migrate: true
locations: classpath:db/migration
마이그레이션 파일 생성
src/main/resources/db/migration/V1_table.sql (예)
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT now()
);
Flyway가 자동으로 순서대로 실행 → DB에 반영
5. Render/Supabase에서 적용
- 애플리케이션이 실행될 때 Flyway가 DB 연결 후 db/migration 폴더에 있는 스크립트를 확인하고,
아직 실행 안 된 파일만 실행 → 자동 반영
6. 마이그레이션 절차 (운영 기준)
- 마이그레이션 파일 작성 (V3_table.sql)
- 로컬 DB에 적용 & 테스트
- Git push → Render 자동 배포
- Render 서버 실행 시 Supabase DB에 자동 반영
- 실패 시 Flyway 로그 확인 (중복 실행 방지됨)
7. 장점
- DB 변경 사항을 깃으로 관리 가능
- 과거 버전 추적 가능
- 운영 배포 시 사람 손으로 DDL 직접 안 쳐도 됨

728x90
320x100
'💻 뚝딱뚝딱 > 방통대CBT (knou-cbt)' 카테고리의 다른 글
| [개발일지#015] 이미지 첨부 스토리지 연결하기 (0) | 2025.09.12 |
|---|---|
| [개발일지#014] Render + Docker 배포 하기 (가입부터 배포까지) (0) | 2025.09.12 |
| [개발일지#013] Supabase PostgreSQL 데이터베이스 연결하기 (가입부터 생성, 연결까지) (0) | 2025.09.12 |
| [개발일지#012] 운영/배포를 위한 인프라 설계 (0) | 2025.09.12 |
| [개발일지#011] 운영/배포에 대비한 Spring Boot 프로젝트 준비 (1) (0) | 2025.09.09 |