안녕하세요.
오늘부터 노코드와 로우코드 자동화 플랫폼을 직접 구축하는 시리즈를 시작하겠습니다.
블록체인이나 정보보안 그리고 프론트엔드 관련 최신 기술 동향을 자동으로 수집하여 인공지능이 요약해 주고 다양한 메신저로 보내주는 봇을 직접 만들어 볼 예정입니다.
이를 위해서는 데이터가 흘러가는 길인 파이프라인을 구축해야 합니다.
본격적인 실습에 앞서 오늘은 자동화 도구들의 생태계를 분석하고 우리가 사용할 도구를 선정하는 시간을 가져보겠습니다.
이 시리즈는 Mac OS 환경을 기준으로 설명하지만 Windows나 Linux 사용자분들도 도커를 이용해 동일하게 따라 하실 수 있으니 편안하게 읽어주시기 바랍니다.
자동화 파이프라인을 구축하려고 할 때 가장 먼저 떠오르는 서비스는 Zapier와 Make입니다.
이들은 웹 브라우저에서 마우스 클릭만으로 여러 앱을 연결할 수 있는 훌륭한 노코드 도구입니다.
하지만 개인 프로젝트나 기업의 핵심 업무에 상용 서비스를 깊게 도입하다 보면 명확한 한계점을 마주하게 됩니다.
가장 큰 장벽은 비용 문제입니다.
데이터를 한 번 수집하고 가공할 때마다 플랫폼의 자원을 사용하게 되며 이 횟수가 늘어날수록 매월 지불해야 하는 요금이 기하급수적으로 증가합니다.
또한 특정 회사의 서비스 구조에 우리의 데이터 흐름이 갇히게 되는 벤더 종속성 문제도 심각합니다.
플랫폼의 정책이 바뀌거나 서비스가 종료되면 정성껏 만들어둔 자동화 시스템을 하루아침에 잃어버릴 위험이 있습니다.
특정 서비스에 데이터 흐름이 묶여 있는 벤더 종속성
이러한 한계를 극복하기 위해 서버나 개인 컴퓨터에 직접 설치하여 무료로 사용할 수 있는 오픈소스 기반의 셀프 호스팅 도구들이 큰 인기를 얻고 있습니다.
대표적으로 개발자들이 주목하는 네 가지 도구를 비교해 보겠습니다.
Activepieces는 직관적인 사용자 화면과 훌륭한 확장성을 무기로 최근 떠오르고 있는 신흥 강자입니다.
인공지능 도구들과의 연동이 매우 매끄럽다는 장점이 있습니다.
공식 홈페이지↗ 에서 자세한 정보를 확인할 수 있습니다.
Node-RED는 사물인터넷 기기나 하드웨어 연동에 특화된 클래식한 도구입니다.
노드라는 상자들을 선으로 연결하는 시각적인 프로그래밍 방식의 기초를 다진 선구자적인 역할을 했습니다.
공식 홈페이지↗ 에서 자세한 정보를 확인할 수 있습니다.
Windmill은 파이썬이나 타입스크립트 코드를 직접 다루는 데 익숙한 개발자에게 친화적인 도구입니다.
단순한 데이터 전달을 넘어 복잡한 코드를 중앙에서 통제하는 오케스트레이션 엔진으로서 강력한 성능을 발휘합니다.
공식 홈페이지↗ 에서 자세한 정보를 확인할 수 있습니다.
Huginn은 웹 크롤링과 특정 데이터의 변경 감지에 특화된 에이전트 시스템입니다.
웹 사이트의 내용이 바뀌었을 때 이를 재빠르게 감지하고 알림을 보내는 작업에 아주 뛰어납니다.
다양한 도구들이 각자의 매력을 가지고 있지만 본 시리즈에서는 강력한 기능과 밸런스를 갖춘 n8n을 최종 도구로 선택했습니다.
소프트웨어의 뼈대인 아키텍처 관점에서 n8n이 가지는 기술적 강점을 자세히 알아보겠습니다.
n8n은 코드를 투명하게 공개하는 공정 사용 라이선스를 채택하고 있습니다.
이를 통해 개인 사용자는 비용 걱정 없이 상용 서비스에 버금가는 강력한 기능을 로컬 환경에서 마음껏 누릴 수 있습니다.
또한 전 세계 개발자들이 만들어 공유하는 압도적인 양의 노드 생태계를 자랑합니다.
노드란 특정 기능을 수행하는 하나의 작업 블록을 뜻하며 구글 시트나 슬랙 같은 수백 개의 서비스와 손쉽게 데이터를 주고받을 수 있습니다.
n8n의 작동 방식을 이해하려면 컴퓨터 과학의 자료구조 중 하나인 방향성 비순환 그래프를 알아두면 좋습니다.
이름은 조금 어렵지만 원리는 아주 간단합니다.
트리 구조처럼 노드들이 선으로 연결되어 있는데 데이터가 항상 화살표가 가리키는 한쪽 방향으로만 흘러가는 규칙을 가집니다.
데이터가 다시 과거의 노드로 거슬러 올라가 무한히 맴도는 현상을 구조적으로 차단한 것입니다.
덕분에 복잡한 뉴스 클리핑 파이프라인을 만들더라도 데이터가 어디서 들어와서 어떻게 가공되는지 예측하고 통제하기가 매우 쉽습니다.
만약 생태계에 내가 원하는 서비스 노드가 없다면 어떻게 해야 할까요.
n8n은 이런 상황을 위해 사용자가 직접 외부 서버와 통신할 수 있는 커스텀 HTTP 요청 노드를 제공합니다.
아래는 n8n에서 외부 API를 호출할 때 내부적으로 다루어지는 데이터의 구조를 보여주는 간단한 예시입니다.
http-request-payload-example.json // n8n의 HTTP Request 노드가 사용하는 데이터 형태의 예시입니다.
{
"action" : "fetch_news" ,
"method" : "GET" ,
"url" : "https://api.example-news.com/v1/latest" ,
"headers" : {
"Authorization" : "Bearer MY_SECRET_TOKEN"
}
}
이렇게 세밀한 요청 구조를 노드 설정 창에서 클릭 몇 번으로 구성할 수 있습니다.
개발자가 직접 코드를 짜지 않아도 시스템 확장이 자유롭다는 것이 n8n 아키텍처의 가장 큰 매력입니다.
오늘은 자동화 플랫폼 생태계 전반을 훑어보고 로컬 환경에 파이프라인을 구축하기 위한 최적의 도구로 n8n을 선정해 보았습니다.
상용 서비스의 비용 문제와 종속성에서 벗어나 나만의 강력한 데이터 수집 봇을 만들 준비가 되셨나요.
다음 1편에서는 본격적으로 시스템 내부 구조를 이해하고 도커를 활용하여 직접 로컬 컨테이너를 배포하는 과정을 차근차근 실습해 보겠습니다.