금. 8월 8th, 2025

안녕하세요, 자동화와 노코드/로우코드에 관심 있는 모든 분들! 👋 n8n은 정말 강력한 도구죠. 복잡한 워크플로우를 코딩 없이 시각적으로 구축할 수 있게 해주지만, 때로는 그 “복잡성” 자체가 큰 장벽이 되기도 합니다. 수많은 노드들 사이에서 어떤 노드를 써야 할지 막막하고, 워크플로우가 꼬이는 경험… 다들 있으실 거예요.

걱정 마세요! 🙌 오늘은 n8n으로 복잡한 로직을 우아하게 처리할 수 있도록 도와주는 핵심 노드 5가지를 집중적으로 파헤쳐 볼 겁니다. 이 노드들만 제대로 이해하고 활용해도 여러분의 n8n 워크플로우 구축 능력은 한 단계 업그레이드될 거예요!


🚀 시작하며: 왜 핵심 노드에 집중해야 할까요?

n8n의 노드는 정말 많지만, 대부분의 복잡한 시나리오는 특정 몇몇 노드의 조합으로 해결할 수 있습니다. 마치 레고 블록의 기본 브릭들처럼, 이 핵심 노드들은 모든 복잡한 구조의 기본이 됩니다.

우리가 오늘 살펴볼 노드들은 다음과 같습니다:

  1. If 노드: 조건에 따라 흐름을 분기할 때 (Decision Making)
  2. Merge 노드: 분기된 흐름을 다시 합치거나 데이터를 병합할 때 (Flow & Data Unification)
  3. Set 노드: 데이터 항목을 추가, 수정, 삭제할 때 (Data Transformation – Simple)
  4. Code (Function) 노드: 복잡한 데이터 가공이나 커스텀 로직이 필요할 때 (Data Transformation – Advanced & Custom Logic)
  5. Try/Catch (Error Workflow): 워크플로우 에러를 우아하게 처리할 때 (Error Handling)
  6. (보너스) Split In Batches 노드: 대량의 데이터를 효율적으로 처리할 때 (Batch Processing)

자, 그럼 각 노드의 강력한 기능과 활용 예시를 자세히 알아볼까요? 💡


1. 복잡한 로직의 핵심 – If 노드와 Merge 노드

워크플로우가 단순히 순차적으로 진행되지 않고, 특정 조건에 따라 다른 경로로 진행되어야 할 때가 있습니다. 이때 If 노드와 Merge 노드가 빛을 발합니다.

🎯 If 노드: 조건부 분기점

If 노드는 입력된 데이터가 특정 조건을 만족하는지에 따라 워크플로우의 흐름을 두 가지(True/False)로 나누는 역할을 합니다.

  • 언제 사용할까요?

    • 사용자의 등급(VIP/일반)에 따라 다른 이메일을 보낼 때 📧
    • 주문 금액이 특정 기준을 넘을 때만 할인 쿠폰을 발행할 때 💰
    • API 응답 상태 코드에 따라 성공/실패 로직을 분리할 때 ✅❌
    • 데이터 유효성을 검사하여 올바른 데이터만 다음 단계로 넘길 때 📝
  • 사용 예시: 여러분은 웹사이트에서 문의가 들어오면 n8n으로 자동 처리하려고 합니다. 이때 문의 내용에 “긴급”이라는 키워드가 포함되어 있으면 담당자에게 바로 알림을 보내고, 아니면 일반 문의로 분류하여 데이터베이스에 저장하고 싶습니다.

    1. Trigger 노드: Webhook 노드로 문의 데이터를 받습니다.
    2. If 노드:
      • Condition: $json["message"].includes("긴급")
      • message 필드에 “긴급”이라는 단어가 포함되어 있으면 True 브랜치로, 아니면 False 브랜치로 흐름을 나눕니다.
    3. True 브랜치: Slack 노드를 통해 담당자에게 즉시 알림을 보냅니다. 🔔
    4. False 브랜치: Google Sheets 노드를 통해 일반 문의 시트에 저장합니다. 📊

    이렇게 If 노드 하나로 문의 유형에 따른 맞춤형 처리가 가능해집니다!

🤝 Merge 노드: 분기된 흐름 합치기

