InfoGrab DocsInfoGrab Docs

데이터베이스 업그레이드 DDL 잠금

요약

GitLab.com의 PostgreSQL 메이저 업그레이드 기간에는 업그레이드 과정과의 충돌을 막기 위해 DDL(Data Definition Language) 변경이 일시적으로 차단됩니다. 모든 배포를 막는 하드 Production Change Lock(PCL) 대신, 대상을 좁힌 잠금으로 데이터베이스 스키마 변경만 머지되지 않도록 막습니다.

GitLab.com의 PostgreSQL 메이저 업그레이드 기간에는 업그레이드 과정과의 충돌을 막기 위해 DDL(Data Definition Language) 변경이 일시적으로 차단됩니다. GitLab.com은 PostgreSQL 업그레이드에 논리적 복제를 사용하여 서로 다른 메이저 버전 사이에서 데이터를 복제하고, 무중단 업그레이드를 구현합니다. 업그레이드 기간에 새로운 DDL 변경이 들어오면 복제가 깨질 수 있습니다.

모든 배포를 막는 하드 Production Change Lock(PCL) 대신, 대상을 좁힌 잠금으로 데이터베이스 스키마 변경만 머지되지 않도록 막습니다.

이 방식으로 GitLab은 스키마 변경으로부터 데이터베이스 업그레이드 과정을 보호하면서 다른 변경 사항은 계속 릴리스할 수 있습니다.

작동 방식#

DDL 잠금은 config/database_change_lock.yml에서 구성하며, CI/CD 파이프라인에서 실행되는 Danger 검사로 강제합니다. 구성에는 다음 내용이 포함됩니다.

  • db/structure.sql을 수정하는 머지 리퀘스트는 Danger가 자동으로 차단합니다.
  • 잠금이 시작되기 며칠 전부터 영향을 받는 머지 리퀘스트에 경고가 표시됩니다.
  • 잠금은 DDL 변경에만 적용됩니다. 그 외 변경은 계속 머지하고 배포할 수 있습니다.
  • 잠금 기간에는 Danger 검사가 실패하므로 머지 리퀘스트를 머지할 수 없습니다.

soft PCL 중 배포 후 마이그레이션#

같은 config/database_change_lock.yml 파일은 잠금 항목에 block_level: only_pdm 이 설정된 경우 새로운 배포 후 마이그레이션(PDM)도 차단합니다. 이는 PDM 이 실행되지 않는 soft Production Change Lock을 위한 설정입니다.

PDM은 soft PCL 기간에 실행되지 않습니다. 그럼에도 새 PDM을 머지하면 PCL 종료 후 실행되는 백로그가 늘어나, PCL 이후 마이그레이션 실행의 규모와 위험이 커집니다.

block_level: only_pdm 이 설정된 경우는 다음과 같습니다.

  • db/post_migrate/ 또는 ee/db/post_migrate/ 아래에 파일을 추가하는 머지 리퀘스트가 차단됩니다.
  • 차단은 추가된 파일에만 적용됩니다. 기존 PDM의 수정과 삭제는 차단되지 않습니다.
  • 경고 기간에는 경고가 표시되고, 잠금 기간에는 실패가 발생합니다.
  • DDL 변경은 only_pdm 잠금으로 차단되지 않습니다.

block_level의 기본값은 only_ddl 이며, 이는 기존 PostgreSQL 업그레이드 동작과 같습니다.

DDL 잠금이 활성화된 경우#

잠금이 구성되어 활성화된 경우의 동작은 다음과 같습니다.

  • Danger 검사가 실패하여 머지 리퀘스트를 머지할 수 없습니다.
  • 잠금 기간과 다음 단계를 설명하는 명확한 오류 메시지가 표시됩니다.

머지 리퀘스트가 영향을 받는 경우의 조치#

머지 리퀘스트에 DDL 변경이 포함되어 업그레이드 잠금의 영향을 받는 경우는 다음과 같습니다.

경고 기간 중#

변경 사항을 계속 머지할 수 있습니다. Danger 검사는 다음 내용을 알리는 경고 메시지를 표시합니다.

  • 잠금 시작까지 남은 일수
  • 잠금의 시작 시점과 종료 시점
  • 업그레이드 관련 세부 정보
  • 업그레이드 추적 이슈 링크

잠금이 시작되기 전에 변경 사항을 머지하거나, 잠금이 만료될 때까지 기다리는 계획을 세웁니다.

잠금 기간 중#

잠금이 만료될 때까지 기다려야 합니다. Danger 검사는 오류 메시지와 함께 실패합니다.

잠금이 끝난 뒤의 절차는 다음과 같습니다.

  • CI/CD 파이프라인을 다시 실행합니다.
  • Danger 검사가 자동으로 통과합니다.
  • 평소의 머지 리퀘스트 절차를 진행합니다.

