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,면접질문