배치 백그라운드 마이그레이션
GitLab의 배치 백그라운드 마이그레이션(BBM) 프레임워크 사용 방법, 실행 메커니즘, 관리 명령어, 모범 사례를 설명합니다.
배치 백그라운드 마이그레이션은 마이그레이션이 가이드라인의 시간 제한 을 초과하는 경우 데이터 마이그레이션을 수행하는 데 사용해야 합니다. 예를 들어, 단일 JSON 칼럼에 저장된 데이터를 별도 테이블로 마이그레이션할 때 배치 백그라운드 마이그레이션을 사용할 수 있습니다. 배치 백그라운드 마이그레이션은 레거시 백그라운드 마이그레이션 프레임워크를 대체했습니다. 해당 프레임워크와 관련된 변경 사항은 해당 문서를 참조하세요. 배치 백그라운드 마이그레이션 프레임워크는 ChatOps를 지원합니다. GitLab 엔지니어는 ChatOps를 통해 시스템에 존재하는 배치 백그라운드 마이그레이션과 상호작용할 수 있습니다. 배치 백그라운드 마이그레이션을 언제 사용하는가 # 일반 Rails 마이그레이션으로 수행할 경우 가이드라인의 시간 제한 을 초과할 만큼 많은 행이 포함된 테이블에서 데이터를 마이그레이션할 때 배치 백그라운드 마이그레이션을 사용하세요. 배치 백그라운드 마이그레이션은 트래픽이 많은 테이블 에서 데이터를 마이그레이션할 때 사용해야 합니다. 배치 백그라운드 마이그레이션은 대용량 데이터셋의 각 항목에 대해 여러 단일 행 쿼리를 실행할 때도 사용할 수 있습니다. 일반적으로 단일 레코드 패턴의 경우 런타임은 데이터셋 크기에 크게 의존합니다. 데이터셋을 적절히 분할하여 백그라운드 마이그레이션으로 처리하세요. 스키마 마이그레이션을 수행하는 데는 배치 백그라운드 마이그레이션을 사용하지 마세요. 백그라운드 마이그레이션이 도움이 될 수 있는 경우: 하나의 테이블에서 여러 개의 개별 테이블로 이벤트를 마이그레이션하는 경우. 다른 칼럼에 저장된 JSON을 기반으로 하나의 칼럼을 채우는 경우. 외부 서비스의 출력에 의존하는 데이터를 마이그레이션하는 경우. (예: API) 참고 사항 # 배치 백그라운드 마이그레이션이 중요한 업그레이드의 일부인 경우, 릴리즈 포스트에 공지해야 합니다. 마이그레이션이 이 범주에 해당하는지 확실하지 않다면 Project Manager와 협의하세요. 자체 관리 및 Dedicated 고객이 업그레이드를 계획할 수 있도록 중요한 마이그레이션에 대해 업그레이드 참고 사항 을 추가해야 합니다. 가이드라인 을 따르세요. 필요한 파일이 기본으로 생성되도록 제너레이터 를 사용하여 배치 백그라운드 마이그레이션을 생성하세요. 배치 백그라운드 마이그레이션의 동작 방식 # 배치 백그라운드 마이그레이션(BBM)은 perform 메서드를 정의하는 Gitlab::BackgroundMigration::BatchedMigrationJob 의 서브클래스입니다. 첫 번째 단계로, 일반 마이그레이션이 BBM 클래스와 필요한 인수를 포함하는 batched_background_migrations 레코드를 생성합니다. 기본적으로 batched_background_migrations 는 활성 상태이며, Sidekiq 워커가 실제 배치 마이그레이션을 실행하기 위해 이를 가져갑니다. 모든 마이그레이션 클래스는 네임스페이스 Gitlab::BackgroundMigration 에 정의되어야