저장소 분할

이 문서에서는 Dataform 저장소를 분할하고 교차 저장소 종속 항목을 관리하는 전략을 설명합니다.

저장소는 Dataform의 핵심 단위입니다. 저장소에는 SQL 워크플로를 구성하는 모든 SQLX 및 JavaScript 파일은 물론 Dataform 구성 파일과 패키지도 저장됩니다. SQL 워크플로를 단일 저장소에 저장하거나 여러 저장소 간에 SQL 워크플로를 분할할 수 있습니다.

Dataform에서 저장소를 분할하면 다음과 같은 이점이 있습니다.

  • 컴파일 리소스 사용량에 대한 Dataform 한도 준수. 대규모 SQL 워크플로를 여러 개의 작은 저장소로 분할하면 컴파일 리소스에 대한 Dataform 한도를 초과할 위험이 줄어듭니다.
  • 세밀한 프로세스. SQL 워크플로의 각 분할 프래그먼트와 개발팀마다 지속적 통합(CI) 규칙과 같은 프로세스를 개별적으로 설정할 수 있습니다.
  • 세분화된 권한. SQL 워크플로의 전반적인 보안을 개선하기 위해 SQL 워크플로의 각 분할 프래그먼트와 개발팀에 개별적으로 권한을 설정할 수 있습니다.
  • SQL 워크플로의 각 분할 프래그먼트에서 작업하는 공동작업자 수를 최소화하여 공동작업을 개선합니다.
  • 코드베이스 가독성 향상. 대규모 SQL 워크플로를 구성하는 파일을 여러 저장소로 분할하면 전체 SQL 워크플로를 한 번에 탐색하는 것보다 각 저장소를 개별적으로 탐색하는 것이 더 쉽습니다.
  • 전체 SQL 워크플로 실행과 비교하여 SQL 워크플로의 각 분할 프래그먼트의 워크플로 실행 속도를 높입니다.

Dataform에서 저장소를 분할하면 다음과 같은 단점이 있습니다.

  • 각 Dataform 저장소와 해당 Git 저장소에 필요한 커스텀 지속적 통합/지속적 개발(CI/CD) 구성입니다.
  • 각 Dataform 저장소 및 해당 Git 저장소에 필요한 커스텀 예약 구성입니다.
  • 여러 저장소에 있는 워크플로 객체 간에 종속 항목을 관리하기가 어렵습니다.
  • 여러 저장소 간에 분할된 SQL 워크플로의 포괄적인 방향성 비순환 그래프(DAG) 시각화가 부족합니다. 각 저장소에서 생성된 DAG는 전체 SQL 워크플로의 일부만 나타냅니다.

저장소 분할 전략

저장소를 분할할 때 상위 SQL 워크플로를 구성하는 파일을 Dataform의 별도 저장소에 있는 더 작은 하위 SQL 워크플로로 나눕니다.

다음 방법 중 하나로 저장소를 분할할 수 있습니다.

  • 개발팀당 저장소 1개
  • 도메인당 저장소 1개(예: 영업, 마케팅, 물류)
  • 중앙 저장소 1개와 도메인당 저장소 1개가 중앙 저장소의 콘텐츠를 데이터 소스로 사용합니다.

서드 파티 Git 호스팅 플랫폼에서 상위 SQL 워크플로를 저장하려면 하위 워크플로가 포함된 각각의 별도 저장소를 전용 서드 파티 Git 저장소에 개별적으로 연결해야 합니다.

저장소 간 종속 항목 관리

저장소를 분할하는 가장 효율적인 방법은 상위 SQL 워크플로를 독립 실행형 하위 SQL 워크플로로 분할하여 독립적인 저장소를 만드는 것입니다. 독립 저장소는 다른 저장소 콘텐츠를 데이터 소스로 사용하지 않습니다. 이 방식에서는 교차 저장소 종속 항목을 관리할 필요가 없습니다.

교차 저장소 종속 항목을 피할 수 없는 경우 저장소를 이전 저장소에 종속되고 후속 저장소의 데이터 소스가 되는 연속된 저장소로 분할하여 이를 관리할 수 있습니다. 연속된 저장소와 해당 종속 항목은 상위 SQL 워크플로의 구조를 가장 잘 반영해야 합니다.

Dataform 데이터 소스 선언을 통해 저장소 간에 종속 항목을 만들 수 있습니다. 다른 Dataform 저장소의 BigQuery 테이블 유형을 현재 수정된 저장소의 데이터 소스로 선언할 수 있습니다. 데이터 소스를 선언한 후에는 다른 Dataform SQL 워크플로 객체처럼 참조하고 이를 사용하여 SQL 워크플로를 개발할 수 있습니다.

교차 저장소 종속 항목이 있는 저장소 간에 SQL 워크플로 분할 실행을 예약할 때는 교차 저장소 종속 항목 순서에 따라 저장소를 하나씩 실행해야 합니다.

양방향 종속 항목을 사용하여 저장소를 저장소 그룹으로 분할하지 않는 것이 좋습니다. 저장소가 다른 저장소의 데이터 소스이고 해당 저장소를 데이터 소스로 사용하는 경우 저장소 간의 양방향 종속 항목이 발생합니다. 저장소 간의 양방향 종속 항목은 상위 SQL 워크플로의 예약과 실행은 물론 개발 프로세스를 복잡하게 만듭니다.

다음 단계