피드로 돌아가기
Validar DNI y RUC peruanos sin llamar a una API (módulo-11 en TypeScript)
Dev.toDev.to
Backend

Modulo-11 기반 Local Validation으로 API 호출 5% 절감

Validar DNI y RUC peruanos sin llamar a una API (módulo-11 en TypeScript)

Edson Campaña Meléndez2026년 4월 26일4beginner

Context

KYC 및 온보딩 과정에서 DNI/RUC 검증을 위해 외부 API(SUNAT, RENIEC)에 의존하는 구조. 단순 오타나 무작위 입력값으로 인한 불필요한 API 호출 및 네트워크 Latency 발생.

Technical Solution

  • API 호출 전 단계에 Offline Validation 레이어를 추가한 필터링 구조 설계
  • DNI 검증을 위한 8자리 숫자 정규식 및 동일 숫자 반복 시퀀스 차단 로직 적용
  • RUC 검증을 위한 Modulo-11 알고리즘 기반의 Check-digit 계산 방식 도입
  • RUC 접두사(10, 15, 17, 20) 분석을 통한 납세자 유형(Entity Type) 사전 분류 로직 구현
  • Zero-dependency 기반의 TypeScript ESM 모듈화를 통한 런타임 오버헤드 최소화

Impact

  • Modulo-11 로컬 검증 도입을 통한 유효하지 않은 Submission 약 5% 사전 제거

Key Takeaway

외부 API 의존성이 높은 시스템에서 비용과 Latency를 줄이기 위해, 데이터의 구조적 특성을 이용한 Client-side 또는 Edge-side의 사전 검증 계층 구축 필요.


1. 외부 API 호출 전 데이터 포맷 및 Check-sum 검증 로직이 존재하는지 확인

2. 입력값의 단순 패턴(반복 숫자 등)을 제거하는 정규식 필터링 적용

3. 데이터 접두사 정보를 활용한 비즈니스 로직 분기 가능성 검토

4. 외부 라이브러리 도입 시 Zero-dependency 및 ESM 지원 여부 확인

원문 읽기