PM2 사용이유
Node.js는 싱글 쓰레드로 동작하고 CPU의 단일 코어를 사용하기 때문에 멀티 코어 CPU를 사용하면 성능이 원하는 만큼 높아지지 않는다
두번째로는 서버에 에러가 발생 했을때 프로세스가 죽게 되어 서비스가 중단되게 됩니다. 이러한 문제들을 해소하기 위해 여러가지 관리 도구 들이 나왔는데 PM2도 Node.js의 프로세스를 관리하는 도구중 하나다
클러스터 모듈을 사용해서 마스터 프로세스에서 CPU 코어 수만큼 워커 프로세스를 생성해서 모든 코어를 사용하게끔 개발하면 됩니다.
애플리케이션을 실행하면 처음에는 마스터 프로세스만 생성되는데요. 이때 CPU 개수만큼 워커 프로세스를 생성하고 마스터 프로세스와 워커 프로세스가 각각 수행해야 할 일들을 정리해서 구현하면 된다. 예를 들어 워커 프로세스가 생성됐을 때 온라인 이벤트가 마스터 프로세스로 전달되면 어떻게 처리할지, 워커 프로세스가 메모리 제한선에 도달하거나 예상치 못한 오류로 종료되면서 종료(exit) 이벤트를 전달할 땐 어떻게 처리할지, 그리고 애플리케이션의 변경을 반영하기 위해 재시작해야 할 때 어떤 식으로 재시작을 처리할 지 등등 고민할 게 많다