Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

파이프라인 안정성을 위한 구성

운영 데이터셋을 만드는 로직은 버전으로 관리하여 회귀 문제와 변경 이력을 추적할 수 있어야 합니다. 분석 단계에 적합한 도구와 지속 운영할 파이프라인의 변경 절차를 구분합니다.

변경 이력과 검토

운영 파이프라인을 구성할 때에는 Contour나 Code Workbook보다 변경을 코드로 추적할 수 있는 Transforms를 사용하며 Python 또는 Java를 권장합니다. 탐색 단계에서 만든 기능이 운영의 일부가 되면 해당 로직을 코드로 옮깁니다.

Code Repositories의 운영 브랜치, 예를 들어 master를 보호하고 변경에 pull request와 코드 검토 승인을 요구합니다. Squash and merge를 사용하면 운영 브랜치의 커밋 이력을 변경 단위로 정리할 수 있습니다.

불안정한 입력의 검증 경계

Fusion에서 편집하거나 수동 업로드한 데이터는 열 변경, 해석 오류나 불완전한 데이터 때문에 하위 파이프라인을 실패시킬 수 있습니다. 이런 입력에는 검증 단계를 두고 통과한 데이터만 다음 단계가 읽도록 구성합니다.

가상 예시의 Fusion 데이터셋 앞에 Fusion Validated 출력을 둡니다. 이 출력은 입력을 검증한 뒤 그대로 복사하며 하위 파이프라인은 원본 대신 검증 결과를 읽습니다.

다음은 열이 적어도 8개이고 hours가 Spark의 int 자료형인지 검사하는 변환입니다. 경로는 예시이므로 실제 데이터셋 경로로 변경합니다.

from transforms.api import Input, Output, transform


@transform(
    input=Input("/MyProject/Fusion"),
    validated_input=Output("/MyProject/Fusion Validated"),
)
def validate(input, validated_input):
    data = input.dataframe()
    found_dtypes = data.dtypes
    if len(found_dtypes) < 8:
        raise ValueError("열 개수가 8개 미만입니다.")
    if ("hours", "int") not in found_dtypes:
        raise ValueError("hours 열은 int 자료형이어야 합니다.")
    validated_input.write_dataframe(data)

Fusion이 갱신될 때마다 Fusion Validated를 빌드하는 이벤트 기반 스케줄을 만듭니다. 하위 파이프라인에서는 검증 데이터셋을 입력으로 취급하고 그 스케줄의 빌드 대상에서는 제외합니다. 검증 출력에 상태 검사를 설치하고 실패하면 원본 갱신 담당자에게 연락할 수 있도록 책임을 정합니다. 수동 업로드에도 같은 패턴을 적용할 수 있습니다.

일반 빌드에서 Data Connection 동기화는 오케스트레이션상 최신 상태로 취급하므로 별도 제외 설정이 필요하지 않습니다. 계보 그래프의 빌드 색상만 보고 원천 수집이 다시 시작된다고 판단하면 안 됩니다. 스케줄에 force build를 명시하여 동기화 대상을 빌드하는 경우는 이 기본 동작과 구분합니다.

공유 리소스의 빌드 책임

여러 파이프라인이 같은 데이터셋을 빌드하면 실행 시점이 겹쳐 대기할 수 있습니다. 필요하면 공유 데이터셋을 독립 파이프라인으로 만들고 요구 주기에 맞게 빌드하여 다른 파이프라인의 입력으로 사용할 수 있습니다. 다만 스케줄과 운영 책임이 늘어나므로 꼭 필요한 경우에만 분리합니다.

더 적은 변경으로 해결하려면 기존 스케줄 하나만 공유 리소스를 빌드하게 하고 나머지 스케줄에서는 그 리소스를 빌드 제외 입력으로 취급합니다. 공유 데이터셋을 빌드할 소유 스케줄이 하나는 남아 있어야 합니다.

수동 실행도 운영 스케줄 사용

내보내기 단계만 다시 실행하는 등 파이프라인 일부만 실행하면 단계마다 서로 다른 최신 상태가 되어 파이프라인 전체의 건강 상태를 판단하기 어려워질 수 있습니다.

마지막 데이터셋에서 Full Build를 실행하면 운영 스케줄의 재시도, 실패 전략과 제외 설정을 그대로 사용하지 않을 수 있습니다. 운영 파이프라인을 수동으로 다시 실행할 때에는 Schedule 개요의 Run Schedule Now를 사용하여 스케줄에 구성한 조건으로 실행합니다.