제 4부. 첫 번째 워크플로 완성: 노드(Node)의 연결과 데이터 흐름 마스터하기

제 4부. 첫 번째 워크플로 완성: 노드(Node)의 연결과 데이터 흐름 마스터하기

인트로: 코드 없는 자동화, N8N '노드'의 언어를 배우다

제3부까지의 과정을 통해, 여러분은 N8N 서버를 구동하고, 데이터 영속성과 보안까지 확보한 완벽한 자동화 환경을 구축하는 데 성공했습니다. 이제 N8N의 핵심 가치를 실현할 시간입니다.

N8N은 '코드 없는(No-Code)' 자동화 툴이지만, 단순히 마우스를 몇 번 클릭하는 것 이상의 원리를 이해해야 복잡하고 강력한 자동화 시나리오를 설계할 수 있습니다. 그 핵심 원리가 바로 '노드(Node)와 데이터 흐름(Data Flow)'입니다.

N8N 캔버스 위의 모든 블록은 노드(Node)이며, 이 노드들은 특정 임무(예: 데이터 가져오기, 변환하기, 전송하기)를 수행합니다. 자동화 워크플로는 이 노드들을 연결하여 데이터가 한 노드에서 다른 노드로 흘러가며 가공되는 과정을 시각적으로 표현한 것입니다.

이번 제4부는 이론적인 설명을 넘어, 실제 업무에 적용 가능한 첫 번째 워크플로를 완성하는 데 집중합니다.

  • 노드의 이해: 워크플로를 시작하는 트리거 노드(Trigger Node)와 작업을 수행하는 일반 노드(Regular Node)의 차이점을 명확히 이해합니다.

  • 데이터 흐름 마스터: 노드 간에 데이터가 어떤 형태로 전달되고, 다음 노드에서 이전 노드의 데이터를 어떻게 참조하여 사용하는지(JSON 형태)를 구체적인 예시를 통해 익힐 것입니다.

  • 실전 워크플로 완성: 웹사이트의 RSS 피드를 가져와 원하는 형식으로 데이터를 가공한 후, 슬랙(Slack) 메시지로 전송하는 실용적인 워크플로를 처음부터 끝까지 함께 만들어봅니다.

이제 마우스로 노드를 끌어와 연결하고, 여러분의 첫 번째 자동화 워크플로를 직접 실행해 봅시다.

1. 워크플로의 시작과 끝, 트리거 노드와 일반 노드 이해하기

N8N의 모든 자동화는 노드에서 시작하여 노드로 끝납니다. 이 노드들을 이해하는 것은 건물을 짓기 위해 벽돌의 종류를 아는 것과 같습니다. N8N의 노드는 크게 두 가지 핵심 유형으로 나뉩니다.

1. 트리거 노드 (Trigger Node): 워크플로의 시작점

트리거(Trigger) 노드는 말 그대로 '방아쇠' 역할을 합니다. 이 노드는 워크플로가 언제, 어떻게 시작될지를 정의하며, 워크플로의 첫 번째 노드로만 사용될 수 있습니다.

  • 시간 기반 트리거 (Cron): 가장 일반적인 형태입니다. 특정 시간 간격(예: 매일 아침 9시, 30분마다)에 워크플로를 실행하도록 설정합니다. 이는 정기적인 데이터 수집이나 보고서 생성 등에 사용됩니다.

  • 이벤트 기반 트리거 (Webhook, App Trigger): 외부에서 어떤 이벤트가 발생했을 때(예: 새로운 이메일 수신, 웹사이트에 새로운 데이터 전송) 즉시 워크플로가 실행되도록 합니다. Webhook은 외부 시스템과의 실시간 연동에 필수적입니다.

  • 트리거의 중요성: 트리거 노드는 실행될 때 다음 노드로 데이터를 전달하지는 않지만, "지금부터 워크플로를 시작하라"는 신호를 보냅니다. 워크플로가 실행되는 빈도와 방식을 결정하므로, 목표에 맞는 올바른 트리거를 선택하는 것이 중요합니다.

2. 일반 노드 (Regular Node): 데이터 처리와 행동 실행

트리거 노드 다음에 연결되는 모든 노드는 일반 노드(혹은 기능 노드)입니다. 이 노드들은 특정 임무를 수행하여 데이터를 가공하거나, 외부 서비스와 상호작용합니다.

  • 데이터 처리 노드 (Data Processing): Set, Code, Filter, Split in Batches 등의 노드가 있으며, 이전 노드에서 받은 데이터를 원하는 형태로 변형하거나 조건을 걸어 필터링하는 역할을 합니다.

  • 외부 서비스 노드 (Service Integration): Google Sheets, Slack, Gmail, Notion 등 수백 가지의 외부 앱에 접속하여 데이터를 읽어오거나(Read), 새로운 데이터를 쓰거나(Write), 특정 액션(Send)을 실행합니다.