Merge 노드는 If 노드 등으로 분기되었던 여러 브랜치를 다시 하나로 합치거나, 다른 노드에서 생성된 데이터를 하나로 병합하는 데 사용됩니다.

  • 언제 사용할까요?

    • If 노드의 True/False 브랜치에서 각각 다른 작업을 수행한 후, 다음 공통 작업으로 넘어가기 위해 흐름을 합칠 때 🔄
    • 두 개의 다른 API에서 가져온 데이터를 하나의 JSON 객체로 합쳐서 다음 단계에 전달할 때 🧩
    • 리스트에 여러 항목을 추가한 후 최종 리스트를 만들 때 ➕
  • 사용 예시: 위의 If 노드 예시에서, 긴급 문의든 일반 문의든 처리가 끝난 후에는 “문의 처리 완료” 이메일을 고객에게 보내야 한다고 가정해 봅시다.

    1. (If 노드 이후) Slack 노드 (True 브랜치)와 Google Sheets 노드 (False 브랜치)의 다음 노드로 Merge 노드를 연결합니다.
    2. Merge 노드 설정:
      • Mode: Merge By Index 또는 Combine (이 경우엔 보통 Combine이 적합)
      • 각 브랜치에서 넘어온 데이터를 Merge 노드가 하나로 합쳐서 다음 노드로 전달합니다.
    3. 다음 노드: Email 노드를 연결하여 고객에게 “문의 처리 완료” 이메일을 보냅니다. ✅

    이렇게 Merge 노드를 사용하면 복잡한 분기 로직 후에도 깔끔하게 워크플로우를 이어갈 수 있습니다.


2. 데이터 가공의 마법사 – Set 노드와 Code 노드

자동화의 핵심은 데이터를 원하는 형태로 가공하고 처리하는 것입니다. Set 노드와 Code 노드는 이 역할을 수행하는 데 필수적입니다.

🏷️ Set 노드: 간편한 데이터 수정 및 추가

Set 노드는 기존 데이터 항목의 값을 변경하거나, 새로운 데이터 항목을 추가하거나, 불필요한 항목을 제거하는 데 사용됩니다. 복잡하지 않은 데이터 조작에 최적입니다.

  • 언제 사용할까요?

    • 특정 필드 이름을 변경할 때 (예: user_name -> userName) ✏️
    • 모든 데이터에 현재 시간을 추가하고 싶을 때 ⏰
    • 특정 고정 값을 모든 데이터 항목에 추가할 때 (예: status: "processed") 🏷️
    • 민감한 정보를 삭제하고 싶을 때 🚫
  • 사용 예시: 여러분은 고객 정보를 받아 이메일을 보내려고 합니다. 그런데 고객 이름이 “first_name”, “last_name”으로 분리되어 있고, 이메일 주소는 email_address로 되어 있습니다. 이메일 템플릿에 사용할 수 있도록 fullNameemail이라는 필드를 만들고 싶습니다.

    1. Trigger 노드: 고객 데이터를 받습니다. (예: { "first_name": "김", "last_name": "철수", "email_address": "chulsoo@example.com" })
    2. Set 노드:
      • Mode: Merge
      • Value:
        • fullName: {{ $json["first_name"] }} {{ $json["last_name"] }}
        • email: {{ $json["email_address"] }}
    3. 결과: { "first_name": "김", "last_name": "철수", "email_address": "chulsoo@example.com", "fullName": "김 철수", "email": "chulsoo@example.com" } 이렇게 원하는 형식으로 데이터가 가공됩니다. ✨

👨‍💻 Code (Function) 노드: 무한한 데이터 가공의 자유

