n8n으로 반복 업무 자동화하기 - 개발자를 위한 워크플로우 자동화
반복적인 작업이 있다면 자동화를 고민해야 한다. n8n은 개발자 친화적인 워크플로우 자동화 도구다.
1. 왜 n8n인가?
| 비교 | Zapier | Make | n8n |
|---|---|---|---|
| 가격 | 유료 | 유료 | 오픈소스 (무료) |
| 셀프호스팅 | X | X | O |
| 커스텀 코드 | 제한적 | 제한적 | 자유롭게 가능 |
| Node 개수 제한 | 있음 | 있음 | 없음 |
n8n의 장점:
- 오픈소스: 코드가 공개되어 있고, 무료로 사용 가능
- 셀프호스팅: 내 서버에서 돌리면 데이터가 외부로 나가지 않음
- 코드 노드: JavaScript/Python으로 복잡한 로직 구현 가능
2. 기본 개념
- Trigger: 워크플로우를 시작하는 이벤트 (Webhook, 스케줄, 앱 이벤트)
- Node: 데이터를 처리하는 단위 (HTTP 요청, 조건 분기, 코드 실행)
- Action: 최종 결과 (메시지 전송, 데이터 저장)
3. 실전 예시
예시 1: GitHub PR → Slack 알림
PR이 올라오면 Slack 채널에 알림을 보내는 워크플로우:
설정:
- GitHub에서 Webhook 설정 (PR 이벤트)
- n8n에서 Webhook 노드로 수신
- 조건 분기로 필터링
- Slack 노드로 메시지 전송
예시 2: 정기 리포트 자동 생성
매일 아침 9시 → DB에서 데이터 조회 → CSV 생성 → 이메일 발송
Cron Trigger 사용:
0 9 * * * # 매일 09:00 실행
예시 3: 서버 장애 감지
Health Check 실패 → Slack + 이메일 + PagerDuty 동시 알림
4. 셀프호스팅 가이드
Docker Compose로 간단히 배포 가능:
# docker-compose.yml
version: '3.8'
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=changeme
- WEBHOOK_URL=https://n8n.yourdomain.com/
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:docker-compose up -d보안 고려사항:
- 반드시 HTTPS 사용 (Let's Encrypt)
- 기본 인증 또는 SSO 설정
- 외부 접근 제한 (VPN, IP 화이트리스트)
5. 코드 노드 활용
복잡한 로직은 Code 노드���서 JavaScript로 처리:
// Code 노드 예시
const items = $input.all();
const result = items.map(item => ({
...item.json,
processed: true,
timestamp: new Date().toISOString()
}));
return result.map(json => ({ json }));가능한 것들:
- API 응답 가공
- 복잡한 조건 분기
- 외부 라이브러리 사용 (npm)
6. 한계와 대안
n8n의 한계
- 복잡한 비즈니스 로직: 결국 코드로 짜는 게 나음
- 고성능 요구: 대량 데이터 처리는 별도 파이프라인 권장
- 버전 관리: Git 연동이 번거로움 (코드 대비)
언제 n8n이 적합한가?
| 상황 | 적합 |
|---|---|
| 단순 연동 (A → B 알림) | O |
| 정기 배치 작업 | O |
| 복잡한 데이터 변환 | △ (코드 노드) |
| 고성능 스트리밍 | X |
7. 활용 팁
-
작게 시작하기
- 하나의 간단한 워크플로우부터
- 동작 확인 후 점진적 확장
-
에러 핸들링
- Error Trigger 설정
- 실패 시 Slack 알림
-
변수 관리
- 환경변수로 API 키 관리
- 하드코딩 금지
-
백업
- 워크플로우 JSON 정기 export
- 볼륨 백업
마무리
n8n은 개발자 친화적인 워크플로우 자동화 도구다.
- 오픈소스 + 셀프호스팅 가능
- 코드 노드로 유연하게 확장 가능
- Zapier/Make 대비 비용 절감
반복 작업이 있다면 자동화를 고민하자. 시간은 개발에 써야 한다.
Comments
잘못된 부분이 있을 수 있습니다 ! 자유롭게 댓글을 달아주세요 :)