제품 사이의 의존 관계
연결된 제품(Linked products)은 상위 제품의 출력을 하위 제품의 입력에 대응시킵니다. 업무를 작은 제품으로 나누어 별도로 개선하고, 설치 때 중복 콘텐츠를 줄이며 버전 의존 관계를 관리할 수 있습니다.
데이터 정리 파이프라인이 출력한 데이터셋을 온톨로지 제품의 입력으로 연결하는 것이 한 예입니다.
자동 연결의 기준
자동 연결은 원천 엔터티를 기준으로 합니다. Workshop이 Airplane 객체 유형을 사용한다면 정확히 같은 Airplane 리소스를 출력으로 포함한 제품을 찾습니다. 이름이나 스키마가 비슷하다는 것만으로 자동 연결하지 않습니다.
연결은 하위 제품을 패키징할 때 계산합니다. 기본으로 같은 스토어에서 찾으며, 스토어 연결을 설정하면 다른 스토어도 고려합니다. 상위 제품을 새 출력으로 다시 패키징했다면 하위 제품도 다시 패키징하여 매핑을 재생성해야 합니다.
초안에서 어떤 제품이 입력을 제공하는지와 두 제품의 매핑을 볼 수 있습니다.
Inputs의 Group by linked products로 상위 제품별 입력을 묶습니다.
연결을 찾는 네 경로
| 경로 | 기준 |
|---|---|
| 같은 스토어 | 동일 원천 엔터티를 출력과 입력에서 참조 |
| 스토어 간 | 명시한 단방향 스토어 연결을 통해 상위 제품 검색 |
| 설치본 기반 | 하위 제품이 사용한 리소스가 기존 상위 설치본에서 나온 출력인지 추적 |
| 수동 연결 | 다른 리소스라도 호환되는 출력을 제작자가 직접 입력에 매핑 |
수동 연결
하위 초안의 Linked products에서 Add manual link를 선택합니다.
상위 제품을 고르고 각 입력을 그 제품의 출력에 연결합니다. 예의 Supply Chain Resilience는 가상 데이터셋으로 개발했지만 배포 때 Restock Ingest Pipeline의 출력 데이터셋을 사용하도록 연결합니다.
Save로 저장하며 호환되지 않으면 대화상자 위에 오류와 Error details가 나타납니다. 예를 들어 함수가 받는 인수가 다르면 출력과 입력을 매핑할 수 없습니다.
같은 상위 제품에 자동 연결이 이미 있으면 수동 연결이 이를 덮어씁니다. 자동 연결과 달리 수동 매핑은 제품 정의가 바뀌어도 동적으로 수정하지 않으므로 제작자가 항목을 추가하거나 제거해야 합니다.
호환성을 깨는 변경
출력 제거나 데이터셋 열 자료형 변경처럼 하위 업무를 깨뜨리는 변경은 주 버전 증가로 표시하는 방식을 권장합니다. 예를 들어 2.0.0에서 3.0.0으로 바꿉니다.
주 버전을 올리면 기존 하위 연결 제품과 호환되지 않으며, 다시 호환시키려면 모든 하위 연결 제품을 재패키징해야 합니다. 하위 소비 로직도 바뀐 열 유형이나 제거된 출력에 맞게 수정합니다.
비호환 변경인데 부 버전만 올리면 설치자가 연결 제품을 선택할 수 있어도 설치 오류가 날 수 있습니다. 상위부터 하위 순서로 패키징하거나 여러 제품을 같은 초안에서 게시하여 연결을 새로 계산합니다.
기존 제품 분할
큰 제품을 파이프라인과 앱 등 작은 제품으로 나누면 각각 갱신할 수 있습니다. 다만 새로 나눈 제품을 설치할 때 기존 큰 제품의 설치 리소스를 자동 재사용하지 않고 새 리소스를 만듭니다. 기존 설치에 중복 리소스가 생길 수 있음을 고려해야 합니다.
스토어 간 연결
스토어 연결은 단방향입니다. 하위 제품을 가진 스토어가 다른 스토어의 제품을 상위 후보로 고려하도록 구성합니다.
하위 스토어의 Store settings에서 연결합니다. 연결 대상 스토어에는 marketplace:link-to-local-marketplace 작업 권한이 필요하며 기본적으로 Viewer에게 부여합니다.
설치본 기반 연결
원래 패키징한 원천이 아니라 기존 설치본의 출력을 기반으로 하위 제품을 개발하는 경우가 있습니다. DevOps는 그 출력이 어느 상위 제품에서 온 것인지 추적하여 연결 제품 관계를 자동으로 만듭니다.
설치자는 기존 설치본을 외부 참조하거나 함께 새로 설치하는 Marketplace 경로를 사용할 수 있습니다.