환경 변수(feat. dotenv) (TIL 70일차)

3057 단어 programmingclicli

".env 는 어디로 간걸까..?"


환경 변수란?

환경 변수(environment variable)는 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이다.

위키백과는 환경 변수(environment variable) 를 위와 같이 정의하고 있습니다.

이런 저런 자료를 찾다 보니 프로그래밍에서 환경이라는 것은 보통 개발, 테스트, 운영 등 여러 환경으로 나뉜다고 합니다. 그리고 이를 보다 더 쉽게 이해하기 위해 컴퓨터, 혹은 시스템이라는 말을 덧붙이고 있더라구요.

제가 이해한 바를 예로 들어 설명하면 이렇습니다. 프로그래밍을 할 때 저는 맥북 에어를 쓰고 있습니다. 개발 환경이 맥북 에어를 기준으로 맞춰지는 것이죠. 하지만 테스트를 돌리기 위한 서버, 또는 실제 운영을 위한 서버 등이 전부 맥북 에어일 리는 없겠죠. 각각의 환경이 다를 수 있습니다.

이처럼 다른 환경마다 다르게 적용되어야 하는 값이 있다면, 이를 환경 변수에 설정해 사용할 수 있다고 합니다. 환경 변수를 저장하게 되면 해당하는 시스템의 모든 프로그램들이 이 변수에 접근할 수 있게 된다고 하네요. 지역 변수가 일정한 범위 안에서만 접근이 가능하고 전역 변수가 프로그램 안에서만 접근이 가능하다면, 환경 변수는 시스템 레벨에서 접근이 가능한 변수라고 할 수 있겠습니다.

특히 웹개발에서는 API key 나 데이터베이스를 접속하는데 필요한 username/password 와 같은 민감한 정보를 노출하고 싶지 않을 때, 환경 변수에 이를 저장해서 활용할 수도 있다고 합니다.


사용법

리눅스 운영체제에서 환경 변수를 확인하는 데 사용되는 두 가지 명령어에 대해 알아보겠습니다. exportecho 입니다.

export : 단독으로 사용할 경우 현재 저장된 모든 환경 변수를 확인할 수 있습니다. 새로운 변수를 추가할 때는 명령어 뒤에 한 칸을 띄우고 변수명과 값을 등호(=) 로 연결하여 다음처럼 사용할 수 있습니다.

export 변수명=사용하려는값 // 예) export intro="hello world"

echo : 환경 변수와 함께 사용하여 환경 변수의 값을 확인할 수 있습니다. 이 때 변수명 앞에 $ 기호를 입력해 다음에 오는 것이 변수라는 것을 명시해주어야 합니다.

echo $intro // hello world

dotenv

환경 변수를 효과적으로 제어하기 위해 node.js 에서는 dotenv 모듈을 사용한다고 합니다. 구글에서 dotenv 를 검색하면 바로 공식 문서로 연결이 되네요. 설치 방법부터 어떻게 사용할 수 있는지에 대한 예시가 기록되어 있습니다.

dotenv 모듈을 설치한 후, 프로젝트의 root 디렉토리에서 .env 파일을 생성하는 것으로 사용이 가능한데요. 이 때, 원하는 변수를 .env 파일 안에서 이름=값 의 형태로 저장하면 된다고 합니다. 공식 문서에서는 다음을 예시로 들고 있네요.

DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3

전통적으로는 require 를 활용해 dotenv 를 불러와서 사용이 가능하지만, import 를 활용하고 싶은 경우에는 조금 더 복잡한 과정이 필요하다고 합니다. 공식 문서에서도 언급하는 내용이긴 합니다만, 좀 더 잘 설명되어 있는 블로그가 있어 링크를 남기도록 하겠습니다.


링크 외 참고한 자료들

얄팍한 코딩사전님의 영상 강의

https://www.daleseo.com/js-node-process-env/

https://www.a-mean-blog.com/ko/blog/%ED%86%A0%EB%A7%89%EA%B8%80/_/Environment-Variable-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98

좋은 웹페이지 즐겨찾기