먼저 환경 변수란?
일반적으로 우리는 코드베이스를 하나만 관리하고, 로컬이 아닌 개발, 운영, 테스트 등 여러 환경에서 애플리케이션을 배포합니다. 어느 환경에서 애플리케이션을 배포하는지에 따라 다르게 값들을 설정해야 하는 항목들은 보통 운영 체제 레벨에서 환경변수를 통해 관리됩니다.
즉 "환경 변수"라는 이름에서 알 수 있듯이 일종의 변수이며, 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는, 동적인 값들의 모임이라고 할 수 있습니다.
대표적으로 API KEY나 데이터베이스(DB) 설정과 같이 민감한 정보들을 공개된 장소에 올리면 상당히 위험하기 때문에 민감한 정보나 공개되지 않아야 하는 정보들을 환경 변수로 저장해 놓고 사용하는 것이 일반적입니다.
더불어 로컬에서 환경변수로 API Key나 DB정보를 바꾸고 정상적으로 돌아가는지 확인을 하고 운영서버로 COMMIT 하기 전에 환경변수로 빼놔야 하는 것을 까먹거나,. gitignore에 깜빡하고 포함하지 않을 가능성 또한 존재하기 때문입니다.
- API Key, DB 정보 등 민감한 정보를
소스 코드에 직접 입력하지 않습니다. - 개발, 테스트, 배포 등 다양한 환경에서 각각 다른 설정 값을 적용합니다.
- 설정값들을 한 곳에 모아서 편리하게 관리합니다.
환경변수의 필요성을 정리해 보면 위와 같습니다.
process.env란 ❓
Nodejs 앱이 동작할 리눅스/유닉스 시스템의 환경변수를 말합니다.
Node.js환경에서 process.env로 환경변수에 접근할 수 있습니다.
process는 Node.js에 기본적으로 내장된 전역객체이기 때문에 별도로 import할 필요 없이 프로그램 어디에서든 사용할 수 있습니다.
일부 환경 변수들은 직접 import 하거나 설정해주지 않아도 운영체제 수준에서 이리 설정되어 있습니다. 그렇기 때문에 Mac에서 터미널(Terminal)을 열어 Node.js로 인터프리터를 실행하면 확인을 해볼 수 있습니다.
1회성 환경변수 설정하기
애플리케이션을 실행할 때 1회성으로 환경 변수를 설정하고 싶다면 key = value 형태로 명시하면 설정이 가능합니다.
위와 같이 키=값 형태로 API_KEY를 'abc'로 설정해 줄 수 있습니다. 해당 환경변수는 프로세스가 살아있는 동안에만 유효하며 프로세스가 종료된다면 사라지게 됩니다.
위와 같이 아까 설정한 API_KEY가 프로세스를 종료하고 다시 접속해 보면 사라진 것을 확인해 볼 수 있습니다.
process.env는 가변객체다.
process.env는 가변 객체이기 때문에 일반 변수처럼 자유롭게 값을 설정하거나, 변경, 삭제가 가능합니다.
삭제는 delete 명령어로 삭제할 수 있습니다.
그러나 이후에 규모가 커지거나 배포해야 할 환경의 수가 늘어나면 늘어날수록 관리는 엄청나게 힘들 것입니다.
그러면 위에서 말한 대로 개발자의 실수의 가능성이 높아질 수밖에 없습니다.
그래서 실제 Node.js를 사용하는 프로젝트에서는 환경 변수를 좀 더 효율적으로 관리하기 위해서 dotenv라는 미들웨어가 많이 사용됩니다.
다음 포스팅에서는 dotenv 미들웨어에 대해 알아보겠습니다.
'Framework > Node.js' 카테고리의 다른 글
[Node.js-Express] 라우터 (Router) 알아보기 (0) | 2024.04.19 |
---|---|
[Node.js] Middleware & 익스프레스 express 프레임워크 알아보기 (0) | 2024.04.17 |
[Node.js] dotenv 알아보기 (0) | 2024.04.07 |
[Node.js] 동기 & 비동기 / Non-blocking & blocking (0) | 2024.03.30 |