AI/N8N

๊ณต์‹ ๋ฌธ์„œ ๊ธฐ๋ฐ˜์œผ๋กœ ์ดํ•ดํ•˜๋Š” n8n ํ•ต์‹ฌ ๊ฐœ๋…

๋ˆ„๊ตฌ์„ธ์—ฐ 2025. 8. 30. 15:11

 

n8n

๐Ÿ™ n8n์ด๋ž€?

n8n์€ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค์™€ ์‹œ์Šคํ…œ์„ ์„œ๋กœ ์—ฐ๊ฒฐํ•ด ์ฃผ๋Š” ์›Œํฌํ”Œ๋กœ์šฐ ์ž๋™ํ™” ํˆด์ž…๋‹ˆ๋‹ค.
์‰ฝ๊ฒŒ ๋งํ•ด, “ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ •ํ•ด๋‘” ์ž‘์—…๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•ด ์ฃผ๋Š” ์ž๋™ํ™” ์—”์ง„”์ด์—์š”.

๋Œ€ํ‘œ์ ์ธ SaaS ์ž๋™ํ™” ํˆด๋กœ๋Š” Zapier๊ฐ€ ์žˆ์ง€๋งŒ, n8n์€ ๋ช‡ ๊ฐ€์ง€ ํฐ ์ฐจ๋ณ„์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘‰ ๊ฐœ๋ฐœ์ž ์นœํ™”์ ์ธ ๋…ธ์ฝ”๋“œ/๋กœ์šฐ์ฝ”๋“œ ์ž๋™ํ™” ํ”Œ๋žซํผ

 

๐Ÿ”‘ n8n์˜ ํŠน์ง•

  1. ์˜คํ”ˆ์†Œ์Šค & ์…€ํ”„ํ˜ธ์ŠคํŒ…
    • Zapier, Make ๊ฐ™์€ ํˆด์€ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ๊ธฐ๋ฐ˜์ด๋ผ ์‚ฌ์šฉ๋Ÿ‰์ด ๋Š˜์–ด๋‚˜๋ฉด ์š”๊ธˆ์ด ๋น ๋ฅด๊ฒŒ ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค.
    • n8n์€ ์™„์ „ํžˆ ์˜คํ”ˆ์†Œ์Šค์ด๊ณ , ์ง์ ‘ ์„œ๋ฒ„(Docker, Kubernetes ๋“ฑ)์— ์„ค์น˜ํ•ด์„œ ์šด์˜ํ•  ์ˆ˜ ์žˆ์–ด ๋น„์šฉ๊ณผ ๋ณด์•ˆ ์ธก๋ฉด์—์„œ ์ž์œ ๋„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค.
  2. Node.js ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜
    • n8n์€ Node.js ์œ„์—์„œ ๋Œ์•„๊ฐ€๋ฉฐ, JavaScript/TypeScript ์นœํ™”์ ์ธ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ํ•„์š”ํ•˜๋‹ค๋ฉด ์ง์ ‘ ์ปค์Šคํ…€ ๋…ธ๋“œ(Node)๋ฅผ ๋งŒ๋“ค์–ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ํ’๋ถ€ํ•œ ํ†ตํ•ฉ ์ง€์› (300+ ๋…ธ๋“œ)
    • Slack, Discord, Telegram ๊ฐ™์€ ๋ฉ”์‹ ์ €
    • PostgreSQL, MySQL, MongoDB ๊ฐ™์€ DB
    • AWS, GCP, GitHub, Jira, Sentry ๋“ฑ ๋‹ค์–‘ํ•œ SaaS/DevOps ํˆด
      → ์ด๋ฏธ ์ค€๋น„๋œ ๋…ธ๋“œ๋งŒ ์—ฐ๊ฒฐํ•˜๋ฉด ๋ฐ”๋กœ ์ž๋™ํ™” ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๋…ธ์ฝ”๋“œ/๋กœ์šฐ์ฝ”๋“œ ๋ฐฉ์‹
    • UI์—์„œ ๋…ธ๋“œ๋ฅผ ๋Œ์–ด๋‹ค ๋†“๊ณ  ์—ฐ๊ฒฐํ•˜๋ฉด ์›Œํฌํ”Œ๋กœ์šฐ๊ฐ€ ์™„์„ฑ๋ฉ๋‹ˆ๋‹ค.
    • ํ•„์š”ํ•  ๋•Œ๋Š” Expression(์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•)์ด๋‚˜ Function Node๋ฅผ ํ™œ์šฉํ•ด์„œ ์ง์ ‘ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ฆ‰, ๋น„๊ฐœ๋ฐœ์ž๋„ ์‰ฝ๊ฒŒ ์“ฐ๋˜, ๊ฐœ๋ฐœ์ž๊ฐ€ ์“ฐ๋ฉด ํ›จ์”ฌ ๊ฐ•๋ ฅํ•ด์ง€๋Š” ํˆด์ด์—์š”.

 

