메이쁘

[NodeJS][Cluster] Cluster 핵심 정리! 본문

Technology/Server - NodeJS

[NodeJS][Cluster] Cluster 핵심 정리!

메이쁘 2020. 4. 7. 16:16

Cluster(클러스터)


컴퓨터 클러스터란 ?

 - 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합.

 

즉, 병렬 처리를 하기 위해 작업을 분산시킨 시스템을 말한다.

 

 

그럼

 

NodeJS 에서의 Cluster 에 대해 알기 전에

 

NodeJS의 특성에 대해 짚고 넘어간다.

 

 

NodeJS는 자바스크립트 기반의 싱글 쓰레드 작업 처리 시스템 이다.

 

그렇지만, 모든 event(작업)는 이벤트 큐에 넣어지기 때문에

쓰레드가 하는 역할은 크지 않다.

 

하지만 event 들이 큐로 가기 때문에

 

쓰레드 측면에서 봤을 때

실행시간을 예측하기가 힘들다.

 

 

또한,

 

NodeJS는 하나의 프로세스가

 

32 bit - 512MB

64 bit - 1.5GB

 

메모리를 사용하도록 제한되어 있어서

 

이 제한을 늘리는 것 보다

Worker 개수를 늘려 병렬 처리 하는 것이 효율 측면에서 높고, 권장하고 있다.

 

 

이 Worker를 늘리기 위한 기술을

NodeJS에서는 Cluster라고 한다.

 

 

그래서

 

NodeJS의 Cluster 모듈을 사용해

각 작업의 특성을 가진 Worker process를 생성해서

 

병렬 쓰레드 처럼 

병렬로 작업을 수행하는 것이

 

NodeJS 서버의 효율을 극대화 시킬 수 있다.

*** Cluster 사용 방법과 코드는 다른 포스팅에서 제공하겠다.

 

 

 

보통

 

메인 쓰레드 -> 이벤트를 받아서 작업 분류. 작업 타입에 알맞게 작업을 Worker에 전달.

Worker(병렬 쓰레드) -> 실제 이벤트를 처리

 

 

방식으로 NodeJS 서버를 구현한다.

 

** 보통 CPU 1개 당 하나의 쓰레드를 생성해서 돌린다.

*** AWS EC2 프리 서버는 CPU가 1개이기 때문에 Cluster를 써도 큰 차이가 없다.

 

 

 

 

감사합니다.

 

 

 

참고

https://backback.tistory.com/356

https://m.blog.naver.com/PostView.nhn?blogId=pjt3591oo&logNo=220629022025&proxyReferer=https%3A%2F%2Fwww.google.com%2F

Comments