본문으로 건너뛰기

데이터베이스 변경

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

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

  • 두 개 이상의 버전 간의 차이를 꼼꼼히 확인
  • 안전하고 하위 호환성을 유지하며 데이터베이스 변경
  • 잠재적인 실패에 대비하여 롤백 스크립트를 준비
  • 실행 중인 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

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