๐Ÿ”‘ n8n ํ•ต์‹ฌ ๊ฐœ๋…

  1. Workflow  - https://docs.n8n.io/workflows/
    • ์ •์˜: n8n์—์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ ๋‹จ์œ„. ์—ฌ๋Ÿฌ Node๋“ค์ด ์—ฐ๊ฒฐ๋˜์–ด ๋งŒ๋“ค์–ด์ง„ ์ž๋™ํ™” ํ”„๋กœ์„ธ์Šค.
    • ์—ญํ• : ํŠน์ • ์ด๋ฒคํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐ๋กœ ์‹œ์ž‘ํ•ด์„œ, ์กฐ๊ฑด ๋ถ„๊ธฐ → ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต → ์™ธ๋ถ€ ์„œ๋น„์Šค ํ˜ธ์ถœ → ๊ฒฐ๊ณผ ์ €์žฅ ๊ฐ™์€ ๋‹จ๊ณ„๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰.
    • ํŠน์ง•:
      • GUI ๊ธฐ๋ฐ˜์œผ๋กœ ์‹œ๊ฐ์ ์œผ๋กœ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
      • ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ (Export/Import)
      • ์‹คํ–‰ ์ด๋ ฅ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
  2. Node - https://docs.n8n.io/integrations/builtin/core-nodes/
    • ์ •์˜: Workflow๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” “์ž‘์—… ๋‹จ์œ„”.
    • ์ข…๋ฅ˜:
      • Action Node: ์‹ค์ œ ์ž‘์—… ์‹คํ–‰ (DB ์ฟผ๋ฆฌ, HTTP ์š”์ฒญ, Slack ์ „์†ก ๋“ฑ)
      • Trigger Node: Workflow ์‹œ์ž‘ ์กฐ๊ฑด ๋‹ด๋‹น
      • Function Node: JavaScript๋กœ ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต
    • ํŠน์ง•:
      • ์ž…๋ ฅ → ์ฒ˜๋ฆฌ → ์ถœ๋ ฅ ๊ตฌ์กฐ
      • ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ๋ฐ์ดํ„ฐ๊ฐ€ ํ๋ฆ„
  3. Trigger Node
    • ์ •์˜: Workflow๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์‹œ์ž‘์ .
    • ์˜ˆ์‹œ:
      • Manual Trigger – ์ˆ˜๋™ ์‹คํ–‰, ๊ฐœ๋ฐœ/๋””๋ฒ„๊น…์— ์ž์ฃผ ์‚ฌ์šฉ
      • Schedule Trigger – ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ์ž๋™ ์‹คํ–‰; cron ํ‘œํ˜„์‹๋„ ์ง€์› 
      • Form Trigger – n8n์ด ์ œ๊ณตํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์›น ํผ ์ œ์ถœ์„ ํ†ตํ•ด ์›Œํฌํ”Œ๋กœ์šฐ ์‹คํ–‰
      • Local File Trigger – ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•ด ์ž๋™ ์‹คํ–‰ (์ž์ฒด ํ˜ธ์ŠคํŒ…์—์„œ ์œ ์šฉ)
    • ํŠน์ง•:
      • Workflow๋Š” ๋ฐ˜๋“œ์‹œ Trigger Node์—์„œ ์‹œ์ž‘
      • ์—ฌ๋Ÿฌ Trigger Node๋ฅผ ํ•œ Workflow์— ๋‘˜ ์ˆ˜๋„ ์žˆ์Œ
  4. Expression - https://docs.n8n.io/code/expressions/
    • ์ •์˜: Node ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์‹œ ๋™์ ์œผ๋กœ ๊ฐ’์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹.
    • ์‚ฌ์šฉ๋ฒ•: {{ $json["fieldName"] }} ๊ฐ™์€ JavaScript ๋ฌธ๋ฒ•์„ ํ™œ์šฉ.
    • ์˜ˆ์‹œ:
      • API ์‘๋‹ต์˜ ํŠน์ • ํ•„๋“œ๋งŒ ๋‹ค์Œ Node์— ๋„˜๊ธฐ๊ธฐ
      • "Hello {{ $json["username"] }}" → Hello ์„ธ์—ฐ
    • ํŠน์ง•:
      • ๋‹จ์ˆœ ๋ณ€์ˆ˜ ์น˜ํ™˜๋ถ€ํ„ฐ, JS ์ฝ”๋“œ๋กœ ๊ฐ€๊ณต๊นŒ์ง€ ๊ฐ€๋Šฅ
      • Function Node๋ฅผ ์“ฐ์ง€ ์•Š์•„๋„ ๊ฐ„๋‹จํ•œ ๋กœ์ง์€ Expression์œผ๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
  5. Credentials - https://docs.n8n.io/credentials/
    • ์ •์˜: ์™ธ๋ถ€ ์„œ๋น„์Šค(API, DB ๋“ฑ)์™€ ์—ฐ๊ฒฐํ•  ๋•Œ ํ•„์š”ํ•œ ์ธ์ฆ ์ •๋ณด๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ.
    • ์˜ˆ์‹œ:
      • Slack OAuth Token
      • PostgreSQL DB ๊ณ„์ • ์ •๋ณด
      • GitHub Personal Access Token
    • ํŠน์ง•:
      • ์•”ํ˜ธํ™”๋˜์–ด ์ €์žฅ
      • ์—ฌ๋Ÿฌ Workflow์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ
      • ๋ณด์•ˆ์ƒ ๋…ธ๋“œ์— ์ง์ ‘ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  Credentials์— ๋“ฑ๋ก ํ›„ ์„ ํƒ
  6. Execution - https://docs.n8n.io/workflows/executions/
    • ์ •์˜: Workflow๊ฐ€ ์‹คํ–‰๋œ ๊ธฐ๋ก. ์–ด๋–ค Trigger๋กœ ์‹œ์ž‘๋˜์—ˆ๊ณ , ๊ฐ Node๊ฐ€ ์–ด๋–ค ์ž…๋ ฅ/์ถœ๋ ฅ์„ ๊ฐ€์กŒ๋Š”์ง€ ํ™•์ธ ๊ฐ€๋Šฅ.
    • ํŠน์ง•:
      • ์„ฑ๊ณต/์‹คํŒจ ์—ฌ๋ถ€ ํ™•์ธ
      • ์‹คํŒจ ์‹œ Error Workflow ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ
      • Debug ๋ชจ๋“œ์—์„œ ๋‹จ๊ณ„๋ณ„ ๋ฐ์ดํ„ฐ ํ™•์ธ ๊ฐ€๋Šฅ
    • ์˜ˆ์‹œ:
      • Cron Trigger → DB Query → Slack ๋ฉ”์‹œ์ง€ → ์„ฑ๊ณต ๋กœ๊ทธ
      • Webhook Trigger → API ์˜ค๋ฅ˜ ๋ฐœ์ƒ → ์‹คํŒจ ๋กœ๊ทธ

 

