
NodeJS는 오픈 소스 플랫폼으로 JS를 서버 측에서 실행하는 플랫폼이다.
Chrome V8 엔진을 사용하여 JS 코드를 빠르게 실행할 수 있다.클러스터링 방식을 통해 여러 서버에 코드를 분산할 수 있다.NPM 은 라이브러리와 모듈을 쉽게 설치하고 관리할 수 있다.Node.js에서
클러스터링(Clustering)멀티 코어 GPU를 활용하여 애플리케이션의 성능과 확장성을 향상 시키는 방법을 말한다. 이를 통하여 여러 개의 프로세스를 생성하고 요청을 분산 처리할 수 있다.
클러스터링은 아래와 같은 방식으로 구현된다.
마스터 프로세스(Master Process) : 클러스터링을 관리하는 주체로서 워커 프로세스(Worker Process)를 생성하고 관리한다.워커 프로세스(Worker Process) : 실제 서버를 구축하는 프로세스로서, 마스터 프로세스(Master Process) 로부터 작업을 할당받아 요청을 처리한다.클러스터링의 사용 예시는 아래와 같다.
const cluster = require('cluster');
const http = require('http');
const cpuNumbers = require('os').cpus().length;
// 마스터와 워커 프로세스 구분
if(cluster.isMaster){
// 마스터 프로세스 지정
console.log(`Master Process ${process.pid} is running`);
// 워커 프로세스 생성
for(let i = 0; i < cpuNumbers; i++){
cluster.fork();
}
// 이벤트 리스너
cluster.on("exit", (worker, code, signal) => {
console.log(`Worker ${worker.process.pid} died`);
});
} else {
// 워커 프로세스에 각각 HTTP 서버 실행
http.createServer((req, res) => {
res.writeHead(200);
res.end("Hello World");
}).listen(8000);
console.log(`Worker ${process.pid} started`);
}
Express.js 는 가장 많이 사용되는 백엔드 프레임워크 중 하나로, 최소한의 코드로 웹 애플리케이션을 구축할 수 있다는 점이 있다.