버전 제어로 프로젝트 관리
버전 제어를 사용하면 데이터 프로젝트의 개발을 관리하고 변경 내용을 추적할 수 있습니다.
버전 제어를 사용하면 설계 중에 프로젝트의 버전을 커밋할 수 있습니다. 이를 통해 변경 내용을 되돌리고 두 프로젝트 버전 간 변경 내용을 확인할 수 있습니다.
분기 전략을 사용하여 데이터 프로젝트를 개발할 수도 있습니다. 이를 통해 각 작업 영역이나 분기에서 프로젝트의 격리된 버전을 작업할 수 있습니다. 여러 사용자가 작업 영역을 공유할 수 있습니다. 그런 다음 작업 영역의 변경 내용을 기본 분기에 병합하여 프로덕션에 배포할 수 있습니다.
GitHub은 버전 제어를 위한 공급자로 사용됩니다.
시작하기
-
테넌트가 GitHub에 액세스하는 데 사용할 수 있는 GitHub 사용자를 만듭니다. 이는 관리자가 이미 사용자를 위해 만들었을 수 있습니다.
사용자는 다음 범위를 가져야 합니다.
-
repo
-
read:org
-
read:user
-
read:project
-
-
변경하려는 리포지토리에 대한 쓰기 액세스 권한이 필요합니다.
-
GitHub 개인 액세스 토큰(클래식)을 만들어야 합니다. 세분화된 개인 액세스 토큰은 지원되지 않습니다.
자세한 내용은 GitHub 문서: 개인 액세스 토큰 관리를 참조하십시오.
-
GitHub 구성에서는 구성이 필수입니다.
-
버전 제어 작업을 수행하려면 프로젝트가 있는 공간에서 편집할 수 있음 역할이 필요합니다.
-
버전 제어를 사용하려면 먼저 만든 GitHub 사용자로 GitHub에 연결하기 위한 구성을 설정해야 합니다.
-
GitHub에 연결을 설정하면 프로젝트를 리포지토리에 연결할 수 있습니다.
GitHub에 구성 설정
버전 제어를 사용하여 작업하려는 모든 사용자는 GitHub 사용자 계정을 사용하여 GitHub에 연결하기 위한 구성을 설정해야 합니다.
프로젝트에서 GitHub를 구성할 수 있습니다. 시작하기에 따라 준비했는지 확인합니다.
-
을 클릭한 다음 GitHub 구성을 클릭합니다.
-
시작하기에 설명된 조직 및 GitHub 개인 액세스 토큰을 사용하여 인증을 설정합니다.
-
확인을 클릭합니다.
이제 프로젝트를 리포지토리에 연결할 수 있습니다.
프로젝트를 리포지토리에 연결
버전 제어를 사용하려면 먼저 프로젝트를 리포지토리에 연결해야 합니다. GitHub에 연결을 설정했는지 확인합니다.
-
프로젝트에서 프로젝트의 ...를 클릭하고 버전 제어에 연결을 선택합니다.
-
프로젝트를 연결할 리포지토리를 선택합니다.
-
기본 디렉터리 경로를 추가합니다.
GitHub의 기존 프로젝트에 연결하려면 동일한 경로를 사용해야 합니다.
-
연결 후 프로젝트를 커밋하고 원격 리포지토리에 프로젝트를 푸시하도록 선택할 수 있습니다. 커밋 메시지 입력
커밋하고 푸시하지 않으면 작업 영역에 기본 분기가 만들어지지만 원격 리포지토리에는 만들어지지 않습니다.
-
연결을 클릭합니다.
이제 프로젝트가 선택한 리포지토리에 연결되었습니다. 이는 프로젝트 카드 하단에 , 리포지토리 이름 및 현재 분기로 표시됩니다.
프로젝트를 열면 제목 행에 버전 제어 옵션이 있는 GitHub 메뉴가 포함됩니다. 프로젝트 이름에는 현재 분기 이름도 추가됩니다.
버전 제어를 통한 프로젝트 개발
다양한 접근 방식으로 버전 제어를 사용할 수 있습니다.
-
기본 분기에서 직접 작업합니다. 이 기능은 주로 프로젝트의 변경 내용을 추적하려는 단일 개발자에게 적합하지만, 동기화되어 작업하는 개발자 그룹에서도 사용할 수 있습니다.
-
여러 개발자가 기여할 수 있는 분기 전략을 사용합니다. 또한, 새로운 기능이나 변경 내용을 서로 격리하기 위해 분기를 만들 수도 있습니다.
단일 개발자 프로젝트를 위한 간소화된 워크플로
프로젝트의 기본 분기에서 직접 작업할 수 있습니다. 이 방법은 더 간단하고 작업도 적지만, 여전히 변경 내용을 추적할 수 있습니다. 개발자가 두 명 이상인 경우 동기화를 유지하는 데 주의해야 합니다.
적용하려는 프로젝트에 변경 내용을 적용한 후에는 커밋하고 푸시하기만 하면 됩니다.
다중 개발자 프로젝트의 워크플로
이 워크플로는 프로젝트에 두 명 이상의 개발자가 작업하는 경우 또는 변경 내용을 격리하려는 경우 사용할 수 있습니다. 여기에는 다른 사용자와 공유할 수 있는 개발 분기를 만드는 것이 포함됩니다. 이 워크플로를 사용하면 개발자는 서로의 변경 내용을 추적하고, 변경 내용을 기본 분기에 병합할지 결정할 수 있습니다.
-
새 분기를 만듭니다
기본 분기에서 새 개발 분기를 만듭니다. 더 많은 사용자와 분기를 공유할 수 있습니다.
-
개발
프로젝트에 필요한 모든 변경을 완료합니다.
정보 메모데이터베이스 스키마와 연결은 버전 제어에서 유지되지 않습니다. -
원격 변경 내용 적용
다른 분기의 원격 변경 내용을 작업 영역에 적용하여 다른 분기의 변경 내용으로 최신 상태를 유지합니다. 이는 충돌하는 변경 내용을 피하거나 완화하는 데 도움이 됩니다.
충돌할 수 있는 변경 내용이 포함된 두 개의 분기가 있는 경우 해결책은 다음과 같습니다.
-
두 작업 영역에 변경 내용을 커밋합니다.
-
두 개의 분기를 기본으로 병합합니다.
-
원격 변경 내용을 다시 적용합니다.
-
-
커밋 및 푸시
변경 내용을 개발 분기에 커밋하고 푸시합니다. 모든 개체가 푸시되므로 커밋하기 전에 프로젝트의 유효성을 검사하는 것이 좋습니다.
-
풀 리퀘스트를 열고 병합합니다.
개발 준비가 되면 작업 영역의 변경 내용을 기본 분기에 병합할 때입니다. 개발 분기를 기본 분기에 병합하려면 GitHub에서 풀 리퀘스트를 열어야 합니다. 기본 분기에 병합될 분기에 대한 승인을 설정할 수 있습니다. 자세한 내용은 GitHub 풀 요청 문서를 참조하십시오.
새 분기 만들기
-
프로젝트에서 프로젝트의 ...를 클릭하고 새 분기 만들기를 선택합니다.
프로젝트는 버전 제어에 연결되어야 합니다.
-
기본 분기에서 분기를 만들도록 선택합니다.
-
분기 이름을 입력합니다.
-
모든 스키마에 대한 분기 접두사에서 프로젝트의 모든 스키마에 추가할 접두사를 설정합니다. 이를 통해 모든 스키마의 이름을 고유하게 지정하여 이름 충돌을 피할 수 있습니다.
-
만들기를 클릭합니다.
기본에서 새로운 분기가 만들어지고 리포지토리에서 체크아웃됩니다. 해당 분기에는 모든 작업이 '신규' 상태로 된 새 버전의 프로젝트가 포함되어 있습니다. 즉, 준비되지 않아 어떠한 데이터도 포함하지 않습니다.
원격 변경 내용 적용
원격 리포지토리의 변경 내용을 작업 영역에 적용할 수 있습니다. 이는 Qlik Cloud 통합 버전 제어 외부(예: GitHub 또는 다른 도구)에서 만들어진 변경 내용일 수 있습니다. 이렇게 하면 변경 내용을 분기에 커밋하고 푸시할 때 충돌을 피하는 데 도움이 됩니다.
-
프로젝트에서 프로젝트의 ...를 클릭하고 원격 변경 내용 적용을 선택합니다.
변경 내용이 발견되면 작업 영역에 원격 변경 내용 적용 대화 상자가 표시됩니다.
-
이제 변경 내용을 적용할 작업을 선택하고 변경 내용을 검사할 수 있습니다. 각 변경 내용에 대해 원격 버전 또는 작업 영역의 버전 중에서 사용할 버전을 선택할 수 있습니다.
-
원격 변경 내용 적용을 클릭합니다.
변경 내용에 새로운 데이터 작업이 포함된 경우 소스 연결과 대상 연결을 추가해야 합니다.
커밋 및 푸시
변경 내용을 분기에 커밋하고 푸시할 수 있습니다. 작업 영역에 적용되지 않는 원격 변경 내용은 덮어쓸 수 있으므로 커밋하고 푸시하기 전에 원격 변경 내용 적용을 수행해야 합니다.
-
프로젝트에서 프로젝트의 ...를 클릭하고 커밋 및 푸시를 선택합니다.
변경 내용이 발견되면 커밋 및 푸시 대화 상자가 표시됩니다.
-
변경 내용을 추적하는 데 도움이 되는 커밋 메시지를 추가합니다.
-
커밋 및 푸시를 클릭합니다.
분기 삭제
변경 내용을 기본 분기에 병합한 후에 분기를 삭제할 수 있습니다.
-
프로젝트에서 삭제할 분기에서 ...를 클릭하고 분기 삭제를 선택합니다.
버전 제어에서 원격 분기를 삭제하도록 선택할 수도 있습니다.
커밋되지 않은 변경 내용이 있는 경우 분기를 삭제할 때 이러한 변경 내용이 손실되는지 확인해야 합니다.
프로젝트의 버전 제어 제거
프로젝트를 버전 제어에서 분리할 수 있습니다. 기존 분기가 있는 경우 프로젝트 연결을 끊기 전에 해당 분기를 삭제해야 합니다.
-
프로젝트에서 연결을 끊을 프로젝트의 ...를 클릭하고 GitHub에서 연결 끊기를 선택합니다.
다른 공간이나 테넌트와 프로젝트 공유
동일한 테넌트나 다른 테넌트의 다른 공간에 프로젝트 버전을 공유할 수 있습니다. 이 기능은 두 개의 환경(예: 개발용 환경 및 운영용 환경)을 만들 때 유용합니다.
-
원래 프로젝트와 같은 이름으로 새 프로젝트를 만듭니다.
동일한 사용 사례와 플랫폼 유형을 설정합니다. 다양한 연결을 사용할 수 있습니다.
-
새 프로젝트를 원래 프로젝트와 동일한 리포지토리 및 기본 디렉터리 경로에 연결합니다.
정보 메모커밋 및 푸시 옵션을 선택하지 마십시오. -
플랫폼 연결이 원래 프로젝트와 동일한 대상을 가리키는 경우 데이터 작업의 데이터베이스나 스키마를 변경해야 합니다. 모든 작업의 스키마를 변경하는 한 가지 방법은 원격 변경 내용을 적용하기 전에 메타데이터 프로젝트 설정에서 모든 스키마의 접두사를 변경하는 것입니다. 이렇게 하면 모든 작업이 이 접두사로 만들어집니다.
-
모든 파일을 선택하여 원격 변경 내용을 적용합니다.
-
모든 랜딩 작업에 대해 누락된 소스 연결을 추가합니다.
랜딩 작업에서 소스 데이터 선택을 클릭하고 연결을 선택한 후 저장을 클릭합니다.
정보 메모연결은 동일한 유형의 소스에서 이루어져야 하며 원래 프로젝트와 동일한 이름의 테이블을 가리켜야 합니다. -
모든 복제 작업에 대해 누락된 소스 및 대상 연결을 추가합니다.
이렇게 하면 또 다른 작업 영역이 만들어집니다. 작업 영역 중 하나에서 프로젝트를 변경한 다음, 원격 변경 내용 적용을 사용하여 다른 작업 영역을 동기화할 수 있습니다.
보안 고려 사항
Qlik Talend Data Integration 및 GitHub 간에 동기화된 보안 구성을 유지해야 합니다.
-
Qlik Talend Data Integration 권한은 여러 프로젝트가 포함될 수 있는 공간을 기반으로 합니다. GitHub에서 권한은 여러 프로젝트를 포함할 수 있는 리포지토리를 기반으로 결정됩니다. 이를 정렬하고 한 공간에 있는 모든 프로젝트를 동일한 리포지토리에 연결하는 것이 가장 좋습니다.
-
Qlik Talend Data Integration 및 GitHub은 사용자에게 다른 권한과 역할을 사용한다는 점에 유의해야 합니다.
모범 사례
버전 제어를 사용하여 프로젝트 작업 시 참고할 수 있는 몇 가지 모범 사례는 다음과 같습니다.
-
GitHub의 리포지토리를 설명하는 README 파일을 추가합니다. 자세한 내용은 README 정보를 참조하십시오.
-
유효하고 실행이 검증된 프로젝트만 커밋합니다.
준비되거나 변환되지 않은 랜딩 작업 또는 등록된 데이터 작업이 있는 프로젝트를 추가하는 경우 소스 열은 아직 포함되지 않습니다. 작업이 준비되고 변환되면 소스 열이 추가됩니다.
-
복제 프로젝트에 대한 분기를 만들 때, 기본적으로 분기가 동일한 대상을 사용한다는 점을 알고 있어야 합니다. 즉, 분기에서 실행 중인 작업은 기본 버전의 데이터를 재정의할 수 있습니다. 데이터 손실을 방지하려면 기본 버전과 충돌하지 않도록 분기의 대상 설정을 변경합니다.
-
분기를 만들면 작업 영역에 아직 적용되지 않은 원격 변경 내용이 있을 수 있습니다. 원격 변경 내용을 취소하려는 경우가 아니면 분기를 만들기 전이나 후에 원격 변경 내용을 적용합니다.
제한 사항
-
분기가 있는 경우 버전 제어를 사용하여 프로젝트를 연결 해제하거나 삭제할 수 없습니다. 프로젝트를 연결 해제하거나 삭제하려면 먼저 분기를 삭제해야 합니다.
-
버전 제어를 사용하여 프로젝트의 이름을 바꿀 수 없습니다.
-
테넌트를 삭제해도 GitHub의 버전 제어를 통해 저장된 개체는 삭제되지 않습니다. 이러한 개체는 수동으로 삭제해야 합니다.
-
많은 프로젝트에서 리포지토리를 사용하거나 Qlik Talend Data Integration에 저장되지 않은 많은 파일을 포함하는 경우 성능이 저하될 수 있습니다.
-
데이터베이스 스키마와 연결은 버전 제어에서 유지되지 않습니다.
-
GitHub의 세분화된 개인 액세스 토큰은 지원되지 않습니다.
-
두 개의 프로젝트가 같은 리포지토리에 있더라도, 하나의 분기(기본 분기 제외)는 리포지토리당 하나의 프로젝트에서만 사용할 수 있습니다.
-
다른 대상 플랫폼을 사용하는 프로젝트에서 원격 변경 내용을 적용할 수 없습니다. 예를 들어, Snowflake에서 프로젝트에 변경 내용을 커밋하는 경우 Databricks 프로젝트에 해당 변경 내용을 적용할 수 없습니다.