โš™๏ธ ์„ค์น˜ (Self-host ๊ธฐ์ค€)

Docker๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ€์žฅ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker run -it --rm \
  --name n8n \
  -p 5678:5678 \
  -e N8N_BASIC_AUTH_USER=user \
  -e N8N_BASIC_AUTH_PASSWORD=pass \
  n8nio/n8n

๐Ÿ‘‰ ์‹คํ–‰ ํ›„ http://localhost:5678 ๋กœ ์ ‘์†ํ•˜๋ฉด n8n ์—๋””ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ‘‰ N8N_BASIC_AUTH_USER / N8N_BASIC_AUTH_PASSWORD ๋ฅผ ์„ค์ •ํ•ด ๋‘๋ฉด ๊ธฐ๋ณธ ์ธ์ฆ ๋กœ๊ทธ์ธ ํ™”๋ฉด์ด ๋œน๋‹ˆ๋‹ค. (๋ณด์•ˆ์ƒ ๊ถŒ์žฅ)

 

๐Ÿณ Docker ์‹คํ–‰ ์‹œ ์ฃผ์š” ํ™˜๊ฒฝ๋ณ€์ˆ˜

n8n์€ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์‹ค๋ฌด์—์„œ๋Š” ์ตœ์†Œํ•œ ์•„๋ž˜ ์ •๋„๋Š” ์ง€์ •ํ•ด๋‘๋ฉด ์ข‹์•„์š”.