데이터베이스 업그레이드 DDL 잠금

GitLab v19.5
원문 보기

요약

GitLab.com의 PostgreSQL 메이저 업그레이드 기간에는 업그레이드 과정과의 충돌을 막기 위해 DDL(Data Definition Language) 변경이 일시적으로 차단됩니다. 모든 배포를 막는 하드 Production Change Lock(PCL) 대신, 대상을 좁힌 잠금으로 데이터베이스 스키마 변경만 머지되지 않도록 막습니다.

GitLab.com의 PostgreSQL 메이저 업그레이드 기간에는 업그레이드 과정과의 충돌을 막기 위해 DDL(Data Definition Language) 변경이 일시적으로 차단됩니다. GitLab.com은 PostgreSQL 업그레이드에 논리적 복제를 사용하여 서로 다른 메이저 버전 사이에서 데이터를 복제하고, 무중단 업그레이드를 구현합니다. 업그레이드 기간에 새로운 DDL 변경이 들어오면 복제가 깨질 수 있습니다.

모든 배포를 막는 하드 Production Change Lock(PCL) 대신, 대상을 좁힌 잠금으로 데이터베이스 스키마 변경만 머지되지 않도록 막습니다.

이 방식으로 GitLab은 스키마 변경으로부터 데이터베이스 업그레이드 과정을 보호하면서 다른 변경 사항은 계속 릴리스할 수 있습니다.

작동 방식#

DDL 잠금은 config/database_change_lock.yml에서 구성하며, CI/CD 파이프라인에서 실행되는 Danger 검사로 강제합니다. 구성에는 다음 내용이 포함됩니다.

  • db/structure.sql을 수정하는 머지 리퀘스트는 Danger가 자동으로 차단합니다.
  • 잠금이 시작되기 며칠 전부터 영향을 받는 머지 리퀘스트에 경고가 표시됩니다.
  • 잠금은 DDL 변경에만 적용됩니다. 그 외 변경은 계속 머지하고 배포할 수 있습니다.
  • 잠금 기간에는 Danger 검사가 실패하므로 머지 리퀘스트를 머지할 수 없습니다.

soft PCL 중 배포 후 마이그레이션#

같은 config/database_change_lock.yml 파일은 잠금 항목에 block_level: only_pdm 이 설정된 경우 새로운 배포 후 마이그레이션(PDM)도 차단합니다. 이는 PDM 이 실행되지 않는 soft Production Change Lock을 위한 설정입니다.

PDM은 soft PCL 기간에 실행되지 않습니다. 그럼에도 새 PDM을 머지하면 PCL 종료 후 실행되는 백로그가 늘어나, PCL 이후 마이그레이션 실행의 규모와 위험이 커집니다.

block_level: only_pdm 이 설정된 경우는 다음과 같습니다.

  • db/post_migrate/ 또는 ee/db/post_migrate/ 아래에 파일을 추가하는 머지 리퀘스트가 차단됩니다.
  • 차단은 추가된 파일에만 적용됩니다. 기존 PDM의 수정과 삭제는 차단되지 않습니다.
  • 경고 기간에는 경고가 표시되고, 잠금 기간에는 실패가 발생합니다.
  • DDL 변경은 only_pdm 잠금으로 차단되지 않습니다.

block_level의 기본값은 only_ddl 이며, 이는 기존 PostgreSQL 업그레이드 동작과 같습니다.

DDL 잠금이 활성화된 경우#

잠금이 구성되어 활성화된 경우의 동작은 다음과 같습니다.

  • Danger 검사가 실패하여 머지 리퀘스트를 머지할 수 없습니다.
  • 잠금 기간과 다음 단계를 설명하는 명확한 오류 메시지가 표시됩니다.

머지 리퀘스트가 영향을 받는 경우의 조치#

머지 리퀘스트에 DDL 변경이 포함되어 업그레이드 잠금의 영향을 받는 경우는 다음과 같습니다.

경고 기간 중#

변경 사항을 계속 머지할 수 있습니다. Danger 검사는 다음 내용을 알리는 경고 메시지를 표시합니다.

  • 잠금 시작까지 남은 일수
  • 잠금의 시작 시점과 종료 시점
  • 업그레이드 관련 세부 정보
  • 업그레이드 추적 이슈 링크

잠금이 시작되기 전에 변경 사항을 머지하거나, 잠금이 만료될 때까지 기다리는 계획을 세웁니다.

잠금 기간 중#

잠금이 만료될 때까지 기다려야 합니다. Danger 검사는 오류 메시지와 함께 실패합니다.

잠금이 끝난 뒤의 절차는 다음과 같습니다.

  • CI/CD 파이프라인을 다시 실행합니다.
  • Danger 검사가 자동으로 통과합니다.
  • 평소의 머지 리퀘스트 절차를 진행합니다.