피드로 돌아가기
I Replaced dotenv With My Own Package — Here's Why You Should Too
Dev.toDev.to
Backend

Zero Dependency 기반 Schema Validation을 통한 환경변수 런타임 에러 원천 차단

I Replaced dotenv With My Own Package — Here's Why You Should Too

FrotaDev2026년 6월 3일12intermediate

Context

dotenv의 단순 문자열 로딩 방식으로 인한 Type 불일치 및 필수 변수 누락이 런타임 Crash를 유발하는 구조적 한계 존재. 기존 env-var 라이브러리는 단일 에러 발생 시 프로세스를 즉시 중단하여 전체 설정 오류를 파악하기 위한 반복적 재시작과 디버깅 비용을 발생시킴.

Technical Solution

  • Schema 기반 정의를 통한 환경변수 Type Coercion 및 Validation 자동화 구조 설계
  • 모든 변수를 일괄 검증하여 누락 및 오류 리스트를 한 번에 출력하는 Aggregate Error Handling 메커니즘 도입
  • TypeScript Generic 및 Inference를 활용해 별도의 Type Casting 없이 최종 설정 객체의 타입을 확정하는 설계 적용
  • Duration(30s → ms) 및 List(CSV → Array)와 같은 도메인 특화 변환 로직을 내장하여 Boilerplate 코드 제거
  • .env 파일 로딩부터 검증까지 통합 수행하여 외부 의존성 없는 단일 패키지 아키텍처 구현

- 런타임 에러 방지를 위해 애플리케이션 진입점(Entry Point)에서 환경변수 Schema Validation 수행 - 개별 변수 검증보다 모든 설정 오류를 한 번에 수집하여 리포팅하는 에러 핸들링 전략 검토 - 환경변수 타입 정의 시 Boolean, Number, Duration 등 명확한 타입을 지정하여 비즈니스 로직 내 형변환 코드 제거

원문 읽기