1. ๊ธฐ๋ณธ ๋ณด์•ˆ

-e N8N_BASIC_AUTH_USER=user \
-e N8N_BASIC_AUTH_PASSWORD=pass

 

  • ๊ด€๋ฆฌ์ž ๋กœ๊ทธ์ธ ๊ณ„์ •/๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •
  • ๊ธฐ๋ณธ ์ธ์ฆ์„ ์ผœ์ง€ ์•Š์œผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์ ‘์† ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๊ผญ ์„ค์ • ๊ถŒ์žฅ

2. ์‹คํ–‰ ํ™˜๊ฒฝ(Workflow ์ €์žฅ ์œ„์น˜)

-v ~/.n8n:/home/node/.n8n

 

  • ์›Œํฌํ”Œ๋กœ์šฐ์™€ ์„ค์ •์„ ํ˜ธ์ŠคํŠธ ๋ณผ๋ฅจ์— ์ €์žฅ
  • --rm ์˜ต์…˜์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉด ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฃŒ ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง€๋ฏ€๋กœ, ์‹ค์ œ ์šด์˜์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

3. ์™ธ๋ถ€ ์ ‘์†์šฉ ์„ค์ •

-e N8N_HOST=example.com \
-e N8N_PORT=5678 \
-e N8N_PROTOCOL=https
  • `N8N_HOST`: ์„œ๋น„์Šค ๋„๋ฉ”์ธ/ํ˜ธ์ŠคํŠธ๋ช…
  • `N8N_PORT`: ํฌํŠธ (๊ธฐ๋ณธ 5678)
  • `N8N_PROTOCOL`: http ๋˜๋Š” https

๐Ÿ‘‰ ํ”„๋ก์‹œ/๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ(Nginx, Traefik)์™€ ํ•จ๊ป˜ HTTPS ์„ค์ • ์‹œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

 

4. Webhook ๊ด€๋ จ

-e WEBHOOK_URL=https://example.com/

 

  • ์™ธ๋ถ€ ์„œ๋น„์Šค์—์„œ n8n Webhook Node๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•  URL
  • ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์ด๋‚˜ ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค์— ํ•„์ˆ˜

 

5. ์‹คํ–‰/ํ ๋ชจ๋“œ (๊ณ ๊ธ‰)

