AI + Career
✅ 마이그레이션(Migration)의 개념과 필요성을 설명하라
octo54
2025. 6. 11. 13:40
반응형
✅ 마이그레이션(Migration)의 개념과 필요성을 설명하라
데이터베이스는 소프트웨어의 중심입니다.
비즈니스 로직이 진화하면서 테이블 구조나 컬럼이 변경되는 경우가 많고,
이러한 변경 사항을 일관되게 적용하기 위한 프로세스가 바로 **마이그레이션(Migration)**입니다.
📌 1. 마이그레이션(Migration)이란?
데이터베이스 **스키마(테이블 구조)**의 변경 사항을
버전 관리하고 자동 적용하는 작업 또는 도구를 의미합니다.
즉, 마이그레이션은 DDL (CREATE, ALTER, DROP)을
코드로 관리하고, 개발 환경 → 운영 환경으로 안전하게 반영할 수 있게 도와줍니다.
📌 2. 마이그레이션이 왜 필요한가?
이유 설명
✅ 스키마 변경 추적 | 어떤 변경이 언제, 왜 일어났는지 명확하게 관리 |
✅ 협업 환경에서 일관성 유지 | 여러 개발자 간의 DB 구조 동기화 |
✅ 배포 자동화 | CI/CD 파이프라인에 통합하여 자동 적용 가능 |
✅ 롤백 가능 | 잘못된 변경사항을 이전 상태로 되돌릴 수 있음 |
✅ 버전 관리 | Git으로 코드 버전 관리하듯 DB도 관리 가능 |
📌 3. 실무에서의 예시 (Prisma 기준)
Prisma 마이그레이션 생성
npx prisma migrate dev --name add_is_active_to_users
→ 다음과 같은 SQL이 자동 생성됨:
ALTER TABLE "User" ADD COLUMN "isActive" BOOLEAN DEFAULT true;
마이그레이션 적용
npx prisma migrate deploy
→ production 환경에서도 적용 가능
📌 4. Prisma 외 다른 도구들
반응형
도구 설명
Sequelize | 마이그레이션 파일 직접 작성 |
TypeORM | CLI 기반 마이그레이션 자동 생성 |
Knex.js | SQL Builder 기반 마이그레이션 |
Liquibase / Flyway | Java 기반 프로젝트에서 많이 사용 |
Django ORM | Python 기반 마이그레이션 관리 탁월 |
📌 5. 마이그레이션 vs 시드(seed)
구분 설명
마이그레이션 | 테이블 구조(스키마) 변경 관리 |
시드 | 초기 데이터 입력 (ex. 관리자 계정 생성, 기본 코드 값 등) |
→ 시드는 주로 개발 환경 세팅에 사용됨
📌 6. 실무 경험 예시
🧪 문제
- 테이블 컬럼 변경을 SQL로 수동 적용 → 운영 DB 반영 누락
- 로컬에서는 정상 작동, 운영에서는 500 에러 발생
✅ 해결
- Prisma 마이그레이션으로 변경 사항 코드화
- migrations/ 디렉토리에 버전 관리
- GitHub Actions로 CI 중 자동 DB 마이그레이션 적용
- rollback 테스트로 배포 안정성 향상
📌 7. 면접에서 이렇게 말하세요
마이그레이션은 데이터베이스 스키마 변경을 안정적으로 관리하는 핵심 도구입니다.
실무에서는 Prisma의 마이그레이션 기능을 통해 구조 변경을 코드로 관리하고,
CI/CD 파이프라인에서 자동 배포하여 일관된 환경을 유지하고 있습니다.
DB마이그레이션,Prisma마이그레이션,DDL관리,스키마변경,백엔드개발,CI자동배포,DevOps,버전관리,NodeORM,면접질문