본문으로 건너뛰기

데이터베이스 변경

새로운 기능을 개발하거나 기존 기능을 리팩토링할 때, 데이터베이스 스키마를 변경하는 것이 불가피할 때가 있습니다.

사용자로서, 이러한 작업은 두려울 수 있습니다. 일반적으로 다음을 수행해야 합니다:

  • 두 개 이상의 버전 간의 차이를 꼼꼼히 확인
  • 안전하고 하위 호환성을 유지하며 데이터베이스 변경
  • 잠재적인 실패에 대비하여 롤백 스크립트를 준비
  • 실행 중인 Logto 인스턴스를 새 버전으로 점진적으로 교체

저희도 개발자이며, 이러한 위험하지만 필수적인 작업을 수행하는 것이 불편하다는 것을 알고 있습니다. 그래서 실수를 하지 않을 CLI와 같은 도구에게 이 작업을 맡기는 것이 어떨까요?

이제부터 업그레이드 프로세스는 다음과 같습니다:

  • 데이터베이스에 접근할 수 있는 곳에서 logto db alt deploy를 실행
  • 실행 중인 Logto 인스턴스를 새 버전으로 점진적으로 교체

시작해봅시다!

배포할 버전 결정하기​

Logto CLI가 전역적으로 설치되어 있다면, 배포 전에 CLI를 최신 버전으로 업그레이드하여 모든 사용 가능한 데이터베이스 변경을 받는 것이 강력히 권장됩니다. 그런 다음 다음 명령을 실행하세요:

logto db alteration deploy

데이터베이스가 최신 상태라면, 다음 메시지가 표시됩니다:

[info] 배포할 변경 사항이 0개 발견되었습니다

배포되지 않은 변경 사항이 있는 경우, CLI는 원하는 버전을 선택하도록 요청할 것입니다:

? 변경 대상 버전을 선택하세요 (화살표 키 사용)
> 1.2.0
1.0.0

이론적으로, 배포할 버전은 Logto 인스턴스의 버전과 일치해야 합니다. 동시에, 대상 버전과 함께 명령을 사용할 수 있습니다:

logto db alteration deploy 1.2.0

TTY가 아닌 파이프라인에서 변경을 수행하고 싶을 때 유용하며, --db-url을 사용하여 데이터베이스 URL을 전달하는 것을 잊지 마세요. 클러스터에서 변경 작업을 설정하는 방법은 배포 및 구성을 참조하세요.

노트:

각 변경 스크립트에 대해, Logto CLI는 전체 스크립트를 트랜잭션으로 실행합니다. 따라서 배포가 실패하면, 문제를 해결한 후 동일한 명령으로 쉽게 계속할 수 있습니다.

변경 사항 롤백​

우리의 변경 스크립트는 변경 사항을 롤백할 수 있는 down 스크립트도 제공합니다. 데이터베이스 상태를 특정 버전으로 롤백하려면, 1.0.0을 대상 버전으로 바꾸고 아래 명령을 실행하세요:

logto db alteration rollback 1.0.0
노트:

모든 변경 스크립트는 이 디렉토리에서 찾을 수 있습니다.

기여자를 위한 안내​

Logto 저장소의 마스터 브랜치에는 미발표된 변경 스크립트가 포함될 수 있습니다. "next" 변경 사항을 수동으로 배포해야 할 수도 있으며, 다음 명령을 실행하여 가능합니다:

logto db alteration deploy next

데이터베이스 변경이 필요한 기능을 개발 중이라면, 데이터베이스 스키마를 업데이트하는 대신 다음 형식의 스크립트를 제공해야 합니다:

next-[timestamp]-what-to-do.ts

참고를 위해 이 디렉토리를 확인하세요.