Node.js프로세스와 CLI

환경 변수, env 파일, config 경계

환경 변수와 env 파일을 어디까지 설정값으로 쓰고, 어떤 값은 별도 config 검증으로 올려야 하는지 정리합니다.

마지막 수정 2026년 3월 22일

기본 패턴

javascript
const port = Number(process.env.PORT ?? 3000);

if (!Number.isInteger(port)) {
  throw new Error("PORT must be an integer");
}

설명

  • process.env는 Node.js 프로세스가 외부 환경에서 전달받은 문자열 기반 설정 저장소입니다. 간단하고 강력하지만, 모든 값이 문자열이라는 점을 먼저 기억해야 합니다.
  • 그래서 실제 서비스에서는 단순 읽기보다 "파싱과 검증"이 중요합니다. 포트, 불리언, URL, API 키처럼 각 값이 어떤 형식이어야 하는지 시작 시점에 한 번 확인하는 편이 안전합니다.
  • env 파일은 로컬 개발 편의에는 좋지만, 곧바로 애플리케이션의 전체 config 모델이 되는 것은 아닙니다. 중요한 것은 값의 출처보다, 애플리케이션이 어떤 설정을 필수로 요구하는지 명확히 드러내는 것입니다.
  • 좋은 config 구조는 앱 전역에서 process.env를 흩어 읽지 않고, 시작 단계에서 한 번 모아 읽고 검증한 뒤, 이후에는 정리된 config 객체를 사용합니다.
  • 이 주제의 핵심은 운영 경계입니다. 코드가 어디까지 환경에 의존하는지, 잘못된 설정이 들어왔을 때 언제 실패할지, 비밀 값과 일반 설정을 어떻게 구분할지를 함께 생각해야 합니다.

빠른 정리

요소의미
process.env문자열 기반 환경 변수 집합
env 파일로컬 개발용 설정 주입 방식
파싱문자열을 숫자/불리언/URL로 변환
검증시작 시점에 필수 설정 확인
권장 패턴한곳에서 읽고 정리된 config로 배포

주의할 점

process.env를 코드 곳곳에서 직접 읽기 시작하면 설정 누락과 타입 오류가 늦게 터지기 쉽습니다. 시작 단계에서 한 번 검증해 실패를 앞당기는 편이 운영상 훨씬 안전합니다.

참고 링크

2 sources