필자는 초기에 config와 env의 개념을 잘 모른채 혼동해서 사용했다. 데이터베이스의 접속을 위한 설정값들을 세팅할 때 dotenv 라이브러리를 통해 env 파일을 사용하기도 했고, config 폴더안에 yaml 파일에 설정값들을 세팅하기도 했다. 이렇게 사용하다보니
둘다 미리 어떤 값을 설정해놓고 코드에서 가져다가 쓰는 거 아닌가? 비슷한거 같은데?
이런 생각을 하며 둘을 단순히 비슷한 것들로 취급했다. 이번에 이 둘의 차이에 대해 조금 더 자세히 알아보겠다.
config는 설정이라는 의미로, 소프트웨어나 시스템이 동작하는 방식을 정의하는 매개변수들의 집합이다. 흔히 json
형태로 많이 사용되며, 그 외에 .xml
, .js
, .config
등의 형태로도 사용할 수 있다. 이는 개발, 테스팅, 프로덕션 등 다양한 환경에서 애플리케이션이 올바르게 동작하도록 구성하는데 사용된다.
env는 환경변수의 약자로, 운영 시스템에서 환경에 관한 동적 값을 가리킨다. 보통 시스템 레벨이나 프로세스 레벨에서 설정되며, 애플리케이션 실행 시간에 읽을 수 있는 변수다. 주로 보안이 중요한 데이터(비밀번호, API 키 등)를 저장하거나, 소프트웨어 실행되는 환경에 따라 다른 값을 가질 수 있도록 할 때 사용된다.
이렇게 차이점을 비교해보는데 이런 생각이 들었다.
dotenv를 사용할 때도 서버 동작 코드안에 env 파일을 넣고 설정값을 세팅했는데? 결국 .gitignore 파일에 지정해 놓으면 env 파일이든, config 파일이든 문제없는거 아닌가?
하지만 dotenv는 개발 및 테스트 환경에서는 유용하지만 배포를 할때는 그리 추천되지 않는다고 한다. 실제 배포를 할 때는 각 운영체제에 맞게 환경변수 설정을 하거나 클라우드 서비스에서 제공하는 환경 변수 관리 콘솔을 이용해 미리 설정을 하게 된다.