Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

배치, 증분, 스트리밍 파이프라인 선택

파이프라인 유형은 데이터가 바뀔 때 얼마나 다시 계산할지와 연산을 언제 실행할지를 결정합니다. 선택 기준은 종단 간 지연, 작성 및 유지보수 복잡도, 연산 사용량과 향후 데이터 증가량입니다.

기준배치증분스트리밍
지연높음낮음매우 낮음
복잡도낮음중간높음
연산 비용중간낮음높음
데이터 증가 대응낮음높음높음

이 비교는 일반적인 경향입니다. 작은 배치는 지연과 비용이 낮을 수 있고, 연산 종류와 실제 입력 규모에 따라 차이가 달라집니다.

배치

배치 파이프라인은 입력 변경으로 갱신이 필요한 데이터셋을 실행할 때 전체 데이터로 다시 계산합니다. 필터, 조인과 집계 같은 표 연산을 이해하면 시작할 수 있으며, SQL을 비롯한 여러 언어와 도구를 사용할 수 있습니다. 전체 재계산이므로 처리 방식이 단순하고 유지보수가 쉽습니다.

같은 규모의 전체 입력을 반복 처리하는 동안에는 처리 시간이 비교적 일정하지만 데이터가 늘면 지연과 비용도 증가합니다. 마지막 동기화 이후 바뀌지 않은 행까지 다시 처리하기 때문입니다. 대량 이벤트가 계속 쌓이는 입력에서는 비용과 실행 시간이 감당하기 어려워질 수 있습니다.

대부분의 업무는 배치로 결과의 유효성을 먼저 확인한 뒤 필요한 부분을 증분화하는 방식으로 시작할 수 있습니다. 데이터가 작다면 배치를 계속 사용해도 됩니다. 수천만 행 미만은 이런 판단에 사용할 수 있는 규모 예시이며, 행의 폭과 연산 비용을 무시한 고정 처리 한도는 아닙니다.

나중에 코드 기반 증분 처리로 바꿀 가능성이 높다면 Python 또는 Java로 작성하면 해당 증분 API를 이어서 사용할 수 있습니다.

증분

증분 파이프라인은 마지막 빌드 이후 새로 추가되거나 변경된 행 또는 파일을 처리합니다. 큰 데이터셋의 대부분이 바뀌지 않는 상황에서 전체 재계산을 줄일 수 있어 이벤트 데이터에 적합합니다. 코드 기반 증분 API는 Python과 Java에서 제공하며, Pipeline Builder에도 증분 계산 모드가 있습니다.

지연을 분 단위로 낮출 수 있고 대규모 데이터에서는 연산량도 줄일 수 있습니다. 대신 다음 동작을 이해해야 합니다.

  • 입력 변경이 데이터셋의 어떤 트랜잭션으로 들어오는지
  • 입력이 스냅샷으로 대체되는 등 비증분 방식으로 갱신되었을 때 어떻게 처리할지
  • 출력과 내부 상태를 누적하면서 성능을 어떻게 유지할지

변경분만 처리하더라도 상태 관리와 비증분 전환 때문에 작성 및 유지보수 복잡도는 중간 이상입니다. 새 데이터가 많아지는 환경에서는 이미 처리한 대량 데이터를 반복 계산하지 않는 이점이 큽니다.

스트리밍

스트리밍 파이프라인은 계속 실행되면서 Foundry에 들어오는 데이터를 처리합니다. 업무가 1분 미만의 지연을 강하게 요구하면 적합한 선택이 될 수 있습니다.

항상 입력을 처리할 연산 자원이 필요하므로 비용이 높아질 수 있습니다. 가동 상태와 복구를 관리해야 하고, 상태를 보관하는 연산은 데이터가 증가할 때 불안정해질 수 있어 주의가 필요합니다. 최신 데이터에 계속 의존하는 업무에서는 짧은 중단도 장애가 되므로 배치보다 실패 허용 범위가 좁습니다.

높은 처리량과 데이터 증가에 대응할 수 있지만, 지연 요구가 분 단위 증분 처리로 충족된다면 스트리밍의 운영 복잡도와 상시 비용을 추가할 필요가 있는지 먼저 검토합니다. 구성과 관측 항목은 스트리밍 운영에서 설명합니다.

Pipeline Builder의 Faster 실행

Faster는 배치와 증분 파이프라인의 실행 시간을 줄이는 Pipeline Builder 실행 방식입니다. Rust로 작성된 DataFusion 쿼리 엔진을 사용하며, Spark 기반 실행보다 시작 및 계산 부담을 줄일 수 있습니다. 특히 소규모와 중간 규모 데이터에서 이점이 있지만 효과는 데이터 크기만으로 결정되지 않으며 큰 데이터에도 이점이 있을 수 있습니다.

새 Faster 파이프라인을 만들거나 기존 배치 및 증분 파이프라인을 변환할 수 있습니다. Standard에서 제공하는 모든 표현식과 변환을 지원하는 것은 아니므로 실제 사용 연산의 지원 여부를 확인해야 합니다.

이 방식의 이전 이름은 lightweight pipelines였습니다. 이 명칭은 데이터 크기의 제한보다 실행에 필요한 시간과 자원을 줄인다는 의미였습니다. Python 변환의 단일 노드 실행 설정과는 사용 문맥을 구분합니다.