필수 중지점 추가
필수 중지점은 고객들에게 혼란을 주기 때문에 절대적으로 필요할 때에만 추가해야 합니다. 필수 중지점을 추가하기 전에 다른 대안이 있는지 고려해보세요. 때로는 필수 중지점을 피할 수 없을 때가 있습니다. 그런 경우에는 아래 지침에 따르세요.
중지가 필요한 일반적인 시나리오
실행 중인 마이그레이션 최종화
만약 마이그레이션이 오랜 시간이 걸린다면 많은 고객이 업그레이드 중에 타임아웃을 경험할 수 있습니다. 증가된 지원 볼륨은 필수 중지점을 도입할 수 있습니다. 어떤 백그라운드 마이그레이션이 특히 큰 고객에게 이러한 문제를 일으킬 수 있지만, 일반적으로 영향이 넓게 퍼지면 중지를 도입합니다.
- 원인: 업그레이드에 1시간 이상이 걸리면 Omnibus가 시간 초과됨.
- 완화책: 다음 필수 중지점 이후 첫 번째 마이너 버전에 최종화 일정을 예약하세요.
제대로 최종화되지 않은 백그라운드 마이그레이션
백그라운드 마이그레이션이 최종화되지 않으면 필수 중지점을 위해 중단할 필요가 있을 수 있습니다. 이 때는 다음과 같을 때입니다:
- 백그라운드 마이그레이션이 최종화되지 않았고,
-
그 백그라운드 마이그레이션에 의존하는 마이그레이션이 작성되었을 때.
- 원인: 의존하는 마이그레이션이 백그라운드 마이그레이션 미완료 시 실패할 수 있음.
- 완화책: 모든 백그라운드 마이그레이션이 최종화되어 있는지 확인한 후 의존하는 마이그레이션을 작성하세요.
마이그레이션 제거
마이그레이션이 제거되면 필요한 변경사항을 놓치지 않도록 필수 중지점을 도입해야 할 수 있습니다.
- 원인: 의존하는 마이그레이션은 실패할 수 있으며, 필수 마이그레이션이 제거되었기 때문에 애플리케이션이 제대로 기능하지 않을 수 있음.
- 완화책: 마이그레이션은 계획된 필수 중지점에 포함된 후에만 제거되도록 보장하세요.
마이그레이션 타임스탬프가 매우 오래됨
마이그레이션 타임스탬프가 매우 오래될 경우(> 3주, 또는 마지막 중지점 이후), 다음과 같은 시나리오가 문제를 일으킬 수 있습니다:
- 만약 마이그레이션이 이전 릴리스에서 필수 중지점 이후에 소개된 더 새로운 타임스탬프를 가진 다른 마이그레이션에 의존한다면 새 마이그레이션이 선행 마이그레이션보다 더 빨리 순차적으로 실행되어 실패할 수 있음.
-
마이그레이션 타임스탬프 ID가 마지막 타임스탬프보다 이전이라면, 팀이 다른 마이그레이션을 필수 중지점에서 묶을 때 그것이 우연히 묶일 수 있음.
- 원인: 다른 버전에서 소개된 이후에 필수 중지점에서 소개된 마이그레이션에 의존하는 경우 마이그레이션이 실패할 수 있음. 또는 필수 중지점 이후에 마이그레이션이 우연히 묶일 수 있음.
- 완화책: 마이그레이션 타임스탬프가 릴리스 날짜 내에 속하도록 하고, 마지막 필수 중지점 이전에 날짜가 되어 있는지 확인하세요.
마이그레이션 관련 도구의 버그
마이그레이션 관련 도구에서 버그가 발생한 경우 몇 가지 상황에서 우리는 중지점을 도입할 필요가 있었습니다. 우리는 테스트에서 이를 방지하려고 노력하지만 때로는 발생할 수 있습니다.
- 원인: 우리는 이러한 문제들을 뒤늦게까지 인식한 경우가 있었습니다.
- 완화책: 보통은 마이그레이션에 대한 수정을 백포트하려고 노력하지만 어떤 경우에는 이것이 불가능할 수 있습니다.
필수 중지점이 릴리스되기 전에
알려진 필수 중지점을 릴리스하기 전에 다음 단계를 완료하세요. 필수 중지점이 릴리스 후에 식별되면 아래 단계를 반드시 완료해야 합니다:
- 업그레이드 경로를 업데이트하여 새로운 필수 중지점을 포함시킵니다.
- 고객 지원 및 릴리스 관리 팀과 변경 사항을 의사소통합니다.
-
데이터베이스 그룹에 이슈를 등록하여 다음 릴리스에서 해당 버전까지의 마이그레이션을 묶도록 합니다. 이 템플릿을 사용하세요:
제목: `<필수 중지점 버전>에 대한 마이그레이션 묶기` <필수 중지점 버전>을 위해 추가된 필수 중지점으로 인해 마이그레이션을 해당 버전까지 묶고, 최소 스키마 버전을 업데이트해야 합니다. 결과물: - [ ] <필수 중지점 버전>까지 마이그레이션이 묶였음 - [ ] `Gitlab::Database::MIN_SCHEMA_VERSION`이 init schema 버전과 일치함 /label ~"group::database" ~"section::enablement" ~"devops::data_stores" ~"Category:Database" ~"type::maintenance" /cc @gitlab-org/database-team/triage
필수 중지점 이후 릴리스에서
-
lib/gitlab/database.rb
의Gitlab::Database::MIN_SCHEMA_GITLAB_VERSION
을 새 필수 중지점 버전으로 업데이트하세요.Gitlab::Database::MIN_SCHEMA_VERSION
은 변경하지 마세요. -
charts
프로젝트에서 업그레이드 체크 후크를 필수 중지점 버전으로 업데이트하세요. -
omnibus-gitlab
프로젝트에서 프리-설치 버전 체크를 필수 중지점 버전으로 업데이트하세요.