Skip to main content

Posts

REINDEERS, 4년의 여정 — 동남아 제조업 혁신을 향한 출발점

REINDEERS, 4년의 여정 — 동남아 제조업 혁신을 향한 출발점 요약: REINDEERS 프로젝트는 동남아 제조·유통 시장의 불균형을 해결하기 위해 시작된 글로벌 무역 플랫폼 구축 여정이었다. 4년에 걸친 시행착오 끝에, 기술 중심의 조직으로 재편되고 AI를 핵심 전략으로 채택하며 새로운 출발선을 맞이했다. 1. 출발 — 동남아 제조 유통의 혁신을 꿈꾸다 REINDEERS의 시작은 단순한 플랫폼 사업이 아니었다. 동남아 제조업체들이 글로벌 시장에 직접 접근하지 못하는 구조를 바꾸기 위한 시도였다. 태국, 말레이시아, 베트남의 수많은 중소 제조사는 여전히 전화와 이메일로 거래를 이어가고 있었고, 가격 비교·납기 관리·운송 연계 등 모든 과정이 수작업에 머물러 있었다. 이러한 현실을 개선하기 위해 우리는 “제조업 기반 B2B 무역 플랫폼”을 설계하기로 했다. 하지만 초기 단계에서 가장 큰 문제는 기술이 아니라 이해의 부족 이었다. 2. 외주 개발의 한계 2021년, 우리는 첫 번째 개발을 외주로 진행했다. 그러나 개발사는 무역의 구조와 산업재 유통의 특성을 이해하지 못했다. 전자상거래의 논리를 그대로 적용하려 했고, 복잡한 견적·PO·DO·물류 절차를 단일 주문 로직으로 단순화시켜버렸다. 결과적으로 플랫폼은 외형만 존재했을 뿐, 실제 무역 프로세스를 처리할 수 없었다. 외주 개발은 그 시점에서 중단되었다. 3. 내부 개발팀의 첫 시도와 실패 외주 프로젝트 종료 이후, 내부적으로 개발 관리 인력을 영입해 자체 개발을 시도했다. 그러나 시스템의 복잡성과 기술적 요구 수준은 생...

베타 오픈 준비: 국가별 시뮬레이션과 부하 테스트 자동화

