G: 안녕하세요, 자동화와 효율성을 사랑하는 여러분! 🚀 n8n은 여러분의 워크플로우를 놀랍도록 강력하게 만들어주는 도구입니다. 하지만 데이터를 단순히 한 방향으로만 흘려보내는 것으로는 복잡한 현실 세계의 요구를 충족하기 어렵습니다. 특정 조건에 따라 데이터를 분기하고, 다른 경로로 보내야 할 때가 수도 없이 많죠. 이때 필요한 것이 바로 n8n Switch 노드입니다!
오늘은 n8n Switch 노드를 완벽하게 분석하여, 여러분의 데이터 흐름을 자유자재로 제어하고 더욱 스마트한 자동화 워크플로우를 구축하는 방법을 알려드리겠습니다. 마치 데이터의 지휘자가 된 것처럼 느껴지실 거예요! 🎼
💡 n8n Switch 노드, 왜 중요할까요?
n8n Switch 노드는 워크플로우 내에서 조건부 로직을 구현하는 핵심적인 도구입니다. 간단히 말해, 특정 데이터의 값(Value)을 평가하여 미리 정의된 조건(Condition)에 따라 데이터를 다른 출력(Output)으로 보내는 역할을 합니다.
상상해보세요:
- 고객 문의 이메일의 제목에 “환불”이 포함되어 있으면 담당 부서 1로, “기술 지원”이 포함되어 있으면 담당 부서 2로 자동으로 분류하고 싶을 때.
- API 응답의 상태 코드(Status Code)가 200이면 “성공” 처리 로직으로, 400이나 500대 에러이면 “오류” 처리 로직으로 분기하고 싶을 때.
- 사용자가 입력한 값이 숫자인지, 아니면 텍스트인지에 따라 다른 데이터베이스에 저장하고 싶을 때.
이 모든 시나리오에서 Switch 노드는 여러분의 워크플로우를 유연하고 지능적으로 만들어주는 필수적인 역할을 합니다. 마치 기차가 레일을 바꿔 달리듯, 데이터를 원하는 방향으로 정확하게 인도하는 것이죠! 🛤️
🛠️ n8n Switch 노드, 어떻게 작동할까요? 핵심 개념 파헤치기!
Switch 노드는 몇 가지 핵심적인 설정으로 구성됩니다. 이 설정들을 이해하면 어떤 복잡한 조건부 로직도 쉽게 구현할 수 있습니다.
1. 🎯 Value (평가할 값)
이것은 Switch 노드가 무엇을 기준으로 판단할지를 정하는 부분입니다. 보통 이전 노드에서 넘어온 데이터의 특정 필드 값을 사용합니다.
- 예시:
{{ $json.statusCode }}
(API 응답의 상태 코드),{{ $json.emailSubject }}
(이메일 제목),{{ $json.userName }}
(사용자 이름) 등. - 💡 팁: n8n의 표현식(Expression) 기능을 활용하여 동적인 값을 가져올 수 있습니다.
{{ }}
괄호 안에 원하는 변수나 수식을 넣으세요!
2. 🧩 Conditions (조건 목록)
Switch 노드의 핵심이자 가장 강력한 부분입니다. 여기에 데이터가 어떤 조건을 충족해야 특정 출력으로 나갈지 정의합니다. 여러 조건을 추가할 수 있으며, 위에서부터 아래로 순서대로 평가됩니다.
각 조건은 다음과 같은 요소들로 구성됩니다:
-
Input Type (입력 타입): 평가할
Value
의 데이터 타입을 지정합니다.String
: 텍스트 값 (가장 일반적)Number
: 숫자 값Boolean
: 참/거짓 값DateTime
: 날짜 및 시간 값- 💡 주의:
Input Type
을 정확히 지정하는 것이 매우 중요합니다. 예를 들어,"123"
은 문자열이지만123
은 숫자입니다. 잘못 지정하면 조건이 제대로 작동하지 않을 수 있습니다.
-
Operation (비교 연산자):
Value
와Pattern
을 어떻게 비교할지 정의합니다. 굉장히 다양한 연산자를 제공하여 유연한 조건을 만들 수 있습니다.- 문자열 비교:
Equals
: 정확히 일치 📏Not Equals
: 정확히 일치하지 않음 🚫Contains
: 특정 문자열 포함 📦Not Contains
: 특정 문자열 미포함 ❌Starts With
: 특정 문자열로 시작 ➡️Ends With
: 특정 문자열로 끝남 ⬅️Matches Regex
: 정규 표현식 매칭 🔎 (매우 강력!)
- 숫자 비교:
Greater Than
: 보다 큼 ⬆️Greater Than Or Equal
: 보다 크거나 같음 ⏫Less Than
: 보다 작음 ⬇️Less Than Or Equal
: 보다 작거나 같음 ⏬
- 공통 비교:
Is Empty
: 값이 비어있음 (null, undefined, 빈 문자열, 빈 배열 등) 👻Is Not Empty
: 값이 비어있지 않음 📝Is Null
: 값이 null ⚪Is Not Null
: 값이 null이 아님 🔵Is True
/Is False
: 불리언 값 확인 ✅❌
- 문자열 비교:
-
Pattern (비교 대상):
Value
가Operation
에 따라 비교될 실제 값입니다. 직접 입력하거나, 다른 노드의 값(표현식)을 사용할 수 있습니다.- 예시:
200
(숫자),"환불"
(문자열),true
(불리언),/^error/i
(정규 표현식)
- 예시:
3. 📤 Outputs (출력 브랜치)
각 조건이 만족될 때 데이터가 흘러나갈 별도의 출력 포트입니다. 조건 목록에서 조건을 추가할 때마다 새로운 출력 포트가 생깁니다. Switch 노드 아래에 연결된 다음 노드는 이 출력 포트 중 하나로부터 데이터를 받게 됩니다.
4. 🕳️ Default Output (기본 출력)
어떤 조건도 만족되지 않았을 때 데이터가 나가는 최종 백업 경로입니다. 이 출력은 항상 존재하며, 조건 목록의 가장 아래에 위치합니다.
- 💡 활용: 예상치 못한 값이나 오류를 처리하는 “Catch-all” 용도로 매우 유용합니다.
🚀 n8n Switch 노드, 실전 예시로 마스터하기!
이제 실제 시나리오를 통해 Switch 노드의 강력함을 경험해 봅시다.
예시 1: 🌐 API 응답 상태 코드 처리 (성공/오류 분기)
가장 흔하게 사용되는 패턴 중 하나입니다. 웹훅이나 HTTP Request 노드로 API를 호출한 후, 응답 상태 코드에 따라 다른 로직을 수행하고 싶을 때 활용합니다.
시나리오: 특정 외부 API를 호출하여 데이터를 가져옵니다.
- 200 (OK): 성공적으로 데이터를 가져왔으니 다음 데이터 처리 로직으로 진행.
- 400-499 (Client Error): 클라이언트 측의 문제 (잘못된 요청 등), 사용자에게 알림.
- 500-599 (Server Error): 서버 측의 문제, 관리자에게 알림 또는 재시도 로직.
- 그 외 (Default): 예상치 못한 오류, 일반 오류 처리.
Switch 노드 설정:
- Value:
{{ $json.statusCode }}
(HTTP Request 노드의 응답에서 상태 코드를 가져옴)Input Type
:Number
로 설정! (⭐ 매우 중요!)
- Condition 1: (Output 0)
Operation
:Equals
Pattern
:200
Output Name
:성공 ✅
- Condition 2: (Output 1)
Operation
:Greater Than Or Equal
Pattern
:400
Output Name
:클라이언트 오류 ⚠️
- Condition 3: (Output 2)
Operation
:Greater Than Or Equal
Pattern
:500
Output Name
:서버 오류 🚨
- Default Output:
예상치 못한 오류 ❓
워크플로우 구조:
HTTP Request
➡️ Switch (상태 코드)
Switch (Output: 성공 ✅)
➡️데이터 처리 노드
Switch (Output: 클라이언트 오류 ⚠️)
➡️이메일 알림 (사용자)
Switch (Output: 서버 오류 🚨)
➡️슬랙 알림 (관리자)
Switch (Output: 예상치 못한 오류 ❓)
➡️로그 기록
예시 2: 🤖 사용자 입력 기반 자동 응답 (챗봇 키워드 라우팅)
챗봇이나 고객 지원 시스템에서 사용자 입력에 따라 다른 답변을 제공하거나 다른 워크플로우를 트리거할 때 유용합니다.
시나리오: 챗봇이 사용자로부터 메시지를 받습니다.
- 메시지에 “가격”이 포함되어 있으면 가격 정보 제공.
- 메시지에 “배송”이 포함되어 있으면 배송 조회 링크 제공.
- 그 외 메시지는 일반 문의 처리.
Switch 노드 설정:
- Value:
{{ $json.text }}
(사용자가 입력한 메시지 텍스트)Input Type
:String
- Condition 1: (Output 0)
Operation
:Contains
Pattern
:가격
Output Name
:가격 문의 💰
- Condition 2: (Output 1)
Operation
:Contains
Pattern
:배송
Output Name
:배송 문의 🚚
- Default Output:
일반 문의 💬
워크플로우 구조:
Webhook (챗봇)
➡️ Switch (메시지 내용)
Switch (Output: 가격 문의 💰)
➡️가격 정보 제공 노드 (Set, Respond to Webhook)
Switch (Output: 배송 문의 🚚)
➡️배송 조회 API 호출 노드
Switch (Output: 일반 문의 💬)
➡️AI 챗봇으로 전달 노드
예시 3: 📧 이메일 발신자/제목 기반 분류
이메일을 자동으로 분류하고 싶을 때 사용합니다.
시나리오: 특정 이메일함으로 들어오는 이메일을 분류합니다.
support@example.com
에서 온 이메일은 지원 티켓 시스템으로.- 제목에 “긴급”이 포함된 이메일은 긴급 알림 워크플로우로.
- 나머지는 일반 이메일 처리.
Switch 노드 설정:
- Value:
{{ $json.fromEmail }}
(발신자 이메일 주소)Input Type
:String
- Condition 1: (Output 0)
Operation
:Equals
Pattern
:support@example.com
Output Name
:지원팀 이메일 헬프데스크
- Condition 2: (Output 1)
Value
:{{ $json.subject }}
(새로운 Value 필드 추가)Input Type
:String
Operation
:Contains
Pattern
:긴급
Output Name
:긴급 이메일 🚨
- Default Output:
일반 이메일 📨
워크플로우 구조:
IMAP Email
➡️ Switch (이메일 분류)
Switch (Output: 지원팀 이메일 헬프데스크)
➡️지라/젠데스크 티켓 생성
Switch (Output: 긴급 이메일 🚨)
➡️슬랙/문자 긴급 알림
Switch (Output: 일반 이메일 📨)
➡️CRM에 이메일 저장
✨ Switch 노드 활용 팁 및 베스트 프랙티스
- 조건의 순서: Switch 노드는 위에서부터 아래로 조건을 평가합니다. 여러 조건이 동시에 만족될 수 있는 경우, 가장 먼저 만족하는 조건의 출력으로 데이터가 나갑니다. 따라서, 더 구체적인 조건을 위쪽에 배치하는 것이 좋습니다.
- 예: “Apple”이라는 단어에 대한 조건을 “과일”이라는 단어에 대한 조건보다 위에 두는 식.
- Default Output 활용:
Default Output
은 예상치 못한 값을 처리하거나, 어떤 조건에도 맞지 않는 “기타” 경우를 처리하는 데 매우 중요합니다. 이를 통해 워크플로우가 중단되지 않고 안정적으로 작동하도록 할 수 있습니다. 🛡️ - Input Type의 중요성:
Input Type
을String
,Number
,Boolean
등으로 정확하게 지정해야 올바른 비교가 이루어집니다. 특히 숫자 비교 시 문자열 “10”과 숫자 10은 다르게 처리되니 주의하세요! - 정규 표현식 (Regex) 활용: 복잡한 텍스트 패턴 매칭에는
Matches Regex
연산자가 매우 강력합니다. 예를 들어, 특정 패턴을 가진 이메일 주소나 URL을 식별할 때 유용합니다. 🤯 - Set 노드와 조합: Switch 노드에 들어가기 전, Set 노드를 사용하여 필요한 데이터를 가공하거나 새로운 변수를 생성해두면 Switch 노드의
Value
설정이 더 깔끔해질 수 있습니다. - Test 기능 활용: 워크플로우를 실행하기 전에 ‘Test Workflow’ 기능을 사용하여 각 조건이 의도한 대로 작동하는지 미리 확인하세요. 🧪
맺음말
n8n Switch 노드는 여러분의 자동화 워크플로우에 지능과 유연성을 불어넣는 강력한 도구입니다. 데이터의 흐름을 조건에 따라 자유롭게 제어함으로써, 단순 반복 작업을 넘어선 훨씬 복잡하고 실용적인 자동화 솔루션을 구축할 수 있습니다.
오늘 배운 내용을 바탕으로 여러분의 워크플로우에 Switch 노드를 적극적으로 활용해 보세요. 처음에는 조금 복잡하게 느껴질 수 있지만, 몇 번의 시도와 연습을 통해 데이터 흐름을 완벽하게 마스터하는 n8n의 진정한 마법사가 될 수 있을 겁니다! ✨
궁금한 점이 있다면 언제든지 질문해주세요. 여러분의 성공적인 자동화를 응원합니다! 💪