Node.js는 다른 환경과는 다르게 Single Thread 기반이라 exception이 발생하면 모든 운영이 정지되어 버린다.
(다른 환경은 문제가 있는 해당 로직을 실행 하는 Thead만 죽어버려서 전체 서비스는 건재하다)
이와 같은 문제를 해결하기 위해 node.js에는 forever라는 모듈이 있다.
대부분은 npm install -g forerver
명령어로 전역 설치를 하여 forerver app.js
로 사용하는게 일반적이다.
하지만 Heroku는 전역 모듈을 지원하지 않아 위와같이 실행은 힘들다.
Heroku에서의 서비스 실행 명령을 담고 있는 Procfile 에서
web: node app.js
과 같은 방법으로 밖에 실행할 수가 없는것이다.
하지만 살짝 발상의 전환을 하면 forerver도 사용할 수 있게 된다.
npm install --save forever
위와 같이 설치하여 package.json에 forerver를 포함시켜 전역이 아닌 npm_modules 폴더에 local로 설치하도록 한다
그리고 Procfile에선
web: ./node_modules/.bin/forever app.js
위와같이 npm_modules 내에 설치된 forerver를 실행하여주면 영원히 죽지 않는 Node.js 서비스를 할 수 있게 된다.
출처 : http://thejackalofjavascript.com/deploying-node-application/
Heroku에서 Forever로 node.js 실행하기