3.4.4.1 process.env
REPL에 process.env를 입력하면 매우 많은 정보가 출력됩니다. 자세히 보면 이 정보들이 시스템의 환경 변수임을 알 수 있습니다. 시스템 환경 변수가 노드에 직접 영향을 미치기도 합니다. 대표적인 것으로 UV_THREADPOOL_SIZE와 NODE_OPTIONS가 있습니다.
NODE_OPTIONS=--max-old-space-size=8192 UV_THREADPOOL_SIZE=8
왼쪽이 환경 변수의 이름이고 오른쪽이 값입니다 NODE_OPTIONS는 노드를 실행할 때의 옵션들을 입력받는 환경 변수입니다. --max-old-space-size=8192는 노드의 메모리를 8GB까지 사용할 수 있게 합니다. 옵션이 다양하게 존재하므로 3.8.1절에 NODE_OPTIONS에 대한 링크를 적어뒀습니다. UV_THREADPOOL_SIZE는 노드에서 기본적으로 사용하는 스레드 풀의 스레드 개수를 조절할 수 있게 합니다. 3.6.4절에서 자세히 알아봅니다.
시스템 환경 변수 외에도 여러분이 임의로 환경 변수를 저장할 수 있습니다. process.env는 서비스의 중요한 키를 저장하는 공간으로도 사용됩니다. 서버나 데이터베이스의 비밀번호와 각종 API 키를 코드에 직접 입력하는 것은 위험합니다. 혹여 서비스가 해킹당해 코드가 유출될 경우, 비밀번호가 코드에 남아 있어 추가 피해가 발생할 수 있습니다.
따라서 중요한 비밀번호는 다음과 같이 process.env의 속성으로 대체합니다.
const secretId = process.env.SECRET_ID; const secretCode = process.env.SECRET_CODE;
이제 process.env에 직접 SECRET_ID와 SECRET_CODE를 넣으면 됩니다. 넣는 방법은 운영체제마다 차이가 있습니다. 하지만 한 번에 모든 운영체제에 동일하게 넣을 수 있는 방법이 있으며, 6.2절에서 dotenv를 사용할 때 배웁니다.