Skip to main content

Posts

Showing posts from July, 2025

카테고리 매핑 엔진과 데이터 구조 자동화

카테고리 매핑 엔진과 데이터 구조 자동화 요약: 본 기록은 Classifier-Agent를 중심으로, 상품 데이터를 자동으로 카테고리화하고 정규화하는 과정을 다룬다. 7월 중순부터 8월 초까지 진행된 이 작업은 Translator-Agent의 결과물을 기반으로, 대규모 상품 데이터를 산업 표준 분류체계에 맞춰 자동 매핑하기 위한 기술적 실험과 조정 과정을 포함한다. 1. 개발 배경 및 문제 인식 Translator-Agent가 다국어 데이터를 안정적으로 생성하기 시작하면서, 다음 병목은 “상품 분류”였다. 약 25만 건의 상품이 번역되었지만, 카테고리 코드가 누락되거나 서로 다른 언어에서 다른 트리 노드로 매핑되는 문제가 있었다. 기존의 수동 분류는 국가별 기준이 달라 일관성을 유지하기 어려웠다. 이를 해결하기 위해, AI 기반 카테고리 자동 분류 엔진(Classifier-Agent)을 개발했다. 목표는 다음과 같았다. 상품명·설명·스펙·브랜드를 이용한 자동 카테고리 예측 언어 중립적인 벡터 임베딩 기반 분류 분류 확신도(confidence score)에 따른 승인/보류 체계 MQ 파이프라인 기반의 비동기 동작 및 자동 재매핑 2. 초기 구조 설계 Classifier-Agent는 Translator-Agent가 생성한 i18n 데이터를 입력으로 받는다. product.normalized 이벤트를 수신하면 문장 임베딩을 생성하고, 카테고리 벡터 DB에서 가장 유사한 카테고리를 탐색한다. SentenceTransformer("paraphrase-multilingual-mpnet-base-v2") 모델을 사용했으며, ...

Translator-Agent와 데이터 품질 관리 체계

Translator-Agent와 데이터 품질 관리 체계 요약: 본 기록은 Translator-Agent의 도입 및 고도화 과정에서 발생한 기술적 이슈와 해결 과정을 다룬다. 다국어 상품 데이터의 품질을 AI가 자동으로 평가·보정하는 구조를 확립하는 것이 목적이었다. 번역 정확도, MQ 이벤트 동기화, 캐시 구조, 재번역 루프, 품질 메트릭 자동 보고 기능이 주요 내용이다. 1. 초기 Translator-Agent 도입 배경 7월 초, 플랫폼 내 등록된 상품 수가 20만 건을 초과하면서 다국어 데이터 품질 문제가 심각하게 드러났다. 기존에는 외부 번역 API를 호출해 결과를 저장하는 단순 구조였다. 하지만 언어별 품질 편차가 심했고, 카테고리·단위·브랜드명 등이 잘못 번역되는 사례가 누적되었다. 수동 교정 인력을 투입하지 않기 위해 “Translator-Agent”를 내부적으로 개발하기로 결정했다. Translator-Agent의 설계 목표는 다음과 같았다. 번역 품질 자동 평가 및 등급화 (MACHINE / HUMAN / APPROVED) 다국어 텍스트 캐시 및 중복 요청 제거 문장 단위가 아닌 문맥 단위 번역 처리 MQ 기반 병렬 번역 및 품질 피드백 루프 자동화 2. 아키텍처 설계 및 초기 구조 Translator-Agent는 MQ 이벤트 소비자로 동작한다. product.created 또는 i18n.missing 이벤트를 수신하면 해당 상품의 기본 언어 데이터를 조회하고, DeepSeek과 ChatGPT 모델을 혼합하여 번역을 수행한다. DeepSeek은 대량 번역용, ChatGPT는 문맥 검증용으로 사용되었다. ...

certified as a Venture Business

  🎉 Officially Certified as a Venture Company! 😃 We’re excited to share that Reindeers has been officially certified as a Venture Business (벤처기업) under the “Act on Special Measures for the Promotion of Venture Businesses” by the Korean government. Our certification falls under the Innovation Growth category, recognizing our potential for technology-driven growth and impact in the cross-border B2B and fulfillment space. This is a meaningful milestone for us, and we will continue to innovate and scale with purpose. Thank you to everyone who has supported our journey so far.

