---
# System prepended metadata

title: n8n 고급 튜토리얼 1/8 - 소개 및 복잡한 데이터 흐름

---

* 워크플로 개요

  * 고급 과정 1편: “워크플로 빌더”에서 데이터 흐름과 분기/병합 전략 소개
  * 목표: 노드 실행 순서 이해, 분기 나누기·병합, 루프와 배치 처리, 레이트 리밋 대응

* 노드/분기 실행 순서

  * 기본 규칙: 분기는 **캔버스의 위→아래, 같은 높이면 좌→우** 순으로 **분기 단위로 완결 실행**

    * 예시 실행 순서: Weight → Weight 1 → Weight 2 → Weight 3 → Weight 4 → Weight 5
      -(workflow 옵션으로) **레벨별 실행**(각 분기의 1번째 노드→2번째 노드…)로 바꿀 수 있으나 **권장하지 않음**
  * 분기들이 서로 출력에 의존한다면 **실행 순서를 바꾸기보다 병합 후 사용**이 권장

* 데이터 분기(나누기)

  * **If 노드**: 조건(참/거짓)으로 두 분기
  * **Switch 노드**: n개의 분기 + **fallback**(미매칭용) 포함, 입력 아이템을 여러 분기로 분배 (예: 10개 → 1/1/1/7)
  * **하나의 노드에서 여러 출력으로 분기**: 해당 노드의 **모든 아이템이 각 분기로 복제 전달**(이후 상기 실행 순서 적용)
  * 사용 예: 동일 대상에 대해 **서로 다른 작업 집합**을 병렬로 적용하고 싶을 때

* 데이터 병합(Merge 노드)

  * 입력 **두 개**를 모두 대기 후 동작
  * 모드:

    * **Append**: 두 입력의 아이템을 **단순 연결**(유니온과 유사)
    * **Choose**: 입력1/입력2/둘 다 안 통과 중 **선택** → **동기화/게이트** 용도(둘 이상 분기 완료 여부 확인)
    * **Combine**:

      * **필드 기준**(키 매칭), **위치 기준**(인덱스 매칭), **모든 조합**(카테시안)
  * **SQL 조인 비유**:

    * INNER/OUTER: 매칭 유지/비유지 선택
    * **LEFT JOIN**: 입력1(첫 번째)을 확장
    * **RIGHT JOIN**: 입력2(두 번째)을 확장
    * **UNION**: Append

* 아이템 반복/배치 처리(Loop Over Items / Split In Batches)

  * 대부분의 노드는 **아이템당 1회** 실행 → 별도 루프 불필요
  * 유용한 상황:

    * **대량 데이터** 또는 **단일 입력→다수 출력** 노드(예: Google Sheets 읽기)
    * **레이트 리밋** 대응: 호출을 배치로 나누고 **Wait 노드**로 간격 조절

      * 예: 분당 10회, 10초당 100회 같은 제한 분산
  * 디버깅:

    * 출력 패널의 **Run**에서 **각 실행(run)/반복(iteration)** 추적
    * 루프 내 노드에 **초록 체크+숫자**: 현재 **반복 인덱스**
    * 각 노드의 **출력 아이템**을 반복별로 확인 가능

* 데모 ①: 연락처 분류 후 단순 재결합(Append)

  * 입력: 연락처 10개 → **If**로 personal(3) vs professional(7)
  * 각 분기에서 **Edit Fields**로 `email_type: personal/professional` 태그 부여
  * \*\*Merge(Append)\*\*로 재결합 → 다시 **10개** 아이템(위에서 personal이 먼저, 이어서 professional)

* 데모 ②: 회사 정보로 **풍부화(Enrichment)**(Combine)

  * 별도 시트: 회사 `website`, `country`(및 `domain` 등) 보유
  * **professional 분기**의 연락처를 회사 정보로 **확장**

    * 연락처에 **간단 JS**로 이메일에서 **`@` 뒤 도메인** 추출 → `domain` 필드 생성
    * 회사 시트에도 매칭 키(`domain` 등)가 존재
    * **Merge(Combine·필드 기준)** 설정:

      * 입력1: 회사 목록(예: `domain`/`website`/`country`)
      * 입력2: 태깅된 연락처(`domain`)
      * **유지 정책**: **입력2 전부 유지 + 입력1 데이터 추가**(LEFT JOIN)
  * 결과: 예) *Marcus Bennett* → *Quantum* 소속, `website`/`country`가 연락처에 합쳐짐
  * 실행 팁: 회사 목록 읽기는 **Execute Once**(한 번만 조회)로 설정

* 실무 팁 & 권장사항

  * **분기 의존성**이 있으면 **병합 후 사용**(실행 순서 강제 변경 지양)
  * **캔버스 배치**가 실제 **실행 순서**에 영향(위→아래, 좌→우)
  * **Switch의 fallback**을 활용해 미매칭 처리
  * 풍부화는 **필드 매칭(권장)**, 불가 시 **위치 매칭**이나 **API 호출+Combine**으로 대안 구성
  * 대량/외부 API 처리 시 **배치+대기**로 레이트 리밋 준수 및 안정성 확보