-e EXECUTIONS_PROCESS=main
  • `main`: ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค (๊ธฐ๋ณธ)
  • `queue`: BullMQ ๊ธฐ๋ฐ˜ ํ ๋ชจ๋“œ (์—ฌ๋Ÿฌ ์›Œ์ปค์—์„œ ๋ณ‘๋ ฌ ์‹คํ–‰ ๊ฐ€๋Šฅ)
  • ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ/๊ณ ์„ฑ๋Šฅ ํ™˜๊ฒฝ์—์„œ๋Š” queue ๋ชจ๋“œ์™€ Redis ์—ฐ๋™์„ ์‚ฌ์šฉ

6. ์‹คํ–‰ ์ด๋ ฅ ๋ณด๊ด€

-e EXECUTIONS_DATA_SAVE_ON_SUCCESS=none \ -e EXECUTIONS_DATA_SAVE_ON_ERROR=all
  • ์„ฑ๊ณตํ•œ ์‹คํ–‰์€ ๊ธฐ๋กํ•˜์ง€ ์•Š๊ณ , ์‹คํŒจํ•œ ์‹คํ–‰๋งŒ ๊ธฐ๋กํ•˜๋„๋ก ์„ค์ •
  • DB ๊ณต๊ฐ„ ์ ˆ์•ฝ์— ์œ ์šฉ

7. SQLite ๋Œ€์‹  Postgres ์“ฐ๊ธฐ(์šด์˜/ํ˜‘์—… ๊ถŒ์žฅ)

  -e DB_POSTGRESDB_HOST=localhost \
  -e DB_POSTGRESDB_PORT=5432 \
  -e DB_POSTGRESDB_DATABASE=n8n \
  -e DB_POSTGRESDB_USER=n8n \
  -e DB_POSTGRESDB_PASSWORD=๋น„๋ฐ€๋ฒˆํ˜ธ \
  • ๊ธฐ๋ณธ DB๋Š” SQLite์ง€๋งŒ, PostgreSQL์„ ๊ณต์‹ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค( MySQL/MariaDB๋Š” v1.0์—์„œ deprecated ).
  • ์Šคํ‚ค๋งˆ, SSL ๋“ฑ๋„ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์„ค์ • ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    `DB_POSTGRESDB_SCHEMA`(๊ธฐ๋ณธ public), `DB_POSTGRESDB_SSL_ENABLED`, ..._CA/CERT/KEY ๋“ฑ.
  • “๊ธฐ๋ณธ์€ SQLite, Postgres ์ง€์›, MySQL/MariaDB deprecated”๋„ ๊ณต์‹ ๋ฌธ์„œ์— ๋ช…์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    https://docs.n8n.io/hosting/configuration/environment-variables/database/

 

๐Ÿงฉ ์ฃผ์š” ๊ธฐ๋Šฅ (์‹ค๋ฌด์—์„œ ๋งŽ์ด ์“ฐ๋Š” ๊ฒƒ)

1. Webhook Node → ์™ธ๋ถ€ ์ด๋ฒคํŠธ ๋ฐ›์•„์„œ ์›Œํฌํ”Œ๋กœ์šฐ ์‹คํ–‰

 

  • ์—ญํ• : ์™ธ๋ถ€ ์„œ๋น„์Šค๊ฐ€ n8n์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ/์šด์˜ 2๊ฐœ์˜ URL์„ ์ œ๊ณตํ•˜๊ณ , ์‘๋‹ต ํƒ€์ด๋ฐ(์ฆ‰์‹œ/๋งˆ์ง€๋ง‰ ๋…ธ๋“œ ์™„๋ฃŒ/Respond to Webhook ๋…ธ๋“œ ์‚ฌ์šฉ)๋„ ์„ ํƒ ๊ฐ€๋Šฅ.
    ์ธ์ฆ ๋ฐฉ์‹(Basic/Header/JWT)๊ณผ CORS, IP ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ, ๋ฐ”์ด๋„ˆ๋ฆฌ ์ˆ˜์‹ ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ ํŽ˜์ด๋กœ๋“œ๋Š” ๊ธฐ๋ณธ 16MB(ํ™˜๊ฒฝ๋ณ€์ˆ˜ `N8N_PAYLOAD_SIZE_MAX`๋กœ ์กฐ์ •)
  • Tip
    • ํ…Œ์ŠคํŠธ ์ค‘์—” Test URL๋กœ “Listen for Test Event”, ์šด์˜ ์ „ํ™˜ ์‹œ Production URL.
    • HTML์„ ์‘๋‹ต์œผ๋กœ ๋ณด๋‚ผ ๋•Œ๋Š” n8n์ด ๋ณด์•ˆ์„ ์œ„ํ•ด <iframe>๋กœ ๊ฐ์Œ€ ์ˆ˜ ์žˆ์–ด์š”(1.103.0+)

