피드로 돌아가기
Building a scoring engine with pure TypeScript functions (no ML, no backend)
Dev.toDev.to
Frontend

ML 없이 1ms 만에 끝내는 TypeScript 기반 고성능 스코어링 엔진 설계

Building a scoring engine with pure TypeScript functions (no ML, no backend)

[CS] Alishopping2026년 4월 2일4intermediate

Context

이커머스 제품의 품질, 수익성, 시장성, 리스크를 실시간으로 평가해야 하는 요구사항 발생. 브라우저 환경에서 작동하는 Chrome extension 형태의 구현이 필수적임. 결과 도출 과정의 명확한 설명 가능성이 요구되는 구조.

Technical Solution

  • I/O와 Side Effect가 없는 Pure Function 기반의 스코어링 엔진 설계로 결정론적 결과 보장
  • 누락된 데이터에 대해 중립값(50)을 할당하여 데이터 결손 시의 비교 가능성 유지 및 편향성 제거
  • clamp 함수를 통해 모든 입력값을 0-100 범위로 제한하여 비정상 수치로 인한 로직 붕괴 방지
  • 통제 가능한 변수(품질, 수익)에 높은 가중치를 부여하고 외부 변수(시장, 리스크) 비중을 낮춘 가중치 모델 적용
  • 단일 거대 함수 대신 제품, 시장, 플랫폼별 소규모 엔진을 구축하고 이를 조합하는 Composition 패턴 채택
  • 실제 제품 데이터와 인간의 판단 결과를 비교 분석하여 임계값을 반복적으로 조정하는 Calibration 프로세스 수행

Impact

  • 실행 시간 1ms 미만 달성
  • 외부 API 호출 및 백엔드 인프라 비용 0원
  • 함수당 코드 라인 수 100줄 미만 유지

Key Takeaway

복잡한 패턴 발견이나 고차원 데이터 분석이 필요 없는 구조적 스코어링 문제에는 ML보다 Pure Function 기반의 결정론적 설계가 유지보수와 성능 면에서 압도적으로 유리함.


50개 미만의 특성을 가진 정형 데이터 스코어링 설계 시 ML 도입 전 Pure Function 기반의 가중치 모델을 우선 검토할 것

원문 읽기