필수 중지 사항 회피
필수 중지 사항은 GitLab 컴포넌트나 의존성에 대한 변경으로 인해 GitLab을 업그레이드하여 특정 major.minor
버전에서 중지 및 업그레이드를 해야 하는 경우입니다.
개발 부서는 유지 보수 정책을 유지하며, 이로 인해 3 개월 동안 이전 세 개의 릴리스에 대한 백포트 창이 유지됩니다. 그러나 GitLab은 버전 지원을 포함하여 현재 주요 버전 및 이전 두 주요 버전을 지원하는 훨씬 긴 윈도우를 유지합니다. 이전 주요 릴리스 일정을 고려하면 GitLab 고객은 현재 릴리스에서 최대 3년 동안 지연될 수 있으며 업그레이드 지원을 받을 수 있습니다.
예를 들어, 14.0.12
에서 16.1
로 업그레이드하는 GitLab 사용자는 최신 16.1.z
버전으로 업그레이드하기 전에 다음 필수 중지 사항을 가질 수 있습니다: 14.3.6
, 14.9.5
, 14.10.5
, 15.0.5
, 15.1.6
, 15.4.6
, 15.11.11
.
과거의 필수 중지 사항은 종종 소개된 후 수개월 동안 발견되지 않았으며, 종종 확장된 문제 해결 및 지원 엔지니어, 고객 성공 관리자 및 개발 엔지니어의 지원을 통해 1-3 개 이상의 마이너 릴리스를 업그레이드하는 사용자가 있었습니다.
가능한 경우 필수 중지 사항을 피해야 합니다. 피해갈 수 없는 경우, 필수 중지 사항은 예정된 필수 중지 사항에 맞춰야 합니다.
우리가 비정기적인 필수 중지 사항을 선언하는 것을 고려하는 경우, 분배 팀 제품 관리자에게 연락하여 다음 단계에 대해 상담하세요. 필수 중지 사항을 선언해야 하는지에 대한 불확실성이 있는 경우, 분배 제품 관리자는 GitLab 제품 리더십 (VP 또는 최고 제품 책임자)에게 최종 결정을 내리도록 업그레이드 사안을 에스컬레이션할 수 있습니다. 예를 들어, 변경 사항이 매우 큰 자체 설치에 중소 규모의 고객을 위한 중지를 요구하고 문제가 발생한 경우에는 명확한 해결책이 있는 경우에도 이런 사항이 발생할 수 있습니다.
예정된 필수 중지 사항은 주로 major
버전 릴리스 바로 전의 이전 major
.minor
릴리스에 대해 구현되어 여러 계획된 폐기됨 및 알려진 중단 변경을 수용하기 위해 구현됩니다.
또한, GitLab 16부터 우리는 예정된 major
.minor
필수 중지 사항을 도입했습니다:
GitLab 16.x에서 두 번 또는 세 번의 필수 업그레이드 중지 사항을 예정하고 있습니다.
필수 업그레이드 중지 사항을 예정할 때는 적어도 두 개의 마일스톤의 사전 통보를 제공할 것입니다. 첫 번째 예정된 필수 업그레이드 중지 사항은 GitLab 16.3에 예정되어 있습니다. 업그레이드 중지가 필요한 새로운 사안이 발생하지 않는다면 GitLab 16.3은 일반 업그레이드로 처리될 것입니다.
필수 중지 사항의 원인
완료된 마이그레이션에 대한 부정확한 가정
필수 중지 사항의 대부분은 주로 특정 릴리스에서 데이터 모델의 상태에 대한 가정으로 인해 발생하며, 일반적으로 상호의존하는 데이터베이스 마이그레이션 또는 코드 변경 형태로 나타납니다. 이전 마이그레이션에서 도입된 스키마 변경이 코드를 로드하는 시점에 완료되었다고 가정하는 것과 관련이 있습니다.
버전 간의 호환성을 위한 변경 사항 및 마이그레이션 설계는 지속적 또는 “제로 다운타임” 업그레이드에 대한 중지 우려를 완화시킬 수 있습니다. 그러나 계약 단계는 일반적으로 백그라운드 마이그레이션이 완료된 후에 실행 또는 로드해야 하는 마이그레이션/코드 변경이 도입될 때 필수 중지 사항을 도입할 가능성이 높습니다.
예시
- GitLab
12.1
:state
값에 따라 MergeRequests에서merge_status
를 변경하는 백그라운드 마이그레이션을 도입했습니다.state
속성은12.10
에서 제거되었습니다. 이 필수 중지 사항이 문서화되기까지13.6
까지 시간이 걸렸습니다. - GitLab
13.8
: 중복 서비스 레코드 처리용 백그라운드 마이그레이션을 포함하고 있습니다.13.9
에서 다른 마이그레이션에서 중복 서비스 레코드용 고유 인덱스가 적용되었습니다. 이는 백그라운드 마이그레이션이 완료되길 기다렸다가 문서화가14.3
에서 이뤄졌습니다. - GitLab
14.3
:merge_request_diff_commits
에 대한 잠재적으로 오랜 시간이 걸리는 백그라운드 마이그레이션을 포함하고 있습니다. 이 변경 사항은 대형 GitLab 설치에 대해 상당한 다운타임을 야기했습니다. 이는15.1
에서 문서화되었습니다. - GitLab
14.9
:namespaces
및projects
의 작업용 백그라운드 마이그레이션과14.10
에서 추가된 다른 작업용 백그라운드 마이그레이션을 완료하여 실행되기 전에 마무리해야 하는 백그라운드 마이그레이션을 포함하고 있어서 필수 중지가 생성됩니다. 이 마이그레이션은 대형 GitLab 설치에서 몇 시간이나 몇 일이 걸릴 수 있습니다.
관련 내용 및 관련된 이슈 및 MR에 대한 링크 등의 추가 정보는 다음에서 찾을 수 있습니다: 이슈: GitLab 업그레이드 경로 중지 추가/확산을 피하기 위한 조치
코드 해결책 및 완화 조치 제거
데이터 모델/스키마/마이그레이션 상태에 대한 가정과 유사하게, 이전에 발견된 문제를 해결하기 위해 구현된 코드의 의도적인 제거로 인해 필수 major.minor
중지가 도입된 경우가 있습니다.
예시
- GitLab
13.1
: Rails6.0.3.1
에서 보안 수정으로 CSRF 토큰 변경이 발생했습니다 (캐너리 환경 사건 발생). 이전에 생성된 토큰을 계속 수용하기 위한 코드를 도입하고,13.2
에서 해당 코드를 제거하여13.1
에서 알려진 필수 중지 사항이 생성되었습니다. - GitLab
15.4
: 작업 아티팩트에 대한 부정확한expires_at
타임스탬프를 수정하는 마이그레이션을 소개했습니다. GitLab14.9
이후로 코드를 완화한 것이었는데, 이 완화 코드가15.6
에서 제거되어15.4
가 필수 중지 사항이 되었습니다.
폐기 요소
폐기 요소, 특히 중단 변경은 긴 마이그레이션 지연을 도입하거나 GitLab 관리자가 매뉴얼 조치를 취해야 하는 경우에 필수 중지 사항을 유발할 수 있습니다.
이는 일반적으로 주요 릴리스 앞에 필수 중지 사항으로 받아들여지며, 새로운 major
릴리스 바로 전의 최신 major.minor
릴리스에서 중지하는 경우가 대부분이며, 현재까지 발견된 폐기 요소와 관련된 필수 중지 사항은 이러한 릴리스로 제한됩니다.
예시
Deprecation의 예시는 이곳에 모두 나열할 수 없지만, 버전별 폐기 및 제거 사항과 버전별 업그레이드 안내, GitLab 패키지(Omnibus)의 버전별 변경 사항, 그리고 GitLab 차트 업그레이드 노트에서 찾을 수 있습니다.