Yoyo migrate vs Golang migrate
Source: Dev.to
배경
최근에 데이터베이스 마이그레이션 도구를 CI 파이프라인에 통합해야 했습니다. 처음에는 golang-migrate를 선택했는데, 이 도구가 인기가 많고 널리 추천되기 때문이었습니다. 모든 것이 괜찮아 보였지만 실제 마이그레이션을 실행하면서 문제가 발생하기 시작했습니다.
golang-migrate의 문제점
- 저장 프로시저가 구분자 처리 때문에 문제를 일으켰습니다.
- 마이그레이션이 실패하면 종종 더러운 상태가 되어 수동으로 롤백해야 했습니다.
- 내장된 히스토리 테이블이 없어 실제로 어떤 일이 일어났는지 추적하려면 추가 작업이 필요했습니다.
- 기본 설정으로는 마이그레이션당 하나의 SQL 문만 실행할 수 있어 우리 사용 사례에 너무 제한적이었습니다.
yoyo-migrate로 전환
이 문제들을 해결하려고 애쓰다 보니 대안을 찾아보게 되었고 yoyo-migrate를 발견했습니다. 약 1년 정도 업데이트가 없었지만 기능이 너무 단순해서 잦은 릴리스가 필요하지 않을 것 같았습니다. 한번 사용해 보니 놀라울 정도로 잘 동작했습니다.
가장 마음에 든 점
- 여러 SQL 문을 지원합니다.
- 모든 작업을 트랜잭션 안에서 실행해 수동 롤백이 필요 없습니다.
- 저장 프로시저를 문제 없이 처리합니다.
.sql과.py마이그레이션을 모두 지원해 스키마 변경과 데이터 변환·집계 로직을 혼합한 파이프라인에 편리합니다.
결론
yoyo-migrate는 golang-migrate만큼 인기가 없지만, 제 경우에는 더 잘 맞았습니다. 사용하기 쉬웠고 문제도 적었으며, 해킹이나 수동 수정 없이 워크플로에 자연스럽게 녹아들었습니다. 때때로 덜 알려진 도구가 실제 작업에 더 잘 맞을 때가 있습니다.