B2B 파트너 업무 효율과 자동화를 위한 워크플로우 플랫폼
기술 스택, 서비스 목표, 그리고 실제 업무 효율 증대 사례까지
프로젝트를 시작한 이유: B2B 파트너의 업무 효율과 자동화
REINDEERS 플랫폼은 내부 직원과 B2B 파트너가 함께 사용하는 비즈니스 환경입니다. 반복되는 수작업, 툴 간 데이터 복사·붙여넣기, 수동 알림·리포트 작성 등은 시간을 잠식하고 실수를 늘립니다. 이런 문제를 줄이기 위해 우리는 업무 흐름을 한 곳에서 설계하고, 트리거 기반으로 자동 실행되는 워크플로우 플랫폼이 필요했습니다. 그래서 워크플로우 엔진을 기반으로 자사 브랜딩과 인프라에 맞춘 Reindeers Workflow 프로젝트를 시작했습니다.
목표는 단순했습니다. “파트너와 직원이 코드 없이 워크플로우를 만들고, 폼·웹훅·스케줄·외부 서비스 연동으로 반복 업무를 자동화할 수 있는 하나의 플랫폼”을 제공하는 것입니다. 동시에 보안과 운영을 위해 단일 도메인(workflow.reindeers.com)에서 HTTPS로 서비스하고, 내부 전용(직원·파트너)으로 제한해 사용할 수 있도록 했습니다.
해결하고자 했던 것
첫째, 도구 간 수동 연동이었습니다. 이메일, 슬랙, 스프레드시트, CRM, API 등 여러 시스템 사이에서 사람이 중간에 끼어 정보를 옮기는 구조는 비효율적이고 지연을 만들었습니다. 둘째, 반복 작업의 자동화 부재입니다. 주기적 리포트, 이벤트 시 알림, 폼 제출 후처리 등을 매번 사람이 하면 낭비가 큽니다. 셋째, 일관된 자동화 환경 부재입니다. 팀·파트너마다 스크립트·스케줄러를 따로 쓰면 유지보수와 권한 관리가 어렵습니다. Reindeers Workflow는 “워크플로우 편집기 + 트리거/노드 + 단일 인스턴스”로 이 세 가지를 해결해, 하나의 URL에서 설계·실행·이력 조회가 모두 가능한 플랫폼을 만들었습니다.
기술적 구성: 무엇으로, 어떻게 돌아가나
Reindeers Workflow는 워크플로우 엔진 모노레포를 기반으로 브랜딩과 설정을 커스터마이징한 형태입니다. 전부 TypeScript로 작성되며, Node.js 22 이상, pnpm 10 이상을 요구합니다. 프론트엔드는 Vue 3 기반의 워크플로우 에디터(노드 기반 캔버스, 드래그·연결·파라미터 패널)를 사용하고, 백엔드는 Node.js 기반의 CLI/서버가 HTTP API·웹훅·스케줄·실행 엔진을 담당합니다. 데이터 저장은 PostgreSQL을 사용해 워크플로우 정의, 활성 버전, 실행 이력, 자격 증명(암호화된 값), 사용자·프로젝트·공유 정보를 안정적으로 보관합니다.
배포는 deploy/docker-compose.yml 한 세트로 Postgres·워크플로우 앱·Caddy(리버스 프록시·HTTPS)를 띄우며, 환경 변수(POSTGRES_PASSWORD, N8N_HOST 등)로 DB 비밀번호와 호스트(예: workflow.reindeers.com)를 설정합니다. CI/CD는 Drone으로, main 푸시 시 빌드 → Docker 이미지 푸시 → SSH로 운영 서버에서 pull·docker compose up -d가 자동으로 이어져 코드 푸시만으로 최신 플랫폼이 반영됩니다.
로그인 화면과 시스템 메시지에는 “REINDEERS 플랫폼의 내부 업무 자동화 및 AI Agent 서비스”, “REINDEERS 직원 전용” 문구를 넣어 서비스 정체성을 분명히 했고, 타임존은 Asia/Shanghai로 맞춰 운영합니다.
제공하는 기능과 “해결한 것”
트리거와 자동 실행: Reindeers Workflow Form Trigger로 웹 폼을 만들면 제출 시점에 워크플로우가 자동 실행됩니다. 리드 수집·문의 접수·이벤트 등록을 폼으로 받고 이메일·시트·CRM 연동을 노드로 이어붙일 수 있습니다. 웹훅 트리거는 슬랙, GitHub, 결제·CRM 등 외부 이벤트 수신 시 즉시 워크플로우를 실행하며, Reindeers Workflow Trigger는 워크플로우 발행·업데이트·인스턴스 시작 시 후속 작업을 돌립니다.
워크플로우 간 호출: Execute Workflow Trigger로 한 워크플로우가 다른 워크플로우를 서비스처럼 호출할 수 있습니다. 알림·데이터 정규화·로깅 등 공통 로직을 하위 워크플로우로 분리해 여러 플로우에서 재사용하면 모듈화와 유지보수가 쉬워집니다.
연동 노드와 자격 증명: Gmail, Slack, Notion, Telegram, Google Sheets, HTTP Request 등 수백 개의 노드가 내장되어 있어 코드 없이 API·서비스와 연결할 수 있습니다. 자격 증명은 플랫폼 내에서 암호화·관리되며 OAuth·API 키 등을 지원하고, 노드에서 “어떤 자격 증명을 쓸지”만 선택하면 실행 시 안전하게 주입됩니다.
우리의 기술 구조: 모노레포와 빌드
코드베이스는 pnpm 워크스페이스 + Turbo 모노레포입니다. workflow에 워크플로우 그래프·노드 실행 규칙·표현식 평가가, core에 실행 엔진(노드 실행 스택, 트리거·폴링 활성화, 서브워크플로우 호출)이 들어 있고, cli가 HTTP 서버·웹훅 라우팅·DB·자격 증명·RBAC를 담당합니다. nodes-base에는 트리거·일반 노드·자격 증명 타입 정의가, editor-ui에는 Vue 에디터가 있습니다. 프로덕션은 build-n8n.mjs로 전체 빌드 후 compiled/를 Docker 이미지에 넣어 서비스합니다.
워크플로우 실행 엔진과 트리거
“시작 노드”에서 연결된 노드를 순서대로 실행하는 노드 실행 스택 방식을 씁니다. 트리거(폼, 웹훅, 스케줄)가 진입점이고, 활성화 시 경로·메서드별로 DB에 등록되며 요청 수신 시 해당 워크플로우를 로드해 트리거부터 실행합니다. 폼은 GET(폼 페이지)·POST(제출)를 같은 경로로 두고 제출 시 즉시 실행합니다. 트리거는 웹훅(HTTP 수신·등록/해제 관리), 폴링(주기적 poll), 이벤트(워크플로우 발행·인스턴스 시작) 세 패턴으로 나뉘며, 라이브 웹훅과 테스트(편집 중) 웹훅을 분리해 배포된 플로우와 편집 중인 플로우가 서로 간섭하지 않도록 했습니다.
표현식과 보안: 샌드박스
노드 파라미터·조건문의 표현식은 사용자 입력을 그대로 eval하지 않고, AST 파서로 파싱한 뒤 허용된 연산·예약 변수만 통과시키는 샌드박스를 적용합니다. with·eval·전역 접근은 차단하고, $json·$node 등 노드 간 데이터 참조만 안전하게 쓸 수 있어, 워크플로우 정의가 서버와 데이터에 미치는 영향을 제한합니다.
자격 증명과 권한
자격 증명(API 키, OAuth 토큰 등)은 DB 저장 전 암호화하고, 복호화는 실행 시 해당 워크플로우·노드에 권한이 있을 때만 합니다. 프로젝트 단위로 자격 증명을 공유(SharedCredentials)하고, RBAC로 credential:owner·workflow:owner 등 역할을 나누어 접근을 제어합니다. 웹훅·폼 요청이 들어와도 그 워크플로우를 소유한 프로젝트 기준으로 실행 컨텍스트와 자격 증명 접근이 정해지므로, 팀·파트너 단위로 자동화를 안전하게 나눌 수 있습니다.
데이터 저장과 인프라
워크플로우·활성 버전·실행 이력·자격 증명·사용자·프로젝트는 모두 PostgreSQL에 두며 TypeORM 엔티티로 스키마를 관리합니다. 자격 증명 생성·공유는 트랜잭션으로 원자 처리합니다. 배포 시 Postgres·앱·Caddy를 컨테이너로 띄우고, Caddy가 80/443과 TLS를 처리해 별도 인증서 없이 HTTPS를 제공합니다. docker compose up -d로 앱만 갱신해도 DB·볼륨 데이터는 유지됩니다.
현재 기능으로 얻는 업무 효율
폼 제출·웹훅 수신 시 즉시 워크플로우가 돌아가 문의·리드·등록을 이메일·시트·CRM으로 이어줍니다. 서브플로우 재사용으로 알림·검증·로깅을 공유할 수 있고, workflow.reindeers.com 한 곳에서 설계·실행·이력을 관리합니다. “결제 완료 시”, “이슈 생성 시”처럼 외부 이벤트에 맞춰 알림·리포트·데이터 갱신을 자동화할 수 있습니다. 리드 폼→메일·슬랙, 주기 시트 집계·리포트, API 결과 시트 반영 등이 이미 쓰이고 있으며, 비개발자도 노드 연결만으로 자동화를 만들 수 있어 전사 적용 속도가 빨라졌습니다.
Reindeers Workflow는 B2B 파트너와 내부 직원의 반복 업무를 줄이고, 이벤트·폼 기반 자동화를 한 플랫폼에서 설계·운영하게 해 주는 서비스입니다. 트리거·노드·실행 엔진, PostgreSQL, Docker·Caddy·Drone CI/CD로 구성되어 있으며, 앞으로도 트리거와 노드를 확장해 더 많은 시나리오를 코드 없이 자동화할 예정입니다.
서비스 관점에서의 정리
Reindeers Workflow는 “내부·파트너 전용”으로 설계되었고, 로그인 화면과 문구로 REINDEERS 플랫폼의 공식 업무 자동화 서비스임을 명시합니다. 퍼블릭 SaaS가 아니라 B2B 파트너와 내부 팀의 업무 품질·속도를 높이기 위한 전용 인프라로 쓰입니다. 폼·웹훅·스케줄·워크플로우 호출·연동 노드 조합으로 코드 없이 리드 수집·알림·리포트·데이터 동기화를 다루며, “B2B 파트너의 업무 효율과 자동화”를 기술 스택과 기능으로 구체화한 결과입니다.
블로그를 읽어 주셔서 감사합니다. 궁금한 점이나 자동화 시나리오는 내부 채널로 공유해 주세요.
Reindeers Workflow | 내부 업무 자동화 및 AI Agent 플랫폼 | workflow.reindeers.com