Alembic
Database Migration Tool
파이썬의 대표적인 ORM인 SQLAlchemy를 사용할 때, 데이터베이스의 스키마(테이블 구조 등)를 변경하고 관리하기 위해 사용하는 라이브러리입니다. 데이터베이스의 버전 관리 시스템(Git과 유사한 역할)이라고 이해하면 쉽습니다.
Alembic을 사용하는 이유?
- Alembic 사용법 (python data migrations) :: 까치의 일상노트
- 보통 개발 할 때 여러 대의 DB를 생성하여 사용합니다.
- 아래 Flow와 같이 Dev와 Prod DB를 일치 시켜야 운영이 가능 할 때 사람이 일일히 수동으로 하는 것이 아니라 Alembic으로 통합하여 다른 사람이라도 똑같은 컨디션의 환경을 제공해주기 위한 툴입니다.
- spring 진영의 flyway와 비슷 합니다. 차이점이라면 flyway는 변경 정보를 각 테이블에 모두 기록하는 반면, alembic은 마지막에 마이그레이션 된 버전의 해시값만을 기록합니다.
- alembic DB migrations을 버전의 해시값으로 버전별 어떤 작업을 했는지 트래킹이 용이합니다.
- 보통 migration이 생기는 경우는 아래와 같은데 이 모두 10대의 DB 인스턴스가 있다면 10번을 반복해 줘야하지만 alembic을 사용하면 한번 수정과 배포가 진행 됩니다.
- 클라우드 인스턴스 이동하여 DB를 새로 생성해야 할 때
- 특정 Entity에 대한 변경 요청
- Table Schema 변경 되는 경우