n8n과 로컬 LLM (Ollama)을 활용한 온라인 스토어 카탈로그 동기화 유지 방법
요약
n8n과 Ollama를 활용하여 온라인 스토어의 제품 카탈로그를 자동으로 동기화하는 시스템 구축 사례를 소개합니다. 비정형 데이터를 정규화하고, LLM과 결정론적 검사를 결합하여 재고 및 가격 정보를 최신 상태로 유지합니다.
핵심 포인트
- n8n을 통한 워크플로우 오케스트레이션 및 스케줄링
- Ollama를 활용한 로컬 LLM 기반의 데이터 정제
- LLM의 불확실성을 보완하는 결정론적 검사(Deterministic checks) 적용
- 예외 상황 처리를 위한 플래그 지정 및 검토 프로세스 설계
저는 사이드 프로젝트로 온라인 스토어를 운영하고 있는데, 카탈로그는 항상 조용히 문제가 발생하는 부분이었습니다. 공급업체의 가격과 재고는 끊임없이 변하기 때문에, 결국 고객이 실제로 재고가 없거나 가격이 잘못 책정된 상품을 주문할 때까지 리스팅 정보가 최신 상태를 유지하지 못하고 어긋나게 됩니다. 저는 수동 확인 과정을 완전히 제거하고, 정말로 주의가 필요한 경우에만 사람의 관심을 쏟고 싶었습니다.
그래서 카탈로그를 스스로 동기화 상태로 유지하는 작은 자동화 시스템을 구축했습니다. 이 시스템이 무엇을 하는지, 어떤 스택을 사용하는지, 그리고 무엇보다 그 과정에서 무엇을 배웠는지 소개하겠습니다.
기능
- 공급업체 소스로부터 카탈로그, 재고 및 가격 데이터를 가져옵니다.
- 지저분한 제품 필드를 정규화 (Normalize)하고 이를 스토어의 리스팅과 매칭합니다.
- 매칭 결과가 확실할 경우 재고와 가격을 자동으로 조정합니다.
- 예외 사항(매칭되지 않는 SKU, 의심스러운 가격 급등, 품절 예정 항목 등)을 검토를 위해 플래그(Flag)를 지정합니다.
- 스케줄에 따라 실행되므로, 아무도 지켜보지 않아도 카탈로그가 최신 상태를 유지합니다.
스택
- n8n — 오케스트레이션 (Orchestration) 및 스케줄링된 워크플로우
- Ollama (로컬 LLM) — 비정형 제품 필드의 정제 및 정규화, 비용이 들지 않고 오프라인에서 작동
- Python — 데이터 처리 및 LLM 주변의 결정론적 (Deterministic) 체크
- MCP 커넥터 — 도구들을 서로 연결하기 위함
- 환경 변수 (Environment variables) — 모든 자격 증명은
.env에 유지하며, 코드 내에 비밀 정보를 남기지 않음
작동 방식 (개요)
- 스케줄링된 n8n 워크플로우가 실행을 트리거합니다.
- 공급업체 데이터를 가져와 정제 단계를 거칩니다. 데이터가 지저분한 곳에는 LLM을 사용하고, 그렇지 않은 곳에는 일반적인 규칙을 적용합니다.
- 아이템을 기존 스토어 리스팅과 매칭합니다.
- 확신이 있는 매칭은 재고/가격이 자동으로 업데이트되며, 불확실한 모든 항목은 빠른 사람의 검토를 위해 예외 목록으로 넘어갑니다.
내가 배운 것
- 일회성 스크립트 대신 n8n에서 신뢰할 수 있는 스케줄링된 작업 (Scheduled jobs)을 오케스트레이션 (Orchestrating)하는 방법.
- Ollama를 사용하여 로컬에서 LLM을 실행하기 — LLM이 진정으로 잘하는 것(모호한 데이터 정제)과 그렇지 못한 것.
- 모델을 신뢰하지 말아야 할 때. 저는 유료 AI 출력물 평가 (AI-output evaluation)도 수행하는데, 그 습관이 이번 빌드에 반영되었습니다. 가격이나 재고에 영향을 주는 모든 항목은 LLM 단독이 아닌 결정론적 검사 (Deterministic checks)를 거칩니다.
- 해피 패스 (Happy path)뿐만 아니라 예외 경로 (Exception path)를 고려한 설계.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기