피드로 돌아가기
Dev.toBackend
원문 읽기
Validation을 제거한 State Transition 기반 데이터 처리 파이프라인 설계
Don't Validate Your Data
AI 요약
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 레이어와 비즈니스 로직 사이의 결합도를 낮추기 위해 상태 코드 기반의 렌더링 전략 채택