2. If / Switch / Function(Code) Node — ๋ถ„๊ธฐ์™€ ๊ฐ€๊ณต์˜ 3์ข… ์„ธํŠธ

If Node

  • ์—ญํ• : ๋‹จ์ผ ์กฐ๊ฑด์œผ๋กœ true/false ๋‘ ๊ฐˆ๋ž˜ ๋ถ„๊ธฐ. v1.0 ์ดํ›„ ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋ฉด์„œ(๋ ˆ๊ฑฐ์‹œ v0์™€ ๋‹ค๋ฆ„) If+Merge ์กฐํ•ฉ์˜ ๋™์ž‘์ด ์ •๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๋ ˆ๊ฑฐ์‹œ ์ฃผ์˜ ์„น์…˜ ์ฐธ๊ณ ).
    https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.if/
  • ์˜ˆ์‹œ(ํ‘œํ˜„์‹): {{$json.total > 100}}

Switch Node

  • ์—ญํ• : ์—ฌ๋Ÿฌ ์ผ€์ด์Šค๋กœ ๋ผ์šฐํŒ…(If์˜ ๋ฉ€ํ‹ฐ๋ฒ„์ „). Rules ๋ชจ๋“œ(์ถœ๋ ฅ๋ณ„ ๊ทœ์น™) ๋˜๋Š” Expression ๋ชจ๋“œ(์ธ๋ฑ์Šค ๋ฐ˜ํ™˜) ์ง€์›.
    https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.switch/
  • ์˜ˆ์‹œ: ์ƒํƒœ๊ฐ’์ด pending/shipped/cancelled์ผ ๋•Œ 1·2·3๋ฒˆ ์ถœ๋ ฅ์œผ๋กœ ๋ถ„๊ธฐ

Function / Code Node

  • ์—ญํ• : JS/ํŒŒ์ด์ฌ์œผ๋กœ ์ž์œ ๋กœ์šด ๊ฐ€๊ณต. v0.198.0+๋ถ€ํ„ฐ๋Š” Code Node๊ฐ€ Function/Function Item์„ ๋Œ€์ฒด.
  • ๋ชจ๋“œ: “Run once for all items”(๋ฐฐ์น˜ ์ฒ˜๋ฆฌ) vs “Run once for each item”(์•„์ดํ…œ๋ณ„).
  • ์™ธ๋ถ€ ๋ชจ๋“ˆ: Self-host์—์„  ์™ธ๋ถ€ npm ๋ชจ๋“ˆ ์‚ฌ์šฉ ๊ฐ€๋Šฅ(์„ค์ • ํ•„์š”). Cloud์—์„  crypto, moment๋งŒ ์ œ๊ณต. ํŒŒ์ผ์‹œ์Šคํ…œ/์ง์ ‘ HTTP ์ ‘๊ทผ์€ ๋ถˆ๊ฐ€(์ „์šฉ ๋…ธ๋“œ ์‚ฌ์šฉ). ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ/์•„์ดํ…œ ๋งํฌ ๊ทœ์น™๋„ ๋ฌธ์„œ์— ์ •๋ฆฌ๋ผ ์žˆ์Šต๋‹ˆ๋‹ค.
    https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/
  • ์ž์ฃผ ์“ฐ๋Š” ํŒจํ„ด(JS)
