InfoGrab DocsInfoGrab Docs

직접 전송을 통한 그룹 마이그레이션

직접 전송을 통한 그룹 마이그레이션의 아키텍처, ETL 파이프라인 설계, 사용자 기여 매핑 등 주요 구성 요소를 설명합니다.

직접 전송을 사용하려면 GitLab 설치가 GitLab IP 주소 에서 접근 가능하고 공개 DNS 항목이 있어야 합니다. 직접 전송을 통한 그룹 마이그레이션 은 파일 내보내기를 사용한 그룹 및 프로젝트 마이그레이션의 발전된 형태입니다. 목표는 사용자가 프로젝트를 포함한 전체 그룹을 하나의 GitLab 인스턴스에서 다른 인스턴스로 더 쉽게 마이그레이션할 수 있도록 하는 것입니다. 설계 결정 # 다음 아키텍처 다이어그램은 현재 GitLab API 를 활용하는 일련의 ETL 파이프라인을 통해 그룹 마이그레이션이 어떻게 작동하는지 보여줍니다. [ ](/19.1/development/img/bulk_imports_overview_v13_7.png) ETL # ETL은 추출(Extract), 변환(Transform), 적재(Load)의 약자로, 여러 데이터 소스의 데이터를 결합하여 데이터 웨어하우스 또는 다른 타깃 시스템에 적재되는 단일하고 일관된 데이터 저장소로 만드는 데이터 통합 프로세스입니다. ETL 아키텍처를 사용하면 코드가 더 명확해지고 추적, 테스트, 확장이 쉬워집니다. 아이디어는 임포트할 각 관계에 대해 하나의 ETL 파이프라인을 갖는 것입니다. API # 현재 프로젝트 및 그룹 임포트는 파일 기반이므로, 임포트할 파일을 생성하기 위한 내보내기 단계가 필요합니다. 직접 전송을 통한 그룹 마이그레이션은 GitLab API 를 활용하여 마이그레이션 속도를 높입니다. 또한, GraphQL 로 나아가는 과정에서 직접 전송을 통한 그룹 마이그레이션은 GraphQL API 적용 범위 확대에 기여할 수 있으며, 이는 GitLab과 사용자 모두에게 이익이 됩니다. 네임스페이스 # 마이그레이션 프로세스는 마이그레이션을 추적하기 위한 BulkImport 레코드 생성으로 시작됩니다. 이후 GitLab 그룹 마이그레이션과 관련된 모든 코드는 모든 애플리케이션 레이어에서 새로운 BulkImports 네임스페이스 아래에서 찾을 수 있습니다. 멱등성 # 동일한 Sidekiq job을 재실행할 때 중복 항목이 생기지 않도록, 각 항목이 처리될 때 캐시에 저장하고 캐시에 이미 있는 항목은 건너뜁니다. 두 가지 전략이 있습니다: BulkImports::Pipeline::HexdigestCacheStrategy : 데이터의 hexdigest 표현을 캐시합니다. BulkImports::Pipeline::IndexCacheStrategy : 파이프라인에서 항목의 마지막으로 처리된 인덱스를 캐시합니다. Sidekiq job 실행 계층 구조 # 대상 인스턴스에서: flowchart TD subgraph s1["Main"] BulkImportWorker -- Enqueue itself --> BulkImportWorker BulkImportWorker --> BulkImports::ExportRequestWorker BulkImports::ExportRequestWorker --> BulkImports::EntityWorker BulkImports::EntityWorker --