**process**는 현재 Node.js 프로세스에 대한 정보와 제어 기능을 제공하는 전역 객체입니다. 환경, 명령줄 인자, I/O 스트림, 생명주기, 시그널에 대한 인터페이스입니다.
환경 변수 읽기
js
process..;
process..;
port = process.. || ;
process.env는 (코드 외부에서 설정된) 설정과 비밀값을 읽는 표준 방식으로, twelve-factor 설정의 핵심입니다.
// node script.js --name=Ann
process.argv; // ["node", "/path/script.js", "--name=Ann"]
const args = process.argv.slice(2); // skip the first two
process.stdout.write("output\n"); // console.log writes here
process.stderr.write("error\n"); // console.error writes here
process.stdin.on("data", (chunk) => { /* read input */ });
process.exit(0); // exit with success code (1 = error)
process.exitCode = 1; // preferred: set code, let the process finish naturally
process.pid; // the process id
process.cwd(); // current working directory
process.uptime(); // seconds the process has run
process.on("SIGTERM", () => { /* clean up, then exit — e.g. on container stop */ });
process.on("SIGINT", () => { /* Ctrl+C */ });
process.on("uncaughtException", (err) => { log(err); process.exit(1); });
process.on("unhandledRejection", (reason) => { log(reason); });
SIGTERM/SIGINT를 수신하는 것은 graceful shutdown(진행 중인 요청을 끝내고 종료 전에 DB 연결을 닫음)을 구현하는 방법이며, 잡히지 않은 에러 핸들러는 최후의 안전망입니다.
process.memoryUsage(); // heap stats (leak detection)
process.nextTick(cb); // schedule a callback before the next event-loop phase
process.platform; // "linux" | "darwin" | "win32"
process는 프로그램과 런타임 환경을 연결하는 통로입니다.
process.env로 설정/비밀값을 읽고, CLI 인자를 처리하고, 무엇보다 프로덕션에서 중요한 graceful shutdown을 위한 시그널 처리와 최후의 에러 핸들러를 위해 끊임없이 사용합니다.
이를 이해하는 것은 설정 가능하고 견고하며 프로덕션 준비가 된 Node 애플리케이션을 구축하는 데 필수적입니다.