기본 패턴
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