Step Functions를 향한 여정 — 2부: DAGs (방향성 비순환 그래프)의 힘

On the way to step functions: it is actually a DAG

작성자
발행일
2026년 01월 17일

핵심 요약

  • 1 명령형 호출의 한계를 지적하며, 지연된 계산 엔진 및 워크플로우 오케스트레이션에 DAG(방향성 비순환 그래프)가 효과적인 해결책임을 제시합니다.
  • 2 VFX 소프트웨어(Nuke, Blender)와 인프라 관리 도구(Terraform)에서 DAG가 안정적인 캐싱, 결과 재사용, 그리고 의존성 관리에 어떻게 활용되는지 상세히 설명합니다.
  • 3 기존 명령형 코드를 DAG 노드와 연결로 변환하여 병렬 처리 및 유연한 구조를 구현하고, 순차적 단계 또한 DAG의 부분집합으로 설계할 수 있음을 보여줍니다.

도입

이 글은 "Step Functions를 향한 여정" 시리즈의 두 번째 글로, 이전 글에서 다루었던 명령형 호출의 본질적인 한계와 비현실적인 '마샬링 가능한 스택'에 대한 열망을 이어받습니다. 저자는 이러한 한계를 극복하기 위한 대안으로 DAG(방향성 비순환 그래프)의 개념을 제시합니다. 특히 Rails 사용자를 위한 `geneva_drive` 저장소를 언급하며, DAG가 어떻게 복잡한 워크플로우와 계산을 효율적으로 관리할 수 있는지에 대한 탐색의 서막을 엽니다.

DAG는 시각 효과 소프트웨어부터 클라우드 워크로드에 이르기까지 광범위하게 활용되는 강력한 개념입니다.

DAG의 광범위한 적용 사례

  • 시각 효과(VFX) 소프트웨어: DaVinci Resolve, Nuke, Houdini 등 대부분의 전문 VFX 앱은 DAG를 기반으로 합니다. 이들은 본질적으로 지연된 계산 엔진으로, 노드 뒤에 계산을 배치하여 결과의 안정화, 캐싱, 재사용을 가능하게 합니다. 특정 시드 값을 통해 노드의 멱등성(Idempotency)을 확보하여 동일한 출력을 보장합니다.

  • 인프라 관리(Terraform): Terraform은 리소스 간의 의존성 그래프를 구축하고 위상 정렬(topological sort)을 통해 리소스를 처리합니다. random_id와 같은 리소스도 Terraform의 상태(state)를 통해 계산 결과를 캐시하고 재사용함으로써 멱등성을 유지합니다.

명령형 워크플로우를 DAG로 전환

기존의 authorise_payment, check_funds와 같은 비동기 명령형 호출은 DAG 노드와 연결로 변환될 수 있습니다. 예를 들어, authorise_paymentcheck_funds 노드를 생성하고, 이 둘의 완료를 기다리는 wait_for_all_inputs 노드를 연결한 뒤, transfer_funds 노드를 연결하는 방식으로 워크플로우를 구성할 수 있습니다. 이러한 DAG 구조는 위상 정렬을 통해 여러 작업을 병렬로 실행하며 의존성을 효율적으로 해결합니다.

체크포인팅과 단계적 설계

DAG 시스템에서 체크포인팅(checkpointing)CacheHash 객체를 사용하여 노드와 입력의 해시 값을 결합한 캐시 키를 생성함으로써 구현됩니다. 입력 변경 시 캐시를 무효화하여 안정적인 계산을 보장합니다. 순차적인 “단계(steps)” 워크플로우는 DAG의 단순화된 형태로 볼 수 있습니다. 이는 병렬 실행 능력은 상실되지만, “일부 실패” 상황이나 포크-조인 문제에 대한 걱정 없이 순차적으로 해결되는 이점을 제공합니다. 이 접근 방식은 초기에는 단순한 스텝으로 시작하여, 필요에 따라 DAG의 복잡한 기능을 추가할 수 있는 유연성을 제공합니다.

결론

결론적으로, 대부분의 '지속 가능한 실행(durable execution)' 시스템은 본질적으로 '워크플로우'라는 이름 아래 DAG 구조를 기반으로 구축됩니다. 워크플로우 시스템 개발자의 정교함에 따라 DAG라는 사실을 드러내거나 숨길 수 있지만, 근본적인 작동 방식은 동일합니다. 다음 3부에서는 이러한 두 가지 세계, 즉 DAG와 그 노드들이 어떻게 상호작용하는지에 대해 더 깊이 탐구할 예정입니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!