시스템 설정 및 관계 구조

시스템 설정 및 관계 구조 요약: 본 기록은 시스템의 각 구성요소가 독립 서비스로 전환된 이후, 실제 운영 환경에서 안정적으로 동작하기 위해 설정된 구조와 관계를 다룬다. 모든 조정은 AI 에이전트 중심으로 이루어졌으며, 인프라 운영자의 수동 개입은 최소화되었다. 각 서비스 간의 데이터 연계, 글로벌 동기화, 캐시 구조, 그리고 AI 기반 검증 체계에 대해 실제 업무 진행 순서대로 기술한다. 1. 초기 상태 점검 및 서비스 간 데이터 경로 정의 프로젝트는 MCP 내부 서비스가 물리적으로 분리된 시점에서 시작되었다. 서비스는 정상적으로 기동되었지만, Redis와 MQ 사이의 데이터 경로가 불완전했다. 일부 이벤트는 발행되었으나 소비자 함수가 인식하지 못했고, 캐시 무효화 시점이 불일치했다. 문제의 원인은 큐 이름 충돌이었다. 6월 구조에서는 모든 이벤트가 default 토픽에 쌓였기 때문에, 이벤트 종류별 처리 우선순위를 분리할 수 없었다. 우리는 LavinMQ의 라우팅 키 구조를 다시 정의했다. 서비스 도메인별로 큐를 분리하여 이벤트 흐름을 시각적으로 구분했다. product.* → Translator-Agent session.* → Auth-Service / Redis Sync cache.* → Cloud Function(Cache Invalidator) log.* → Ops-Agent 이 설정을 적용한 후, MQ 메시지 지연은 평균 80ms 수준으로 안정화되었고, 이벤트 충돌 비율이 0.2% 미만으로 감소했다. 기존 수동 모니터링 대신 Ops-Agent가 주기적으로 큐 상태를 수집하고, 누락 이벤트가 10건 이상일 경우 자동 재전송하도록 설정했다. 2. Red...

글로벌 세션 동기화와 캐시 아키텍처 설계

글로벌 세션 동기화와 캐시 아키텍처 설계 요약: REINDEERS의 글로벌 인프라는 단일 DB 위에 다국가 트래픽이 동시에 얹히는 구조다. 이러한 환경에서 세션과 캐시의 일관성을 유지하는 것은 가장 중요한 기술 과제였다. 6월, 우리는 Redis·MQ·Cloud Function을 활용해 “글로벌 실시간 세션 복제”와 “이벤트 기반 캐시 무효화”를 완성했다. 이 구조는 서울과 홍콩, 두 리전이 200ms 이내로 데이터를 동기화하도록 설계되었다. 1. 문제 정의 — 글로벌 세션의 일관성 글로벌 사용자가 늘어나면서 문제가 발생했다. 한 사용자가 홍콩 리전에서 로그인한 뒤 곧바로 한국 리전 서비스로 접근하면, 세션이 존재하지 않아 재로그인이 필요했다. Redis가 지역 단위로 분리되어 있었기 때문이다. REINDEERS는 “어디서 로그인하든, 어디서든 세션이 유효해야 한다”는 원칙을 세웠다. 이를 위해 Redis 세션 클러스터 간 실시간 복제와, MQ 기반의 캐시 무효화 구조를 설계했다. 2. 전체 구조 개요 세션·캐시 구조는 다음 세 가지 계층으로 나뉜다. Redis Cluster: 리전별 세션/캐시 저장소 (HK, KR) MQ Broker: Redis 간 동기화 이벤트 전달 (LavinMQ) Cloud Function: 세션 복제 및 캐시 무효화 수행 [User Session] → [Redis HK] ↔ (MQ Event: session.update) ↔ [Cloud Function] → [Redis KR Replica] 모든 세션·캐시 변경은 “이벤트”로 MQ에 게시되고, Cloud F...