Code 노드는 JavaScript 코드를 직접 작성하여 데이터를 가공하거나, 복잡한 로직을 구현할 수 있게 해주는 궁극의 노드입니다. n8n 내장 노드로는 해결하기 어려운 모든 문제를 해결할 수 있는 “만능 칼”과 같습니다.

  • 언제 사용할까요?

    • 매우 복잡한 조건부 로직이나 계산이 필요할 때 🧮
    • 여러 개의 중첩된 JSON 데이터를 복잡하게 변환해야 할 때 🌳
    • 외부 라이브러리(Axios, Lodash 등)를 사용하여 특정 작업을 수행해야 할 때 🌐
    • 동적으로 URL을 생성하거나, 복잡한 문자열 처리가 필요할 때 🔗
    • 배열 내부의 항목들을 반복하며 처리해야 할 때 🔄
  • 사용 예시: 여러분은 쇼핑몰 주문 데이터를 처리하는데, 각 주문에 포함된 상품들의 총 가격을 계산하고, 특정 조건에 따라 배송비를 다르게 적용해야 합니다. 또한, 상품 목록(배열)에서 특정 상품만 필터링해야 합니다. Set 노드로는 복잡하고, Code 노드가 제격입니다.

    // 입력 데이터 예시:
    // {
    //   "orderId": "ORD123",
    //   "items": [
    //     { "name": "Laptop", "price": 1200, "quantity": 1 },
    //     { "name": "Mouse", "price": 25, "quantity": 2 },
    //     { "name": "Keyboard", "price": 75, "quantity": 1 }
    //   ],
    //   "customerTier": "Gold"
    // }
    
    for (const item of $input.all()) {
      const order = item.json;
    
      // 1. 총 상품 가격 계산
      let totalItemsPrice = 0;
      for (const product of order.items) {
        totalItemsPrice += product.price * product.quantity;
      }
    
      // 2. 배송비 계산 (예시: Gold 고객은 무료 배송, 100달러 미만 주문은 5달러, 이상은 무료)
      let shippingFee = 0;
      if (order.customerTier === "Gold") {
        shippingFee = 0; // 골드 고객 무료 배송
      } else if (totalItemsPrice  product.name === "Laptop");
    
      // 결과 객체에 추가
      order.totalItemsPrice = totalItemsPrice;
      order.shippingFee = shippingFee;
      order.finalPrice = totalItemsPrice + shippingFee;
      order.filteredItems = filteredItems; // 필터링된 상품 리스트 추가
    
      // 다음 노드로 전달할 데이터 반환
      return [{ json: order }];
    }

    Code 노드를 사용하면 이렇게 복잡한 계산과 배열 필터링을 한 번에 처리할 수 있습니다. 무궁무진한 가능성을 가진 노드이니, JavaScript에 익숙하다면 꼭 활용해 보세요!


3. 대량 데이터 처리의 달인 – Split In Batches 노드

API 호출 시 레이트 리밋에 걸리거나, 수천 개의 데이터 항목을 개별적으로 처리해야 할 때가 있습니다. 이때 Split In Batches 노드가 큰 도움이 됩니다.

📦 Split In Batches 노드: 효율적인 분할 처리

Split In Batches 노드는 대량의 입력 데이터를 지정된 크기의 “배치(batch)”로 분할하여 다음 노드로 전달합니다. 이를 통해 API 과부하를 막고, 각 항목에 대한 개별적인 처리 로직을 구현하기 용이합니다.

  • 언제 사용할까요?

    • 외부 API에 데이터를 전송할 때, API의 초당 요청 제한(Rate Limit)을 준수해야 할 때 ⏱️
    • 1000개의 이메일 주소에 각각 맞춤형 이메일을 보낼 때 (한 번에 보내면 부담이 크므로 50개씩 끊어서 보낼 때) 📧
    • 각 데이터 항목에 대해 복잡한 계산이나 외부 서비스 호출이 필요하여 한 번에 처리하기 어려울 때 📈
  • 사용 예시: 여러분은 1,000개의 상품 정보가 담긴 JSON 리스트를 받았고, 이 정보를 한 번에 50개씩 묶어 외부 쇼핑몰 API로 전송해야 합니다.

    1. Trigger 노드: 1,000개 상품 데이터 리스트를 받습니다. (예: [{...}, {...}, ..., {1000번째}])
    2. Split In Batches 노드:
      • Batch Size: 50으로 설정합니다.
      • 이 노드를 통과하면, 다음 노드로는 50개씩 묶인 상품 데이터가 순차적으로 전달됩니다.
    3. HTTP Request 노드: 50개씩 묶인 상품 데이터를 외부 API로 전송합니다. 🌐
    4. (옵션) Wait 노드를 추가하여 각 배치 사이에 지연 시간을 줄 수 있습니다. (예: 5초 대기) ⏸️

    이렇게 하면 1,000개의 상품 데이터를 20번에 걸쳐(1000/50=20) 안정적으로 처리할 수 있게 됩니다.


4. 에러 없는 워크플로우를 위한 방패 – Try/Catch (Error Workflow)

복잡한 워크플로우를 구축할 때는 항상 예외 상황을 염두에 두어야 합니다. 외부 API 오류, 잘못된 데이터 형식 등 예기치 않은 문제로 워크플로우가 중단되는 것을 막으려면 Try/Catch 또는 에러 워크플로우 설정이 필수적입니다.

