직접 이관에 의한 그룹 이관
참고: 직접 이관을 사용하려면 GitLab 설치가 GitLab IP 주소에서 접근 가능하고 공개 DNS 항목이 있어야 합니다.
직접 이관에 의한 그룹 이관은 파일 내보내기를 사용하여 그룹 및 프로젝트를 마이그레이션하는 것의 진화입니다. 그 목표는 사용자가 한 GitLab 인스턴스에서 다른 인스턴스로 전체 그룹과 프로젝트를 쉽게 마이그레이션할 수 있는 방법을 갖는 것입니다.
설계 결정
다음 구조도는 ETL 파이프라인 세트를 활용하여 현재 GitLab API에서 작동하는 그룹 마이그레이션의 작동 방식을 보여줍니다.
ETL
추출, 변환 및 로드(ETL)는 여러 데이터 소스에서 데이터를 결합하여 단일 일관된 데이터 저장소에로드되는 데이터 통합 프로세스입니다. 이 저장소는 데이터 웨어하우스 또는 다른 대상 시스템에로드됩니다.
ETL 아키텍처를 사용하면 코드를 명확하게하고 따르고 확장하기 쉽도록 만듭니다. 각 관계에 대해 하나의 ETL 파이프라인을 갖는 것이 아이디어입니다.
API
현재 프로젝트 및 그룹 가져오기는 파일 기반이므로 수출 단계를 필요로합니다.
직접 이관에 의한 그룹 이관은 GitLab API를 활용하여 마이그레이션 속도를 높입니다.
또한 GraphQL로 나아가고 있기 때문에 직접 이관을 통해 GraphQL API 범위를 확대할 수 있으며, 이것은 GitLab 및 사용자 양쪽에 이점을 제공할 수 있습니다.
네임스페이스
마이그레이션 프로세스는 마이그레이션을 추적하기 위한 BulkImport
레코드의 생성으로 시작됩니다. 거기서 GitLab 그룹 마이그레이션과 관련된 모든 코드는 응용 프로그램 모든 레이어에서 BulkImports
네임 스페이스 하위에서 찾을 수 있습니다.
Idempotency
같은 Sidekiq 작업을 다시 실행할 때 중복 항목이 생성되지 않도록하려면 각 항목을 처리할 때 캐시하고 캐시에 이미 있는 경우 항목을 건너 뜁니다.
두 가지 다른 전략이 있습니다.
-
BulkImports::Pipeline::HexdigestCacheStrategy
는 데이터의 16진수 표현을 캐시합니다. -
BulkImports::Pipeline::IndexCacheStrategy
는 파이프라인에서 항목의 마지막 처리된 색인을 캐시합니다.