n8n에서 반복 작업 처리하기: Loop 노드와 SplitInBatches
자동화 시스템에서 반복적인 작업을 처리하는 것은 매우 중요한 부분입니다. n8n에서는 반복 작업을 처리할 수 있는 여러 가지 방법을 제공하는데, 그 중에서 Loop 노드와 SplitInBatches 노드가 있습니다. 이 노드들을 사용하면 대량의 데이터를 효율적으로 처리하거나, 반복적인 작업을 자동화할 수 있습니다. 이번 강의에서는 이 두 가지 노드를 사용하여 반복 작업을 처리하는 방법을 살펴보겠습니다.
1. 반복 작업 처리란?
반복 작업 처리란 특정 작업을 여러 번 반복적으로 수행하는 것을 의미합니다. 예를 들어, 여러 개의 이메일 주소에 대해 이메일을 보내거나, 대량의 데이터를 하나씩 처리하는 작업을 자동화하는 것이 반복 작업 처리의 예입니다. n8n에서는 반복 작업을 효과적으로 처리하기 위해 다양한 노드를 제공하며, 이를 통해 복잡한 반복 작업을 간단하게 설정할 수 있습니다.
2. Loop 노드란?
Loop 노드는 주어진 데이터 목록을 반복하면서 각 항목에 대해 동일한 작업을 실행하는 데 사용됩니다. 이 노드는 주로 리스트 형태의 데이터를 처리할 때 유용합니다. 예를 들어, 이메일 목록을 처리하거나, 여러 개의 파일을 하나씩 처리하는 작업을 반복적으로 수행할 때 사용됩니다.
Loop 노드는 지정된 데이터 목록을 순차적으로 반복하며, 각 반복에서 목록의 항목을 처리할 수 있게 해줍니다. 이를 통해 여러 항목을 자동으로 처리하고, 반복적인 작업을 효율적으로 수행할 수 있습니다.
3. Loop 노드 설정하기
n8n에서 Loop 노드를 설정하는 방법은 매우 간단합니다. 아래 단계를 통해 Loop 노드를 사용하여 데이터를 반복 처리하는 방법을 배워보겠습니다.
- 노드 추가: n8n 워크플로우 편집기에서 "노드 추가" 버튼을 클릭하고 "Loop"를 선택하여 Loop 노드를 추가합니다.
- 입력 데이터 설정: Loop 노드는 리스트 형태의 데이터를 입력으로 받습니다. 예를 들어, 여러 개의 이메일 주소가 들어 있는 배열을 입력으로 받을 수 있습니다.
- 반복 작업 설정: Loop 노드는 각 반복에서 수행할 작업을 설정할 수 있습니다. 예를 들어, 이메일을 하나씩 보내는 작업을 설정하거나, 특정 API 호출을 반복적으로 수행하는 작업을 설정할 수 있습니다.
- 반복 종료 조건 설정: Loop 노드는 자동으로 리스트의 끝에 도달하면 반복을 종료합니다. 종료 조건을 따로 설정할 필요 없이, 데이터의 길이에 맞춰 반복 작업이 종료됩니다.
4. SplitInBatches 노드란?
SplitInBatches 노드는 대량의 데이터를 한 번에 처리하지 않고, 데이터를 작은 배치로 나누어 처리하는 데 사용됩니다. 이 노드는 큰 데이터 덩어리를 한 번에 처리할 경우 발생할 수 있는 성능 문제를 해결하는 데 매우 유용합니다. 예를 들어, 1000개의 이메일 주소에 대해 이메일을 보내는 작업을 할 때, 한 번에 모든 이메일을 보내는 대신 배치 단위로 나누어 작업을 처리할 수 있습니다.
SplitInBatches 노드는 데이터를 여러 개의 작은 그룹으로 나누어 처리하며, 각 그룹에 대해 반복 작업을 수행할 수 있습니다. 이 노드는 주로 대량의 데이터를 처리할 때 성능을 최적화하고, 한 번에 너무 많은 작업을 처리하지 않도록 도와줍니다.
5. SplitInBatches 노드 설정하기
n8n에서 SplitInBatches 노드를 사용하는 방법은 매우 직관적입니다. 아래 단계를 통해 SplitInBatches 노드를 설정하고 배치 작업을 처리하는 방법을 살펴보겠습니다.
- 노드 추가: n8n 워크플로우 편집기에서 "노드 추가" 버튼을 클릭하고 "SplitInBatches"를 선택하여 노드를 추가합니다.
- 배치 크기 설정: SplitInBatches 노드는 한 번에 처리할 데이터의 양을 설정하는 옵션이 있습니다. 예를 들어, 한 번에 10개의 항목만 처리하도록 설정할 수 있습니다. 이렇게 하면 데이터를 10개씩 나누어 반복 작업을 실행할 수 있습니다.
- 입력 데이터 설정: SplitInBatches 노드는 리스트 형태의 데이터를 입력으로 받습니다. 예를 들어, 1000개의 이메일 주소를 포함하는 배열을 입력으로 받을 수 있습니다.
- 반복 작업 설정: 배치가 나누어지면, 각 배치에 대해 동일한 작업을 반복적으로 수행합니다. 이메일을 보내거나, API 요청을 처리하는 등의 작업을 설정할 수 있습니다.
6. Loop 노드와 SplitInBatches 노드 비교
Loop 노드와 SplitInBatches 노드는 둘 다 반복 작업을 처리하는 데 사용되지만, 사용하는 목적과 상황이 다릅니다. 아래에서 이 두 노드를 비교해 보겠습니다.
- Loop 노드: Loop 노드는 리스트 형태의 데이터를 순차적으로 반복하여 처리합니다. 모든 데이터를 한 번에 처리하는 경우 적합하며, 각 항목에 대해 동일한 작업을 반복적으로 수행할 때 유용합니다.
- SplitInBatches 노드: SplitInBatches 노드는 대량의 데이터를 작은 배치로 나누어 처리할 수 있도록 합니다. 대규모 데이터를 다룰 때 성능을 최적화하고, 한 번에 처리할 수 있는 데이터 양을 제어하는 데 유용합니다.
7. 예제: Loop 노드와 SplitInBatches 노드를 활용한 이메일 자동화
이제 Loop 노드와 SplitInBatches 노드를 사용하여 이메일 자동화 예제를 살펴보겠습니다. 아래는 1000개의 이메일 주소에 대해 이메일을 보내는 작업을 자동화하는 예제입니다.
예제 1: Loop 노드를 사용한 이메일 보내기
1000개의 이메일 주소가 들어 있는 배열을 순차적으로 반복하면서 각 이메일 주소로 이메일을 보내는 작업을 설정합니다. Loop 노드를 사용하면 각 이메일을 하나씩 처리할 수 있습니다.
const emails = $input.item.json.emails; for (let i = 0; i < emails.length; i++) { // 이메일 보내기 작업 실행 sendEmail(emails[i]); }
예제 2: SplitInBatches 노드를 사용한 이메일 보내기
SplitInBatches 노드를 사용하여 이메일을 한 번에 100개씩 배치로 나누어 처리할 수 있습니다. 이렇게 하면 한 번에 100개의 이메일만 보내므로 시스템 성능에 미치는 영향을 줄일 수 있습니다.
const emails = $input.item.json.emails; const batchSize = 100; // 한 번에 처리할 이메일 수 const batches = chunk(emails, batchSize); // 데이터를 배치로 나누는 함수 for (let batch of batches) { // 각 배치에 대해 이메일 보내기 작업 실행 sendBatchEmail(batch); }
이 코드는 이메일 주소를 100개씩 나누어 한 번에 100개의 이메일만 처리합니다. 배치 처리를 통해 성능을 최적화하고, 시스템 부하를 줄일 수 있습니다.
8. 결론: Loop 노드와 SplitInBatches로 반복 작업 효율적으로 처리하기
n8n의 Loop 노드와 SplitInBatches 노드는 반복 작업을 처리하는 데 매우 유용한 도구입니다. Loop 노드는 데이터를 순차적으로 반복하여 처리하는 데 적합하고, SplitInBatches 노드는 대량의 데이터를 작은 배치로 나누어 처리할 수 있게 도와줍니다. 이 두 노드를 활용하면 반복 작업을 효율적으로 자동화하고, 성능을 최적화할 수 있습니다.
다음 강의에서는 n8n에서 다양한 데이터 소스를 활용한 자동화에 대해 다룰 예정입니다. n8n의 강력한 기능을 통해 더 많은 자동화 작업을 손쉽게 처리해 보세요!