파이프라인이 가질 수 있는 속성 중 제일 값진 것
Idempotent 파이프라인은 한 번을 돌리든, 두 번이든, 스무 번이든 같은 결과를 만들어. 이 속성이 생기는 순간 디버깅이 더는 무섭지 않아 — "그냥 다시 돌려" 가 희망 섞인 기도가 아니라 진짜 답이 되거든. 없으면? Retry 할 때마다 주사위를 굴리는 거야.
파이프라인을 idempotent 하게 만드는 네 가지 실전 패턴
- Raw lake 에선 path 에 불변성을 새겨.
raw/orders/2026/04/30/run_20260430120000.json.gz— run timestamp 가 path 자체에 들어가. 두 번째 run 은 옆자리에 새 파일을 쓰고, downstream stage 는 사전순 최신을 읽어. - 분석 테이블에선 partition replace.
warehouse/orders/date=2026-04-30/. 다시 돌리면 그 partition 을 통째로 갈아 끼워 (stage 하고 swap — lesson 3 에서 뜯어본 그 복구 가능한 두-rename 순서로). - OLTP 모양 목적지엔 primary key 로 upsert.
INSERT ... ON CONFLICT (order_id) DO UPDATE. 같은 key 는 덮어써지고, 다시 돌린 run 은 결과적으로 no-op 이야. - 데이터가 아닌 side effect — 이메일, 웹훅, 알림 — 엔 dedup key. "2026-04-30 의 Q1 매출 임계 알림" 같은 key 와 추적 테이블 하나면 돼.