// ๋ชจ๋“  ์ž…๋ ฅ ์•„์ดํ…œ์„ ๊ฐ€์ ธ์™€ ๊ฐ€๊ณต ํ›„ ๋ฐ˜ํ™˜
const items = $input.all();
return items.map(item => ({ json: { ...item.json, ok: true }}));

 

3. Wait Node  ์Šน์ธ/์ด๋ฒคํŠธ/์‹œ๊ฐ„๊นŒ์ง€ “์ž ์‹œ ๋ฉˆ์ถค

 

  • ์—ญํ• : ์‹คํ–‰์„ DB๋กœ ์˜คํ”„๋กœ๋”ฉํ•˜๊ณ  ์กฐ๊ฑด์„ ๊ธฐ๋‹ค๋ฆฐ ๋’ค ์žฌ๊ฐœ. ๋Œ€๊ธฐ ์กฐ๊ฑด์€ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ, ํŠน์ • ์‹œ๊ฐ, ์›นํ›… ํ˜ธ์ถœ, ํผ ์ œ์ถœ 4๊ฐ€์ง€. On Webhook Call์—์„œ๋Š” ์‹คํ–‰๋งˆ๋‹ค ๊ณ ์œ ํ•œ $execution.resumeUrl ์ด ์ƒ์„ฑ๋ผ ์™ธ๋ถ€์— ์ „๋‹ฌํ•ด ์žฌ๊ฐœ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
    65์ดˆ ๋ฏธ๋งŒ ๋Œ€๊ธฐ๋Š” ์˜คํ”„๋กœ๋”ฉ ์—†์ด ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค์—์„œ ์ด์–ด์ง‘๋‹ˆ๋‹ค(์„œ๋ฒ„ ์‹œ๊ฐ„ ๊ธฐ์ค€).
    https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.wait/
  • ์‹ค๋ฌด ์˜ˆ์‹œ:
    • “๊ฒ€ํ†  ๋Œ€๊ธฐ” ์ด๋ฉ”์ผ ๋ฐœ์†ก → ์Šน์ธ์ž๊ฐ€ resumeUrl ํด๋ฆญ ์‹œ ์ด์–ด์„œ ์ง„ํ–‰
    • “๋‚ด์ผ 09:00์— ๋‹ค์‹œ ์‹คํ–‰” ์Šค์ผ€์ค„๋ง

4. Error Workflow → ์‹คํŒจ ์‹œ ์•Œ๋ฆผ/Slack ์—ฐ๋™

  • ์—ญํ• : ์›Œํฌํ”Œ๋กœ์šฐ ์‹คํŒจ ์‹œ Error Trigger ๋…ธ๋“œ๊ฐ€ ์žˆ๋Š” ๋ณ„๋„ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์‹คํ–‰ํ•ด ์Šฌ๋ž™/๋ฉ”์ผ ์•Œ๋ฆผ, ๋กค๋ฐฑ, ์žฌ์‹œ๋„ ํ ์ ์žฌ ๋“ฑ์„ ์ˆ˜ํ–‰. Workflow Settings์—์„œ Error Workflow๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.errortrigger/
  • ๊ตฌ์„ฑ ํŒ: ์‹คํŒจ ๋กœ๊ทธ๋ฅผ Executions์—์„œ ์—ด๋žŒํ•˜๊ณ , Error Workflow์—์„œ `{{$json.error.message}}`, `{{$json.workflow.id}}` ๊ฐ™์€ ์ •๋ณด๋ฅผ ์Šฌ๋ž™ ๋ฉ”์‹œ์ง€์— ํฌํ•จ.
    https://docs.n8n.io/flow-logic/error-handling/

