더북(TheBook)

15.1.5 pm2

 

pm2는 원활한 서버 운영을 위한 패키지입니다. 개발 시 nodemon을 쓴다면, 배포 시에는 pm2를 쓴다는 말이 있을 정도로 유용합니다. 가장 큰 기능은 서버가 에러로 인해 꺼졌을 때 서버를 다시 켜주는 것입니다.

또 하나 중요한 기능은 바로 멀티 프로세싱입니다. 멀티 스레딩은 아니지만 멀티 프로세싱을 지원하여 노드 프로세스 개수를 1개 이상으로 늘릴 수 있습니다. CPU 코어를 하나만 사용하여 다른 코어들이 노는 일을 방지할 수 있습니다. 노드는 클라이언트로부터 요청이 왔을 때 요청을 여러 노드 프로세스에 고르게 분배합니다. 하나의 프로세스가 받는 부하가 적어지므로 서비스를 더 원활하게 운영할 수 있습니다.

단점도 있습니다. 멀티 스레딩이 아니므로 서버의 메모리 같은 자원을 공유하지는 못합니다. 지금까지 세션을 메모리에 저장했는데, 메모리를 공유하지 못해서 프로세스 간에 세션이 공유되지 않는 것입니다. 로그인 후 새로고침을 반복할 때 세션 메모리가 있는 프로세스로 요청이 가면 로그인된 상태가 되고, 세션 메모리가 없는 프로세스로 요청이 가면 로그인이 안 된 상태가 되는 것입니다.

이 문제를 극복하기 위해서는 세션을 공유할 수 있게 해주는 무언가가 필요합니다. 이를 위해서 주로 Memcached나 레디스(Redis) 같은 서비스를 사용합니다. 레디스로 세션을 공유하는 방법은 15.1.8절에서 알아봅니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.