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 애플리케이션을 멀티 프로세스로 실행하는 방법은 다음과 같습니다.
- PM2를 전역으로 설치합니다.
$ npm install pm2 -g
- PM2를 사용하여 Express.js 애플리케이션을 실행합니다.
$ pm2 start app.js -i <numWorkers>
<numWorkers>
에는 생성할 워커 프로세스의 개수를 입력합니다.
마무리
이제 Express.js에서 멀티 프로세싱을 설정하는 방법을 알아보았습니다. ‘cluster’ 모듈을 사용하거나 PM2를 이용해 애플리케이션을 멀티 프로세스로 실행할 수 있습니다. 멀티 프로세싱을 통해 Express.js 애플리케이션의 성능을 향상시켜 사용자에게 더욱 원활한 서비스를 제공할 수 있습니다.