[javascript] Express.js에서의 클러스터링 환경 구축 방법

클러스터링(Clustering)은 Express.js 애플리케이션을 여러 개의 작은 프로세스로 분할하여 동시에 처리할 수 있는 환경을 구축하는 방법입니다. 이를 통해 애플리케이션의 성능을 개선하고 처리 속도를 향상시킬 수 있습니다.

Express.js에서 클러스터링 구현하기

아래는 Express.js에서 클러스터링을 구현하는 간단한 예제 코드입니다.

const express = require('express');
const cluster = require('cluster');
const os = require('os');

const numCPUs = os.cpus().length;
const app = express();

if (cluster.isMaster) {
  console.log(`마스터 프로세스 ${process.pid} 실행`);

  // 워커 프로세스 생성
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();  
  }

  cluster.on('exit', (worker, code, signal) => {
    console.log(`워커 프로세스 ${worker.process.pid} 종료`);
    cluster.fork();
  });
} else {
  // 워커 프로세스가 서버 실행
  app.get('/', (req, res) => {
    res.send('Hello, World!');
  });

  const port = 3000;
  app.listen(port, () => {
    console.log(`워커 프로세스 ${process.pid}에서 서버 실행 중`);
  });
}

설명

  1. cluster 모듈을 사용하여 마스터 프로세스와 워커 프로세스를 생성합니다.
  2. os 모듈을 사용하여 시스템의 CPU 개수를 확인합니다.
  3. 마스터 프로세스에서는 워커 프로세스를 CPU 개수만큼 생성합니다.
  4. cluster.on('exit') 이벤트를 사용하여 워커 프로세스가 종료될 때마다 새로운 워커 프로세스를 생성합니다.
  5. 워커 프로세스에서는 Express.js 애플리케이션을 실행합니다.
  6. app.get() 메소드를 사용하여 루트 URL에 접속하면 ‘Hello, World!’를 반환하는 라우터를 정의합니다.
  7. 워커 프로세스에서 서버를 실행합니다.

실행하기

위의 예제 코드를 app.js 파일에 저장한 후, 터미널에서 다음 명령어로 실행할 수 있습니다.

node app.js

웹 브라우저에서 http://localhost:3000에 접속하면 ‘Hello, World!’ 메시지가 표시됩니다.

결론

Express.js에서 클러스터링을 활용하면 애플리케이션의 성능을 개선할 수 있습니다. 클러스터링 환경을 구축하여 애플리케이션의 처리 속도를 향상시키고 사용자들에게 빠른 응답 속도를 제공할 수 있습니다.

참조 링크: