기본적으로 process라는 객체는 현재 실행되는 노드 프로세스에 대한 정보를 제공합니다. process 객체에 다양한 속성이 존재하는데, 아래와 같이 직접 입력해서 결과를 살펴보겠습니다.
Welcome to Node.js v20.11.0.
Type ".help" for more information.
> process.version
'v20.11.0' // 설치된 노드의 버전
> process.arch
'x64' // 프로세서 아키텍쳐의 정보. ex) arm, ia32
> process.platform
'win32' // 운영체제 플랫폼 정보. ex) linux, darwin, freebsd
> process.pid
17296 // 현재 프로세스 아이디. 다수 프로세스 실행 시 구분값
> process.uptime()
30.6244287 // 프로세스가 시작된 후 흐른 시간(초)
> process.execPath
'X:\\xxxxx\\nodejs\\node.exe' // 노드의 경로
> process.cwd()
'X:\\xxxxxx\\xxxx\\example' // 현재 프로세스가 실행되는 위치
> process.cpuUsage()
{ user: 500000, system: 140000 } // 현재 cpu 사용량
실제로 단순 조회만을 목적으로 위 객체의 속성들을 사용하지는 않습니다. 다만, OS나 여러 가지 실행 환경에 따라서 다른 동작을 하고 싶다면 위의 속성을 불러와서 사용하게 됩니다. 실제로 중요하게 사용되는 것들은 process.env / process.nextTcik, process.exit( ) 등입니다. 이러한 내용들도 하나씩 살펴보겠습니다.
○ process.env
이 process.env를 REPL에 입력하면 엄청나게 다양한 객체 속성 정보가 출력됩니다. 결국 이 정보들의 정체는, 시스템의 환경 변수입니다. 모든 정보와 속성을 살펴보기는 어려우니, 주요 속성 몇 가지를 알아보겠습니다.
NODE_OPTIONS=--max-old-space-size=8192
UV_THREADPOOL_SIZE=8
위의 예제의 왼쪽이 환경 변수, 우측이 환경 변수의 값입니다. 이를테면 'NODE_OPTIONS'는 노드의 실행시 옵션 값입니다. 위의 예제에 작성된 --max-old-space-size=8192의 의미는 노드의 메모리를 8GB까지 사용한다는 의미가 됩니다. 노드의 다양한 옵션은 추후 다른 아티클에서 자세히 살펴볼 예정이니, 큰 틀에서 이해하고 넘어가도록 하겠습니다.
UV_THREADPOOL_SIZE는 말 그대로 노드에서 기본적으로 사용하는 스레드 풀의 개수를 조절하는 환경 변수입니다. 이 역시 추후 자세히 살펴볼 예정입니다.
그리고 process.env에 시스템 환경 변수 뿐만이 아니라 직접 설정하는 임의의 환경 변수도 저장이 가능합니다. 그래서 process.env에 서비스의 중요한 key를 저장하는 공간으로도 사용합니다. 서버나 DB, API의 주요 key를 코드에 직접 입력하는 것은 유출의 위험이 있습니다. 그래서 중요한 정보를 다음과 같이 process.env의 속성으로 대체하기도 합니다. 이를테면 주요 ID나 CODE를 다음과 같은 방식으로 불러옵니다.
const secretId = process.env.SECRET_ID;
const secretCode = process.env.SECRET_CODE;
즉, 위와 같은 사용을 위해서는 process.env에 직접 SECRET_ID, SECRET_CODE를 넣을 수 있습니다. 향후 미들웨어 중 dotenv를 사용할 때 더 자세히 살펴보도록 하겠습니다. 아무튼 [. env] 파일만 잘 지키면 유출 가능성을 최소화할 수 있는 방식이 있다는 것만 기억하시면 됩니다.
'Programming > Node.js' 카테고리의 다른 글
4. Node 기능 살펴보기 (3) - 노드 내장 객체 : 기타 (0) | 2024.04.04 |
---|---|
4. Node 기능 살펴보기 (3) - 노드 내장 객체 : process 2 (0) | 2024.04.03 |
4. Node 기능 살펴보기 (3) - 노드 내장 객체 : 타이머2 (0) | 2024.04.01 |
4. Node 기능 살펴보기 (3) - 노드 내장 객체 : 타이머 1 (1) | 2024.03.29 |
4. Node 기능 살펴보기 (3) - 노드 내장 객체 : console (0) | 2024.03.28 |