💡 노드 연결의 규칙:

워크플로는 항상 하나의 트리거 노드에서 시작하여, 하나 이상의 일반 노드가 순차적으로 연결되며 완성됩니다. 데이터는 연결된 화살표를 따라 트리거에서 일반 노드로, 다시 일반 노드에서 다음 일반 노드로 끊임없이 흘러가며 처리됩니다.

2. N8N 자동화의 핵심 원리, 데이터 흐름과 JSON 구조 이해하기

N8N 워크플로가 제대로 작동하려면, 노드들이 단순히 연결되어 있는 것을 넘어 데이터가 어떻게 이동하고 변형되는지를 이해해야 합니다. N8N에서 데이터는 표준 웹 포맷인 JSON(JavaScript Object Notation) 형태로 흐릅니다.

1. N8N 데이터 흐름의 기본 규칙

워크플로에서 한 노드가 작업을 마치면, 그 결과물은 JSON 형태의 아이템(Item) 목록으로 정리되어 다음 연결된 노드로 전달됩니다.

  • 아이템(Item) 단위 처리: 노드는 여러 개의 아이템을 입력받을 수 있으며, 각 아이템을 개별적으로 처리하여 다시 여러 개의 아이템으로 출력할 수 있습니다.

  • JSON 구조: 각 아이템은 필드(Field)와 값(Value)으로 구성된 JSON 객체입니다. 예를 들어, 웹사이트에서 제목과 URL을 가져오면 각 아이템은 다음과 같은 구조를 가집니다.

JSON
{
  "title": "N8N 셀프 호스팅 가이드 3부 완성",
  "url": "https://blog.example.com/n8n-part3",
  "publishDate": "2025-12-13"
}

2. 이전 노드의 데이터 참조하기 (Expression 활용)

트렉스타 릿지화에서 착화된 디자인으로 피팅감이 더욱 우수하도록 설계된 뉴트로 스타일 트레킹화
이 포스팅은 쿠팡 파트너스 활동으로, 일정의 수수료를 제공받습니다
다음 노드에서 이전 노드의 데이터를 가져와 사용하려면, 단순한 텍스트 입력이 아닌 **표현식(Expression)**을 사용해야 합니다. 이것이 N8N 자동화의 가장 강력한 기능이자 핵심 기술입니다.

A. Expression으로 데이터 연결하기

노드의 설정 필드에서 마우스를 클릭하면 Expression 에디터가 나타납니다. 이 에디터를 사용하면 이전 노드의 결과 데이터에 접근할 수 있습니다.

  • 접근 구문: { { $json.필드명 } }

    • $json: 현재 아이템의 데이터 객체를 의미합니다.

    • 필드명: 여러분이 참조하고 싶은 필드의 이름 (예: title, url)

B. 실제 활용 예시: Slack 메시지 생성

이전 노드(Read RSS)에서 제목(title)과 URL(url)을 가져왔다면, 다음 노드(Slack)에서 메시지를 구성할 때 다음과 같이 표현식을 사용할 수 있습니다.