5. Looping — ๋Œ€์šฉ๋Ÿ‰/ํŽ˜์ด์ง€๋„ค์ด์…˜/๋ ˆ์ดํŠธ๋ฆฌ๋ฐ‹

  • ๊ธฐ๋ณธ ์ฒ ํ•™: ๋Œ€๋ถ€๋ถ„์˜ ๋…ธ๋“œ๋Š” ๋ฆฌ์ŠคํŠธ ์ž…๋ ฅ์„ ์ž๋™์œผ๋กœ ์ˆœํšŒํ•˜๋ฏ€๋กœ ๋ณ„๋„ ๋ฃจํ”„๊ฐ€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ํŽ˜์ด์ง€๋„ค์ด์…˜, ๋ ˆ์ดํŠธ ๋ฆฌ๋ฐ‹ ํšŒํ”ผ, ํŠน์ • ์˜ˆ์™ธ ๋…ธ๋“œ ์ฒ˜๋ฆฌ์—๋Š” Loop Over Items(Split in Batches) ๋…ธ๋“œ๋ฅผ ์”๋‹ˆ๋‹ค. Reset ์˜ต์…˜์œผ๋กœ ๋ฐ˜๋ณต ์‹œ ์ž…๋ ฅ์„ ์ƒˆ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๋ฉฐ ์ข…๋ฃŒ ์กฐ๊ฑด(If)๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ 
    https://docs.n8n.io/flow-logic/looping
  • ํŒจํ„ด: “๋‹ค์Œ ํŽ˜์ด์ง€๊ฐ€ ์žˆ์œผ๋ฉด If๋กœ ๋ฃจํ”„ ๊ณ„์† → ์—†์œผ๋ฉด ์ข…๋ฃŒ”, “API 100๊ฑด์”ฉ ๋ฐฐ์น˜ ์ „์†ก”

6. Version Control(์ด๋ ฅ/๋กค๋ฐฑ) — ์•ˆ์ „ํ•œ ๋ณ€๊ฒฝ ๊ด€๋ฆฌ

  • Workflow History: Enterprise(Cloud Pro๋Š” ์ œํ•œ์ )์—์„œ ์ด์ „ ๋ฒ„์ „ ์—ด๋žŒ/๋กœ๋”ฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
    https://docs.n8n.io/release-notes
  • Git ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ ๋ถ„๋ฆฌ(์†Œ์Šค ์ปจํŠธ๋กค): ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ์—์„œ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์™€ ์—ฐ๊ฒฐํ•ด ๋ธŒ๋žœ์น˜๋ณ„ ํ™˜๊ฒฝ(dev/stage/prod)๊ณผ Diff ๋น„๊ต๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ ์š”๊ฑด๊ณผ ์‚ฌ์šฉ๋ฒ•์€ ๋ฌธ์„œ ์ฐธ๊ณ .
    https://docs.n8n.io/source-control-environments/
  • ์ปค๋ฎค๋‹ˆํ‹ฐ/์…€ํ”„ํ˜ธ์ŠคํŠธ ๋ฐฑ์—… ํŒ: CLI๋กœ ์›Œํฌํ”Œ๋กœ์šฐ/์ž๊ฒฉ์ฆ๋ช… Export/Import ์ž๋™ํ™”(์˜ˆ: n8n export:workflow --all). ์ •๊ธฐ ๋ฐฑ์—… + Git์— JSON ์ €์žฅ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
    https://docs.n8n.io/hosting/cli-commands

 

 

n8n์€ ๋‹จ์ˆœํžˆ ์ž๋™ํ™”๋ฅผ ๋„˜์–ด, ํŒ€ ์ƒ์‚ฐ์„ฑ์„ ๋†’์—ฌ์ฃผ๋Š” ์˜คํ”ˆ์†Œ์Šค ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.
์ด๋ฒˆ ๊ธ€์—์„œ ์ •๋ฆฌํ•œ ๊ธฐ๋ณธ ๊ฐœ๋…์„ ๋ฐ”ํƒ•์œผ๋กœ, ์ดํ›„์—๋Š” ์‹ค์ œ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ๋” ๊นŠ์ด ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ™Œ