Yoyo migrate vs Golang migrate

발행: (2025년 12월 12일 오전 02:47 GMT+9)
3 min read
원문: Dev.to

Source: Dev.to

배경

최근에 데이터베이스 마이그레이션 도구를 CI 파이프라인에 통합해야 했습니다. 처음에는 golang-migrate를 선택했는데, 이 도구가 인기가 많고 널리 추천되기 때문이었습니다. 모든 것이 괜찮아 보였지만 실제 마이그레이션을 실행하면서 문제가 발생하기 시작했습니다.

golang-migrate의 문제점

  • 저장 프로시저가 구분자 처리 때문에 문제를 일으켰습니다.
  • 마이그레이션이 실패하면 종종 더러운 상태가 되어 수동으로 롤백해야 했습니다.
  • 내장된 히스토리 테이블이 없어 실제로 어떤 일이 일어났는지 추적하려면 추가 작업이 필요했습니다.
  • 기본 설정으로는 마이그레이션당 하나의 SQL 문만 실행할 수 있어 우리 사용 사례에 너무 제한적이었습니다.

yoyo-migrate로 전환

이 문제들을 해결하려고 애쓰다 보니 대안을 찾아보게 되었고 yoyo-migrate를 발견했습니다. 약 1년 정도 업데이트가 없었지만 기능이 너무 단순해서 잦은 릴리스가 필요하지 않을 것 같았습니다. 한번 사용해 보니 놀라울 정도로 잘 동작했습니다.

가장 마음에 든 점

  • 여러 SQL 문을 지원합니다.
  • 모든 작업을 트랜잭션 안에서 실행해 수동 롤백이 필요 없습니다.
  • 저장 프로시저를 문제 없이 처리합니다.
  • .sql.py 마이그레이션을 모두 지원해 스키마 변경과 데이터 변환·집계 로직을 혼합한 파이프라인에 편리합니다.

결론

yoyo-migrate는 golang-migrate만큼 인기가 없지만, 제 경우에는 더 잘 맞았습니다. 사용하기 쉬웠고 문제도 적었으며, 해킹이나 수동 수정 없이 워크플로에 자연스럽게 녹아들었습니다. 때때로 덜 알려진 도구가 실제 작업에 더 잘 맞을 때가 있습니다.

Back to Blog

관련 글

더 보기 »

2일차:SQL

데이터베이스 구조, 데이터 타입 및 테이블 기본 1. 데이터베이스 구조 요약 관계형 데이터베이스는 다음을 포함합니다: - Database (데이터베이스) - Tables (테이블) - Rows (Records) (행/레코드) - Columns (Fields) (열/필드)

2일차: Python 프로그래밍

데이터베이스 구조, 데이터 유형 및 테이블 기본 1. 데이터베이스 구조 요약 관계형 데이터베이스는 다음을 포함합니다: - Database - Tables - Rows (Records) - Columns (Fields) ...