베타 오픈 준비: 국가별 시뮬레이션과 부하 테스트 자동화 요약: 본 기록은 REINDEERS 플랫폼의 베타 오픈 직전, 4개국(태국·한국·중국·말레이시아)을 대상으로 진행된 AI 주도형 시뮬레이션 및 부하 테스트 자동화 과정을 기술한다. Ops-Agent가 실제 사용자 트래픽을 재현하고, MQ·Redis·Cloud Function의 병목 구간을 자동 분석하며, 시스템이 스스로 최적화·복구되는 구조를 완성하였다. 1. 테스트 목적과 시나리오 설계 베타 오픈을 앞두고 가장 중요한 검증 항목은 세 가지였다. 1) 다국가 접속 부하 분산 — 각국 DNS 및 CDN 라우팅 검증 2) 데이터 일관성 — Redis와 MQ의 복제 지연 검증 3) 무중단 배포 및 장애 복구 — Cloud Function의 자율 회복 테스트 테스트는 AI Ops-Agent가 생성한 가상 세션을 이용해 수행됐다. 각국의 평균 사용 환경(네트워크 속도·언어·기기 비율)을 기반으로 50,000명의 가상 사용자를 생성하고, 실제 주문, 견적, 채팅, 결제 시나리오를 반복 실행했다. 2. 트래픽 시뮬레이션 구조 모든 부하 테스트는 실제 트래픽과 동일하게 처리되도록 설계되었다. AI Ops-Agent는 Playwright 기반의 브라우저 클러스터를 이용해 각국 DNS를 통해 접속하며, 트래픽은 Cloud Function → MQ → Redis → DB로 실제 서비스 경로를 그대로 통과한다. { "country": "TH", "user_id": "TH_839210", "actions": [...

AI 품질 보정과 데이터 재생산 파이프라인

AI 품질 보정과 데이터 재생산 파이프라인 요약: 본 기록은 Translator-Agent 2.0의 도입 이후, AI가 자체적으로 번역 품질을 평가하고 품질 기준 이하의 데이터를 자동 보정·재생산하는 구조를 정립한 과정을 기술한다. BLEU/TER 점수 기반 평가, 품질 예측 모델, 재번역 큐 관리, 인간 승인 없는 자동 검증 루프를 포함한다. 1. Translator-Agent 2.0의 설계 목표 9월 초부터 수집되는 데이터의 양이 폭증하면서 AI 번역 품질이 일관되지 않다는 문제가 보고되었다. 평균 BLEU 점수는 0.82 수준이었지만 언어 간 편차가 컸고, 특정 기술 문서에서 용어가 반복적으로 오역되었다. Translator-Agent 2.0의 목적은 **AI가 스스로 품질을 예측하고, 낮은 품질의 데이터를 재생산하도록 만드는 것**이었다. BLEU, TER, Context Vector를 이용한 품질 점수화 자동 재번역 루프 (Re-Translation Loop) Quality-Driven Event Routing (품질 점수 기반 라우팅) 자동 승인 및 검증 리포트 생성 2. 품질 평가 메커니즘 Translator-Agent 2.0은 번역이 완료되면 즉시 BLEU와 TER을 계산하고, 품질 점수를 생성한다. 이 점수는 0~1 사이 실수값으로 표현되며, 0.75 미만이면 재번역 큐에 등록된다. BLEU는 의미 유사도, TER은 문장 수정 비율을 측정한다. 품질 점수는 Redis의 Sorted Set에 저장되어 우선순위 처리가 가능하다. score = (bleu * 0.7 + (1 - ter) * 0.3) redis.zadd("i18n.qualit...

외부 데이터 크롤링과 다국어 처리 자동화

외부 데이터 크롤링과 다국어 처리 자동화 요약: 본 기록은 외부 기관의 데이터를 API 없이 직접 수집하기 위해 Playwright 기반 크롤링 시스템을 구축한 과정을 다룬다. AI 에이전트가 사람이 탐색하듯 사이트 구조를 인식하고 데이터를 자동 추출하며, Translator-Agent가 실시간 다국어 변환을 수행하는 통합 구조를 구현하였다. 크롤링, 번역, 검증, 저장의 전 과정을 자동화하여 글로벌 규제·표준 데이터를 통합했다. 1. 배경 — 외부 연동 대신 크롤링 선택의 이유 REINDEERS 플랫폼은 각국의 표준, 인증, 관세 데이터를 기반으로 상품 정보를 구조화해야 했다. 그러나 각 기관의 공개 API는 존재하지 않거나 접근이 제한적이었다. 태국 TISI, 한국 UNIPASS, 중국 GB표준, 말레이시아 SIRIM 등은 모두 웹 기반 HTML 구조만 제공했다. 이에 따라 API 연동 대신 **Playwright를 이용한 사람 모방형 크롤링 구조**를 도입했다. 크롤링 시스템은 단순 HTML 파싱이 아니라, 브라우저를 실제 구동하여 클릭, 스크롤, 입력, 다운로드까지 자동화하는 형태로 설계되었다. AI가 사용자처럼 행동하며 데이터를 수집하는 방식이었다. 2. 크롤링 구조 설계 크롤러는 국가별로 독립적인 설정을 가진다. 각 크롤러는 Playwright의 Headless 모드로 실행되며, Cloud Function에서 주기적으로 호출된다. 수집 주기는 데이터의 성격에 따라 24시간~168시간 단위로 다르다. from playwright.sync_api import sync_playwright def crawl_tisi(): with sync_playwrig...

MQ + Redis 기반 글로벌 데이터 일관성 구조

MQ + Redis 기반 글로벌 데이터 일관성 구조 요약: 본 기록은 글로벌 서비스 간 데이터 일관성을 확보하기 위해 MQ와 Redis를 결합한 구조를 설계하고 검증한 과정을 기술한다. 각국 서버 간 세션, 캐시, 재고, 주문 데이터의 동기화를 보장하기 위해 TTL, 해시 동기화, 이벤트 브로커를 통합하였고, AI Ops-Agent가 동기화 상태를 실시간 감시하며 자동 복구를 수행한다. 1. 문제 인식 — 다국가 데이터 일관성의 복잡성 8월 초, 홍콩(HK), 서울(KR), 쿠알라룸푸르(MY), 방콕(TH)의 네 개 리전이 동시에 서비스되면서 가장 큰 문제는 데이터 일관성이었다. 각 리전의 Redis 캐시와 MySQL 데이터베이스가 서로 다른 타임스탬프로 업데이트되어, 동일 상품의 재고 수량, 세션, 장바구니 데이터가 불일치하는 현상이 자주 발생했다. 기존 복제(Replication) 방식은 지연이 300~800ms 수준으로 불안정했고, Redis async replication은 트래픽 피크 시 복제 손실이 발생했다. 이 문제는 단순 데이터 복제가 아니라 **이벤트 레벨에서의 보정(Event-level Consistency)** 으로 접근해야 했다. 2. MQ 이벤트 기반 복제 구조 설계 우리는 Redis 복제 대신 MQ 기반의 “Event-driven Sync” 구조로 전환했다. 각 리전의 데이터 변경 이벤트는 LavinMQ를 통해 “data.sync” 토픽으로 발행된다. 이벤트는 Cloud Function 소비자가 수신하여 상대 리전의 Redis에 직접 반영한다. { "event": "data.sync", "source...

AI 협업 환경 구축과 코드 자동화 시스템

AI 협업 환경 구축과 코드 자동화 시스템 요약: 본 기록은 REINDEERS 개발 환경에 AI를 직접 결합한 구조를 정립한 과정을 다룬다. Cursor, Claude Code, 내부 AI Agent를 중심으로 코드 작성·리뷰·빌드·배포까지 자동화하였으며, 개발자는 AI와 병렬로 협업하며 시스템을 조정하는 역할만 수행했다. 이 과정에서 AI가 코드 품질을 스스로 진단하고 수정하도록 설계한 기술적 배경과 구현 과정을 기술한다. 1. AI 협업 환경 도입 배경 8월 초, 전체 개발 속도는 아키텍처 안정화와 함께 급격히 느려졌다. 다국어 코드베이스, 서비스 간 인터페이스 복잡도, 릴리즈 간 충돌 등으로 개발자가 직접 관리해야 할 영역이 지나치게 많았다. 단순 반복적인 테스트·리뷰·빌드 작업을 사람 대신 AI에게 맡기기로 했다. 목표는 다음과 같았다. AI가 코드 문맥을 이해하고 변경 사항을 요약·리뷰 CI/CD 파이프라인과 직접 연동하여 코드 품질 평가 Prompt Repository를 통한 코드 수정 자동화 Telegram을 통한 빌드/배포 명령 및 상태 보고 2. 환경 구성 — Cursor & Claude Code 기반 개발 체계 모든 개발 작업은 Cursor 에디터를 기본으로 통합했다. Cursor는 프로젝트의 디렉토리 구조와 문맥을 인식하여 Claude Code API와 연결된다. 개발자는 명령을 직접 내리지 않고, “의도(Prompt)”만 작성한다. 예를 들어 “상품 등록 API의 중복 검증 로직 최적화”라고 명시하면, Claude Code가 Git 브랜치를 생성하고 수정된 diff를 자동으로 커밋한다...

이미지 최적화와 COS 기반 CDN 자동화

이미지 최적화와 COS 기반 CDN 자동화 요약: 본 기록은 이미지 트래픽과 품질을 관리하기 위해 Tencent COS의 서버리스 이미지 처리 기능을 적용한 과정을 다룬다. 크롤링된 상품 이미지가 각국 CDN에 자동으로 최적화·배포되도록 시스템을 재구성했으며, AI 에이전트를 통해 해상도, 포맷, 캐시 유효성, 시각 품질을 지속적으로 점검하는 구조를 확립했다. 1. 문제 인식 — 이미지 트래픽과 품질의 불균형 8월 초, 상품 이미지 요청량이 하루 평균 1200만 건을 넘어서면서 CDN 트래픽 비용이 급격히 증가했다. 원인은 대부분 비효율적인 이미지 크기와 중복 요청이었다. 크롤링 단계에서 원본 이미지는 고해상도 상태로 저장되었고, 프런트엔드는 단일 사이즈 이미지를 모든 기기에서 공통 사용했다. 초기에는 Cloud Function을 이용한 이미지 리사이징 API를 직접 운영했으나, 처리량 대비 비용이 높고, 콜드 스타트 지연이 잦았다. 따라서 Tencent COS의 내장 이미지 처리 기능을 이용한 서버리스 구조로 전환하기로 결정했다. 2. COS 서버리스 이미지 처리 구조 설계 COS는 별도의 서버나 Lambda 없이도 URL 파라미터 기반으로 이미지 변환을 수행할 수 있다. 이 기능을 이용하면 단 한 번의 업로드로 모든 변환 버전을 실시간으로 생성할 수 있다. 예를 들어, 800x800 썸네일을 webp로 변환하려면 다음과 같이 요청한다. https://cdn.reindeers.com/images/p/12345.jpg?imageMogr2/thumbnail/800x800/quality/90/format/webp COS는 이 요청을 받아 즉시 리사이징, 포맷...