n8n 입문: 주요 기능과 활용 예시, 무료로 쓸 수 있는 범위
n8n 저장소에는 소스 코드가 전부 공개되어 있고, 도커 명령 한 줄이면 내 서버에서 돌아갑니다. 그런데 저장소의 LICENSE.md를 열면 이런 문장이 나옵니다.
You may use or modify the software only for your own internal business purposes or for non-commercial or personal use.
설치는 자유로운데 쓰임새에는 조건이 붙어 있습니다. 이 글은 n8n이 무엇을 할 수 있는지 기능 순서대로 짚고, 실제로 어디에 쓰는지 예를 든 다음, 무료로 쓸 수 있는 범위가 정확히 어디까지인지 공식 문서 기준으로 정리합니다. 버전은 2026년 10월 22일에 나온 안정판 2.44.6 기준입니다.
Zapier 대체재보다 큰 워크플로 엔진
n8n을 흔히 「직접 설치하는 Zapier」로 소개합니다. 틀린 말은 아니지만 절반만 맞습니다. 블록을 끌어다 이어 붙이는 화면은 비슷한데, 그 블록 사이에 자바스크립트와 파이썬 코드를 자유롭게 넣을 수 있고, AI 에이전트를 블록 하나로 끼워 넣을 수 있고, 다른 AI 도구가 n8n을 직접 조작하게 열어 둘 수도 있습니다. 저는 n8n을 노코드 도구보다는 「화면이 붙은 워크플로 엔진」으로 보는 쪽이 실제 쓰임에 가깝다고 봅니다.
용어는 몇 개만 알면 됩니다.
| 용어 | 뜻 |
|---|---|
| 워크플로 | 노드를 이어 만든 자동화 하나. 갈라지고 합쳐지고 반복합니다 |
| 노드 | 블록 하나. 데이터를 가져오고, 보내고, 가공하고, 외부 서비스에 붙습니다 |
| 트리거 노드 | 워크플로를 시작시키는 노드. 운영 중인 워크플로에는 반드시 있어야 합니다 |
| 실행 | 워크플로가 한 번 돈 기록. 노드마다 입력과 출력이 남아 나중에 열어 볼 수 있습니다 |
| 자격증명 | API 키, OAuth, 비밀번호를 암호화해 저장한 것 |
| 표현식 | 노드 설정 칸에 {{ }}로 앞 노드의 값을 끼워 넣는 짧은 자바스크립트 |
워크플로를 시작시키는 트리거의 종류
자동화는 「언제 돌 것인가」에서 시작합니다. 가장 많이 쓰는 것은 웹훅과 시간 예약입니다. 웹훅은 다른 시스템이 n8n이 만들어 준 URL을 호출하면 시작하고, 받은 요청에 응답을 돌려줄 수도 있어서 작은 API 서버처럼 쓸 수 있습니다. 시간 예약은 매일 아침 9시나 10분마다 같은 반복을 맡습니다.
그 밖의 트리거도 쓰임이 분명합니다. 폼 트리거는 n8n이 입력 폼 페이지를 직접 만들어 주고 제출되면 시작합니다. 채팅 트리거는 챗봇의 입구가 됩니다. 메일 도착, 스프레드시트 행 추가, 메신저 메시지 같은 서비스별 이벤트 트리거도 있습니다. 다른 워크플로가 부를 때 시작하는 트리거와, 다른 워크플로가 실패했을 때 시작하는 오류 트리거는 뒤에서 다시 나옵니다.
표현식에서 코드까지, 데이터를 다루는 네 단계
공식 문서는 데이터를 바꾸는 방법을 네 가지로 나눕니다. 칸 하나의 값을 계산할 때는 표현식을 씁니다. {{ $json.email.toLowerCase() }}처럼 앞 노드에서 온 값을 그 자리에서 고치는 식입니다. 필드 편집, 필터, 정렬, 중복 제거, 집계처럼 흔한 가공은 기성 노드가 맡습니다.
블록으로 안 되는 일은 Code 노드로 넘깁니다. 자바스크립트와 파이썬을 둘 다 쓸 수 있는데, 2.0부터는 코드가 「태스크 러너」라는 분리된 환경에서 돌도록 바뀌었습니다. 2.0 변경 사항에 따르면 파이썬 코드 노드는 외부 모드의 태스크 러너가 있어야 돌고, 도커로 운영한다면 n8nio/runners 이미지를 따로 띄워야 합니다. 1.x에서 쓰던 파이썬 노드를 그대로 옮기면 여기서 막힙니다. 마지막으로 AI Transform 노드는 원하는 변환을 말로 적으면 코드를 대신 만들어 줍니다.
개발할 때 시간을 가장 많이 줄여 주는 기능은 데이터 고정입니다. 앞 노드의 출력을 얼려 두면 외부 API를 다시 부르지 않고 뒤쪽 노드만 고치며 시험할 수 있습니다. 운영 실행에서는 고정한 값이 무시됩니다.
외부 DB 없이 작은 표를 n8n 안에 두는 데이터 테이블도 있습니다. 「이미 처리한 메일 ID」 같은 기록을 남겨 중복 처리를 막을 때 요긴합니다. 다만 기본 상한이 인스턴스 전체 200MiB이고 Code 노드에서는 직접 읽을 수 없습니다. 진짜 데이터베이스를 대신하는 물건은 아닙니다.
분기, 반복, 그리고 사람을 기다리는 Wait 노드
흐름 제어는 익숙한 것들입니다. If와 Switch로 갈라지고, 여러 건을 묶음 단위로 나눠 돌리고, Merge로 다시 합칩니다. 큰 흐름은 하위 워크플로로 잘라 여러 곳에서 다시 씁니다. 편집 화면에서 노드 몇 개를 골라 하위 워크플로로 바로 바꾸는 기능도 있습니다.
눈여겨볼 것은 Wait 노드입니다. 정한 시간만큼 멈추는 것 말고도, 외부에서 특정 URL을 호출할 때까지 또는 누군가 폼을 제출할 때까지 실행을 세워 둘 수 있습니다. 「초안을 담당자에게 보내고, 승인 버튼을 누르면 그때 발송」 같은 흐름이 이 노드 하나로 만들어집니다. 자동화에 사람의 판단을 끼워 넣는 가장 단순한 방법입니다.
운영 실수를 막는 초안·게시 구조와 오류 워크플로
편집 중인 워크플로는 1초에서 5초마다 자동 저장되지만, 저장본은 초안일 뿐입니다. 게시 버튼을 눌러야 그 버전이 운영에 올라가고, 그때부터 웹훅과 폼의 운영 URL이 열리고 예약이 돕니다. 고치는 도중의 실수가 운영에 바로 나가지 않는다는 뜻이라, 저는 2.x에서 가장 실용적인 변화가 이것이라고 봅니다. 버전 기록에서 이전 버전을 되살리거나 게시를 내릴 수 있고, 한 워크플로는 한 번에 한 사람만 편집합니다.
실패는 오류 워크플로로 받습니다. 오류 트리거로 시작하는 워크플로를 하나 만들어 두고 각 워크플로 설정에서 지정하면, 실패할 때 그 워크플로가 대신 돌며 실패한 워크플로 이름, 실행 ID, 오류 메시지, 마지막으로 돈 노드를 받습니다. 하나를 만들어 모든 워크플로에 같이 걸어 두고 메신저로 알림을 보내게 해 두면, 조용히 멈춘 자동화를 며칠 뒤에야 발견하는 일을 막을 수 있습니다.
AI 에이전트와 MCP가 들어간 2.x의 n8n
요즘 n8n이 가장 공을 들이는 쪽은 AI입니다. 워크플로 안에서는 AI Agent 노드를 씁니다. 본체 노드에 채팅 모델, 메모리, 도구를 하위 노드로 붙이는 구조이고, 모델은 OpenAI·Anthropic·Gemini 같은 클라우드 모델부터 Ollama로 띄운 로컬 모델까지 고를 수 있습니다. 판단 없이 정해진 순서로 모델을 부르면 되는 일, 예를 들어 요약이나 분류에는 더 단순한 체인을 씁니다. 문서를 잘게 나눠 벡터 저장소에 넣고 질문과 가까운 조각을 찾아 모델에 넘기는 RAG 흐름도 노드로 짤 수 있습니다.
워크플로와 별개로 독립된 에이전트를 만드는 기능도 생겼습니다. 모델, 지시문, 도구, 스킬, 파일 지식, 메모리, 하위 에이전트를 설정하고 게시하면 슬랙이나 텔레그램 같은 채널, 또는 예약으로 돌릴 수 있습니다. 셀프호스팅에서는 2.32.3부터 모든 판에서 쓸 수 있지만 아직 미리보기 단계입니다. 민감한 도구는 에이전트가 부르기 전에 멈추고 사람의 승인을 기다리게 하는 도구 승인 기능이 같이 들어 있습니다.
모델이나 프롬프트를 바꿀 때 쓰는 평가 기능도 있습니다. 시험 입력과 기대 결과를 묶어 워크플로에 흘려 보고 지표로 비교합니다. AI 단계가 들어간 자동화는 코드처럼 결과가 정해지지 않기 때문에, 바꾸기 전과 후를 같은 데이터로 재 보는 장치가 필요합니다.
MCP는 양쪽으로 됩니다. n8n 자체를 MCP 서버로 열면 Claude Code나 Claude Desktop 같은 AI 클라이언트가 n8n에 붙어 워크플로를 만들고 고치고 실행합니다. 워크플로 하나만 MCP 서버로 내놓는 MCP Server Trigger 노드도 있어서, 안에서 설계한 도구만 골라 AI가 부를 수 있게 할 수 있습니다. 반대로 MCP Client Tool 노드를 쓰면 n8n의 에이전트가 외부 MCP 서버의 도구를 씁니다.
활용 예시: 알림, 정기 보고, 문서 처리, 승인 흐름
n8n이 가장 잘하는 일은 「사건이 생기면 정해진 몇 곳에 알리고 기록하는 일」입니다. 홈페이지 문의 폼이 들어오면 메신저로 알리고 고객 관리 시트에 한 줄을 더하는 것, 결제 서비스의 웹훅을 받아 확인 메일을 보내고 회계 시트에 적는 것, 세금계산서 메일이 오면 첨부 파일을 드라이브의 정해진 폴더에 넣는 것이 전형적입니다. 서비스 상태 확인 주소를 5분마다 불러 보고 실패하면 알리는 간단한 감시도 이 범주입니다.
시간 예약과 묶으면 보고서가 됩니다. 매일 아침 오늘 일정과 할 일, 어제 매출을 모아 메신저로 요약해 보내거나, 매주 월요일 광고·분석 도구에서 지표를 가져와 표로 만들어 메일로 보내는 식입니다. 공고 사이트나 RSS를 주기적으로 읽어 키워드에 걸린 것만 요약해 알리는 것도 같은 구조입니다.
AI가 들어가면 문서를 다룰 수 있습니다. 받은 PDF나 영수증 사진에서 항목을 뽑아 표에 정리하고, 들어온 문의 메일을 견적·불만·단순 문의로 나눠 담당자별로 보냅니다. 회사 문서를 벡터 저장소에 넣어 두면 근거 문서와 함께 답하는 사내 챗봇이 됩니다. 외부로 데이터를 보내기 곤란하면 로컬 모델을 붙이면 됩니다.
사람의 승인이 필요한 일에는 앞에서 본 Wait 노드를 씁니다. AI가 쓴 답장 초안을 메신저로 보여 주고 승인 버튼을 눌러야 발송하게 하거나, 일정 금액이 넘는 지출 요청은 관리자 승인 뒤에만 기록되게 합니다.
마지막으로 제품의 뒷단 엔진으로도 씁니다. 앱의 「신고 접수」 버튼이 n8n 웹훅을 부르고, 분류와 알림과 기록은 n8n이 맡는 식입니다. 사용자는 n8n의 존재를 모릅니다. 이 형태는 라이선스에서도 허용됩니다. 그 경계는 아래에서 봅니다.
무료판에 없는 기능: Git 연동과 공유
셀프호스팅 n8n에는 판이 넷 있습니다. 라이선스 키 없이 도는 Community, 이메일만 등록하면 되는 Registered Community, 그리고 유료인 Business와 Enterprise입니다. 무료 Community 판에 빠진 것은 Git 버전 관리와 환경 분리, 프로젝트와 워크플로·자격증명 공유, 공유 변수, 외부 비밀 저장소 연동, SSO, 로그 스트리밍입니다. 큐 모드로 워커를 늘리는 것은 무료판에서도 됩니다. 이메일을 등록하면 폴더, 과거 실행을 편집기로 가져와 디버그하는 기능, 실행 기록에 사용자 데이터를 다는 기능이 풀립니다.
혼자나 작은 팀이 쓰기에는 무료판으로 충분합니다. 제가 가장 아쉽게 보는 것은 Git 연동입니다. 워크플로가 n8n 안에만 살기 때문에 무엇이 언제 왜 바뀌었는지를 코드처럼 리뷰하고 되돌리기 어렵습니다. 무료판이라면 워크플로를 JSON으로 내보내 저장소에 따로 넣어 두는 것으로 메워야 합니다.
무료 범위를 가르는 기준, 워크플로를 고치는 사람
n8n의 라이선스는 오픈소스가 아니라 Sustainable Use License입니다. 처음에 인용한 「자기 회사 내부 업무용」이라는 구절만 보면 외주 개발사나 컨설턴트는 쓸 수 없을 것처럼 읽힙니다. 이 구절을 두고 검색 결과에서도 해석이 갈립니다. 「상업적 사용 금지」라고 쓴 글도 있고 「돈 버는 일에도 무료」라고 쓴 글도 있습니다.
기준은 n8n이 직접 낸 라이선스 FAQ에 한 문장으로 적혀 있습니다.
If workflows are only created or modified by you or people in your organization, you can use n8n under the Community license for free.
돈을 받느냐가 아니라 누가 워크플로를 만들고 고치느냐가 기준입니다. FAQ의 예시를 표로 옮기면 이렇습니다.
| 무료로 되는 것 | 안 되는 것 |
|---|---|
| 자기 사업 운영, 개인 프로젝트, 학습 | n8n을 호스팅 서비스로 팔고 고객이 워크플로를 만들게 하기 |
| 내 인스턴스에서 고객용 자동화를 만들어 주기 (고객이 고칠 수 없을 때) | 내 제품 안에서 최종 사용자가 워크플로를 짜게 하기 |
| 워크플로 구축·유지보수 비용, 교육·컨설팅 비용 받기 | n8n 코드를 포크해 자동화 제품으로 내기 |
| 내 제품의 뒷단 엔진으로 쓰기 | 브랜드를 지우고 그대로 재판매 |
| 고객 서버에 설치하고 구축·유지보수 해 주기 (호스팅까지 하지 않을 때) | 유료 기능을 라이선스 키 없이 쓰기 |
FAQ는 최종 사용자가 워크플로를 짜는 경로를 화면에 한정하지 않습니다. 자체 UI든, n8n API든, MCP든, 사용자를 대신하는 AI 에이전트든 사용자가 워크플로 로직을 정하면 안 되는 쪽입니다. 반대로 미리 만든 워크플로를 웹훅이나 API로 실행만 하게 하는 것은 됩니다. 고객이 자기 계정을 연결하는지, 누구의 API 키를 쓰는지는 부차적이라고 FAQ가 직접 말합니다.
여기서부터는 FAQ도 단정하지 않습니다. 유료 제품에 n8n을 넣어 고객 쪽 서버에 설치해 주는 경우는 「회색 지대일 수 있다」고 적고, 출시 전에 license@n8n.io에 구조를 확인하라고 안내합니다. 고객이 서버에 직접 접근할 수 있으면 워크플로를 못 고치게 막기가 어렵기 때문입니다. 이런 구조라면 저도 문서만 보고 판단하지 않고 n8n에 먼저 묻겠습니다.
n8n에 맡기지 않는 편이 나은 일
초당 많은 요청을 처리해야 하는 실시간 핵심 로직은 애플리케이션 코드에 두는 편이 낫습니다. 테스트와 코드 리뷰를 반드시 거쳐야 하는 업무 규칙도 그렇습니다. 무료판에는 Git 연동이 없어서 규칙이 바뀐 이력을 따라가기 어렵습니다. 데이터를 오래 많이 쌓아야 한다면 데이터 테이블 대신 별도의 데이터베이스를 두고 n8n은 그 사이를 잇는 역할만 맡깁니다.
운영할 때 하나만 기억해야 한다면 암호화 키입니다. n8n은 저장한 자격증명을 N8N_ENCRYPTION_KEY로 암호화하는데, 이 키를 잃으면 DB 백업이 있어도 자격증명을 하나도 풀지 못합니다. 키는 DB와 함께 백업해 둬야 합니다.
우리 서비스에 적용할 계획이 있으신가요?
AI 챗봇·업무 자동화 살펴보기 →함께 읽기
- DUOLABS AI 기능 탐구 5: 여러 행을 같은 규칙으로 처리하는 배치 자동화DUOLABS AI 기능 탐구 다섯 번째 글은 여러 건의 텍스트를 같은 규칙으로 반복 처리하는 배치 자동화입니다.
- Next.js 레이아웃과 라우트 그룹: loading.tsx 적용 범위Next.js 앱 라우터에서 한 폴더에는 이런 파일들이 함께 놓입니다.
- MoE 입문: 36B 모델이 27B보다 6배 빨랐던 이유로컬에서 AI 모델을 돌리다 보면 이런 상식이 생깁니다. 모델이 크면 똑똑하지만 느리다. 대체로 맞습니다.
- git push 후 자동 검사가 시작되는 이유: Continuous Integration(CI) 입문코드를 수정하고 로컬에서 잘 동작하는 것까지 확인했습니다. 이제 아래처럼 GitHub에 올립니다.
- HMAC 입문: 서버는 값이 바뀌었다는 사실을 어떻게 알아낼까?웹 서비스를 만들다 보면 이런 값들을 자주 다룹니다.