[javascript] Express.js에서의 멀티 프로세싱 설정 방법

Express.js는 Node.js 기반의 웹 애플리케이션 프레임워크로, 단일 스레드에서 실행되는 노드 애플리케이션에 비해 더욱 효율적인 멀티 프로세싱을 지원합니다. 멀티 프로세싱을 사용하면 애플리케이션의 성능을 크게 향상시킬 수 있으며, 사용자 요청을 병렬로 처리할 수 있습니다.

이번 포스트에서는 Express.js에서 멀티 프로세싱을 설정하는 방법에 대해 알아보겠습니다.

1. Cluster 모듈 사용하기

Express.js에서 멀티 프로세싱을 구현하기 위해 기본적으로 ‘cluster’ 모듈을 사용합니다. ‘cluster’ 모듈은 서버에 대한 조정 및 요청 분산을 지원합니다. 이 모듈은 Node.js의 기본 모듈이므로 추가적인 설치가 필요하지 않습니다.

const cluster = require('cluster');
const os = require('os');
const app = require('./app');

if (cluster.isMaster) {
  const numWorkers = os.cpus().length;

  for (let i = 0; i < numWorkers; i++) {
    cluster.fork();
  }

  cluster.on('exit', (worker, code, signal) => {
    console.log(`Worker ${worker.process.pid} died with code ${code} and signal ${signal}`);
    console.log('Starting a new worker...');
    cluster.fork();
  });
} else {
  const port = 3000;
  
  app.listen(port, () => {
    console.log(`Server is running on port ${port}`);
  });
}

위의 코드는 ‘cluster’ 모듈을 사용하여 Express.js 애플리케이션을 멀티 프로세스로 실행하는 방법을 보여줍니다. cluster.isMaster를 사용하여 마스터 프로세스와 워커 프로세스를 구분하고, cluster.fork()를 호출하여 워커 프로세스를 생성합니다. 워커 프로세스가 종료되면 cluster.on('exit') 핸들러에서 새로운 워커를 생성합니다.

2. PM2 사용하기

‘cluster’ 모듈을 사용하는 방법 이외에도, Express.js 애플리케이션을 멀티 프로세싱으로 실행하기 위해 PM2(Process Manager 2)를 사용할 수 있습니다. PM2는 Node.js 애플리케이션의 프로세스 관리를 담당하며, 멀티 프로세스 실행, 로그 관리, 프로세스 모니터링 등의 기능을 제공합니다.

PM2를 사용하여 Express.js 애플리케이션을 멀티 프로세스로 실행하는 방법은 다음과 같습니다.

  1. PM2를 전역으로 설치합니다.
$ npm install pm2 -g
  1. PM2를 사용하여 Express.js 애플리케이션을 실행합니다.
$ pm2 start app.js -i <numWorkers>

<numWorkers>에는 생성할 워커 프로세스의 개수를 입력합니다.

마무리

이제 Express.js에서 멀티 프로세싱을 설정하는 방법을 알아보았습니다. ‘cluster’ 모듈을 사용하거나 PM2를 이용해 애플리케이션을 멀티 프로세스로 실행할 수 있습니다. 멀티 프로세싱을 통해 Express.js 애플리케이션의 성능을 향상시켜 사용자에게 더욱 원활한 서비스를 제공할 수 있습니다.

참고 자료