설정 필드 입력 값 결과 메시지
메시지 텍스트 새로운 포스팅이 도착했습니다: { { $json.title } } (URL: { { $json.url } }) 새로운 포스팅이 도착했습니다: N8N 셀프 호스팅 가이드 3부 완성 (URL: https://...)

이처럼 표현식은 노드 간의 데이터를 동적으로 연결하고, 데이터가 워크플로 전체를 통해 정확하게 전달되도록 보장합니다. 데이터를 원하는 필드 이름으로 정리하는 것이 다음 노드의 작업을 쉽게 만드는 핵심입니다.

2. N8N 자동화의 핵심 원리, 데이터 흐름과 JSON 구조 이해하기

N8N 워크플로가 제대로 작동하려면, 노드들이 단순히 연결되어 있는 것을 넘어 데이터가 어떻게 이동하고 변형되는지를 이해해야 합니다. N8N의 모든 데이터는 표준 웹 포맷인 JSON(JavaScript Object Notation) 형태로 흐릅니다.

1. JSON의 이해: 무엇이며 왜 필요한가?

JSON은 웹에서 데이터를 교환할 때 가장 널리 사용되는 경량 데이터 형식입니다. N8N이 JSON을 사용하는 이유는 다음과 같습니다.

  • 구조화된 데이터 교환: JSON은 데이터를 키(Key)와 값(Value)의 쌍으로 구조화하여 표현합니다. 이는 다양한 서비스(웹사이트, API, 데이터베이스) 간에 정보를 빠르고 명확하게 주고받는 표준 언어 역할을 합니다.

  • 사람과 기계 모두 이해 가능: 사람이 읽고 쓰기 쉽고, 기계(컴퓨터)가 파싱(분석)하기도 쉽습니다.

  • N8N에서의 역할: N8N은 각 노드에서 작업한 결과물을 JSON 형식으로 포장하여 다음 노드에 전달합니다. 따라서 여러분이 이전 노드에서 어떤 데이터를 얻었는지 알기 위해서는 이 JSON 구조를 읽을 줄 알아야 합니다.

2. N8N 데이터 아이템과 JSON 구조

워크플로에서 한 노드가 작업을 마치면, 그 결과물은 JSON 형태의 아이템(Item) 목록으로 정리되어 다음 연결된 노드로 전달됩니다.

  • 아이템(Item) 단위 처리: 노드는 여러 개의 아이템을 입력받을 수 있으며, 각 아이템을 개별적으로 처리하여 다시 여러 개의 아이템으로 출력할 수 있습니다.

  • JSON 구조 예시: 예를 들어, RSS 피드에서 새로운 글 세 개를 가져왔다면, N8N은 세 개의 아이템을 만들고 각 아이템은 다음과 같은 JSON 객체 구조를 가집니다.

JSON
{
  "title": "N8N 셀프 호스팅 가이드 3부 완성",
  "url": "https://blog.example.com/n8n-part3",
  "publishDate": "2025-12-13"
}

키(Key): title, url, publishDate와 같이 데이터의 이름을 정의하는 부분입니다. (항상 문자열)

값(Value): "N8N 셀프 호스팅 가이드 3부 완성"과 같이 실제 데이터를 담는 부분입니다. (문자열, 숫자, 배열, 객체 등)

3. 이전 노드의 데이터 참조하기 (Expression 활용)

다음 노드에서 이전 노드의 데이터를 가져와 사용하려면, 단순한 텍스트 입력이 아닌 표현식(Expression)을 사용해야 합니다. Expression은 이전 노드의 JSON 구조 내 특정 값에 접근하도록 돕는 구문입니다.

A. Expression으로 데이터 연결하기

노드의 설정 필드에서 마우스를 클릭하면 Expression 에디터가 나타납니다.

  • 접근 구문: { { $json.필드명 } }

    • $json: 현재 아이템의 데이터 객체를 의미합니다.

    • 필드명: 여러분이 참조하고 싶은 필드의 이름 (예: title, url)

B. 실제 활용 예시: Slack 메시지 생성

이전 노드(Read RSS)에서 제목(title)과 URL(url)을 가져왔다면, 다음 노드(Slack)에서 메시지를 구성할 때 다음과 같이 표현식을 사용할 수 있습니다.

설정 필드 입력 값 결과 메시지
메시지 텍스트 새로운 포스팅: { { $json.title } } (링크: { { $json.url } }) 새로운 포스팅: N8N 셀프 호스팅 가이드 3부 완성 (링크: https://...)

Expression을 사용하면 데이터가 노드 간에 동적으로 연결되어, 워크플로가 항상 최신 데이터를 처리하도록 보장합니다.

본론 3: 실전 워크플로 구축 — RSS 피드를 Slack으로 자동 전송하기

이제 이론을 실습으로 옮겨, 가장 흔하게 사용되는 자동화 시나리오 중 하나인 '새로운 콘텐츠가 올라오면 Slack으로 즉시 알림 받기' 워크플로를 구축해 보겠습니다.

1. 워크플로 구축 단계별 액션 플로우

단계 노드 이름 노드 유형 주요 설정 내용
1단계: 트리거 설정 Cron 트리거 실행 주기 설정 (예: 1시간마다 실행)
2단계: 데이터 수집 RSS Read 일반 피드 URL 입력 및 새로운 아이템만 필터링
3단계: 데이터 가공 Set 일반 Slack에 필요한 필드(title, url)만 추출하여 데이터 정리
4단계: 알림 전송 Slack 일반 크레덴셜 연결 및 메시지 텍스트에 Expression 적용

2. 단계별 구축 상세 가이드

A. 1단계: 트리거 (Cron Node) 설정

워크플로 캔버스에 Cron 노드를 추가하고 설정합니다.

  1. 실행 주기 설정: ModeEvery Hour (매 시간)로 설정하거나, 원하는 주기로 설정합니다.

  2. 노드 실행: 설정이 끝난 후, 노드를 'Activate' 상태로 전환합니다. 이는 워크플로를 저장하고 서버에 등록하여 주기적으로 실행되도록 합니다.

B. 2단계: 데이터 수집 (RSS Read Node) 설정

  1. 노드 추가: Cron 노드의 출력 화살표에 연결하여 RSS Read 노드를 추가합니다.

  2. 피드 URL 입력: 모니터링하고 싶은 웹사이트의 RSS 피드 URL을 URL 필드에 입력합니다. (예: https://n8n.io/feed/)

  3. 필터링 설정: Read ModeOnly New Items로 설정합니다. 이 옵션은 워크플로가 실행될 때마다 이전에 처리되지 않은 새로운 항목만 가져오도록 보장하여, 같은 알림이 반복되는 것을 막아줍니다.

C. 3단계: 데이터 가공 (Set Node) 설정

RSS Read 노드는 필요한 정보 외에도 수많은 불필요한 데이터를 가져옵니다. Set 노드를 사용하여 Slack에 필요한 핵심 정보만 깔끔하게 정리합니다.

  1. 노드 추가: RSS Read 노드 다음에 Set 노드를 연결합니다.

  2. 값 추가: Value 섹션에서 Add Value를 클릭하여 다음과 같이 두 개의 필드를 생성합니다.

필드 유형 필드 이름 설명
String slackTitle { { $json.title } } 원본 title 필드를 slackTitle로 복사합니다.
String slackURL { { $json.link } } 원본 link 필드를 slackURL로 복사합니다.

Set 노드를 사용하는가? 다음 노드(Slack)에 불필요한 데이터가 전달되는 것을 막고, 복잡한 필드명(예: _originalJson.rss.item.title)을 직관적인 이름(slackTitle)으로 변경하여 다음 단계에서의 작업 오류를 방지합니다.

D. 4단계: 알림 전송 (Slack Node) 설정

  1. 노드 추가: Set 노드 다음에 Slack 노드를 연결합니다.

  2. 크레덴셜 연결: Slack API 연결을 위한 Credential을 생성하고 연결합니다. (최초 1회만 필요하며, N8N 서버에 안전하게 저장됩니다.)

  3. 메시지 설정: Channel을 지정하고, Text 필드에 앞서 Set 노드에서 정리한 데이터를 Expression으로 연결합니다.

    • 메시지 텍스트:

    📢 [새로운 소식 도착]
    제목: { { $json.slackTitle } }
    링크: { { $json.slackURL } }
    

    이처럼 Set 노드를 거치면 { { $json.필드명 } }이 훨씬 깔끔해져 실수가 줄어듭니다.

3. 워크플로 최종 실행 및 테스트

워크플로를 저장하고, RSS Read 노드를 선택한 상태에서 'Execute Workflow' 버튼을 클릭하여 수동으로 실행합니다.

  • 결과 확인: Slack 채널에 새로운 메시지가 도착했는지 확인하고, 각 노드의 출력 데이터(JSON)를 확인하여 원하는 대로 데이터가 가공되었는지 검토합니다.

클로징: 첫 번째 자동화 워크플로 완성, 이제 여러분이 데이터를 통제합니다 (CTA)

이번 제4부를 통해 여러분은 단순한 서버 구동을 넘어, N8N의 핵심인  노드(Node)와 데이터 흐름(JSON)의 언어를 익히고, 실생활에 적용 가능한 첫 번째 워크플로(RSS to Slack)를 성공적으로 완성했습니다.

  • 노드의 연결: 워크플로가 트리거 노드에서 시작하여 일반 노드로 순차적으로 이어지는 과정을 이해했습니다.

  • 데이터 흐름 통제: JSON 데이터 구조를 파악하고, Set 노드와 표현식(Expression)을 사용하여 불필요한 데이터를 정리하고 필요한 정보만 다음 노드로 전달하는 방법을 익혔습니다. 이것이 바로 코드 없이 데이터를 여러분의 의도대로 통제하는 핵심 기술입니다.

이제 여러분의 N8N 서버는 1시간마다 자동으로 웹상의 정보를 확인하고, 새로운 소식이 있을 때마다 여러분의 Slack 채널에 알림을 보내는 독립적인 자동화 직원 역할을 수행하고 있습니다.

행동 유발 (CTA):

첫 번째 워크플로를 완성했습니다! 하지만 여러분의 데이터는 아직 여러분의 Slack 채널에만 머물러 있습니다.

자동화의 진정한 힘은 다양한 서비스의 연결과 복잡한 조건 처리에서 나옵니다. 다음 편, 제 5부에서는 오늘 만든 워크플로를 확장하여 '데이터의 분기(Branching)와 조건부 실행'을 다룹니다.

제목에 '필수 키워드'가 포함된 글만 Google Sheet에 저장하고, 나머지는 Discord로 전송하는 등, 복잡한 비즈니스 로직에 따라 워크플로를 지능적으로 분기시키고 관리하는 방법을 배우게 될 것입니다.

다음 편에서 N8N 자동화의 수준을 한 단계 더 끌어올릴 준비를 합시다!

#가나 투데이 #ganatoday

그린아프로