🛡️ Try/Catch (Error Workflow): 견고한 자동화 시스템

n8n에서는 Error Trigger 노드를 사용하여 별도의 “에러 워크플로우”를 만들거나, 메인 워크플로우 내에서 Try/Catch 블록을 구성하여 특정 노드의 에러를 직접 처리할 수 있습니다.

  • 언제 사용할까요?

    • 외부 API 호출이 실패했을 때 재시도를 하거나, 담당자에게 알림을 보낼 때 📢
    • 데이터 처리 중 예상치 못한 값이 들어와 노드 실행에 실패했을 때, 에러를 로깅하고 워크플로우가 중단되지 않게 할 때 ✍️
    • 중요한 작업이 실패했을 때, 사용자에게 알림 이메일을 보내거나, 롤백 작업을 수행할 때 ↩️
  • 사용 예시: 여러분은 주문 정보를 ERP 시스템에 입력하는 워크플로우를 만들었습니다. 만약 ERP 시스템과의 통신 오류로 주문 정보 입력에 실패하면, 슬랙으로 담당자에게 알리고, 실패한 주문 정보를 별도의 실패 로그에 기록하고 싶습니다.

    방법 1: 메인 워크플로우 내 Try/Catch 노드 사용

    1. Trigger 노드: 주문 데이터를 받습니다.
    2. Try Catch 노드: 이 노드를 추가하고, 안에 HTTP Request 노드 (ERP 시스템 호출)를 넣습니다.
    3. Catch 브랜치: HTTP Request 노드 실행 중 오류가 발생하면 Catch 브랜치로 흐름이 넘어갑니다.
    4. Slack 노드 (Catch 브랜치): 담당자에게 “ERP 주문 입력 실패! 주문 ID: {{ $json.orderId }}”와 같은 메시지를 보냅니다.
    5. Google Sheets 노드 (Catch 브랜치): 실패한 주문 데이터를 “ERP_Fail_Log” 시트에 추가합니다. 📝

    방법 2: 별도의 Error Workflow 구성 (전역 에러 처리)

    1. 새로운 워크플로우 생성 (Error Workflow):
      • Error Trigger 노드를 시작 노드로 추가합니다.
      • Error Trigger 노드에 “Workflow Name” 필터를 적용하여 특정 워크플로우의 에러만 감지할 수 있습니다.
      • Slack 노드를 연결하여 에러 발생 시 알림을 보냅니다. $json.error.message 등 에러 정보를 활용할 수 있습니다.
      • Google Sheets 또는 Database 노드를 연결하여 에러 로그를 기록합니다.

    이처럼 Try/CatchError Workflow는 워크플로우를 더욱 견고하게 만들어, 예상치 못한 상황에서도 시스템이 멈추지 않고 적절하게 대응할 수 있도록 돕습니다.


💡 마무리하며: 복잡함 속의 단순함 찾기

오늘 우리는 n8n 워크플로우의 복잡성을 해결하는 데 핵심적인 5가지 노드와 한 가지 보너스 노드를 살펴보았습니다.

  • If & Merge: 흐름 제어의 기본이자 핵심.
  • Set & Code: 데이터 가공의 필수 도구 (간단한 것부터 복잡한 것까지).
  • Split In Batches: 대규모 데이터 처리의 효율성.
  • Try/Catch (Error Workflow): 안정성과 견고함 보장.

처음에는 이 노드들의 조합이 어렵게 느껴질 수 있지만, 실제 시나리오에 적용하며 연습하다 보면 자연스럽게 익숙해질 것입니다. 모든 복잡한 워크플로우는 이처럼 단순한 핵심 블록들의 논리적인 조합으로 이루어져 있습니다.

가장 중요한 것은 “문제를 작은 단위로 나누어 생각하는 것”입니다. 전체적인 워크플로우를 한 번에 만들려고 하지 말고, 각 단계에서 어떤 노드가 어떤 역할을 할지 고민해 보세요.

n8n과 함께라면 여러분의 아이디어를 현실로 만드는 것이 훨씬 쉬워질 겁니다. 이 핵심 노드들을 마스터하고 더욱 강력한 자동화 워크플로우를 구축해 보세요!

궁금한 점이나 자신만의 n8n 활용 팁이 있다면 댓글로 공유해주세요! 👇 함께 성장해나가는 n8n 커뮤니티가 되길 바랍니다. 행복한 자동화 생활하세요! 🥳 D

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다