피드로 돌아가기
Don't Validate Your Data
Dev.toDev.to
Backend

Validation을 제거한 State Transition 기반 데이터 처리 파이프라인 설계

Don't Validate Your Data

Koritsu Nezumi2026년 5월 9일6intermediate

Context

전통적인 Validation 라이브러리가 데이터 상태를 단순 Boolean(Valid/Invalid)으로 판단하여 컨텍스트를 소실시키는 한계 발생. 에러 메시지라는 문자열 형태로 정보를 변환함으로써 UI 렌더링 및 API 응답 시 다시 파싱해야 하는 비효율적인 구조 분석.

Technical Solution

  • 데이터 상태를 판단하는 Validation 대신 상태를 전이시키는 State Transition 모델 도입
  • 모든 Processor가 현재 상태(Status)를 읽고 컨텍스트를 유지한 채 새로운 상태로 변환하는 순수 함수 형태로 설계
  • status.string.too-short와 같이 세분화된 Status 구조를 통해 실제 값과 제약 조건을 동시에 유지하는 Context-Rich 설계 적용
  • pipe 함수를 통한 Processor 체이닝으로 데이터 복구(Recovery)와 인터프리팅(Interpreting) 로직을 분리한 컴포지션 구조 구축
  • 소비자(Consumer)가 상태 코드를 기반으로 다국어 처리 및 UX 분기를 직접 결정하는 Decoupled Architecture 구현

- 에러 메시지를 라이브러리 내부에서 생성하지 말고 머신 리더블한 상태 코드로 반환하는지 검토 - Validation 단계에서 발생한 데이터 손실을 막기 위해 입력값과 제약 조건을 함께 포함하는 상태 객체 설계 적용 - 데이터 처리 파이프라인을 '판단-실패' 구조에서 '상태-전이' 구조로 변경하여 복구 로직 추가 가능성 확보 - UI 레이어와 비즈니스 로직 사이의 결합도를 낮추기 위해 상태 코드 기반의 렌더링 전략 채택

원문 읽기