최근 Frontend에는 grunt, gulp를 거쳐서 webpack이 대세가 되었다.
그러면 이제 backend는 뭘로 해야 하는가라는 생각이 들기 시작했다.
어떻게 build하고, 어떻게 production에서 실행시키켜야 할까?
Process managers for Express apps
- Restart the app automatically if it crashes.
- Gain insights into runtime performance and resource consumption.
- Modify settings dynamically to improve performance.
- Control clustering.
Compare StrongLoop Process Manager, pm2, forever
- StrongLoop PM - 601 Star,2016년 이후로 commit되는 것들이 별로 없다.
- pm2 - 19,729 Star, 최근까지 많은 commit이 이뤄지고 있다.
PM2 for development?
다른 process manager들과 마찬가지로 pm2는 production을 위한 것이라고 할 수 있다.
그럼 개발할때는 grunt나 gulp를 쓸때와 마찬가지로 watch를 해야 할지 궁금해져서 찾아보니,
pm2에서는 pm2-dev라는 도구를 지원해주고 있었다.
pm2와 함께 제공되는 pm2-dev는 file이 변경되는 경우에 재시작시키는 기능을 제공하지만 --interpreter와 같은 기능을 제공하지 않는 것으로 보여서 실제 개발에 유용하지 않다. (pm2-dev는 pm2에 비해 제공하는 옵션이 거의 없어 보임)
(pm2 자체는 --interpreter 옵션을 제공해서 babel-node를 이용해 실행이 가능하다.)
pm2 start --interpreter babel-node server.js //(server.es6)
Refactor Watch System(https://github.com/Unitech/pm2/issues/2629) 이슈를 통해서 개발에 적합한 기능을 제공할 계획은 있어 보이지만 언제될지 알 수 없는 상태.
그러면 개발환경은 낡은 grunt나 grunt보다는 최신이긴 하지만 webpack에 비해서는 오래된 gulp를 이용하기보다
package.json에 babel, nodemon을 이용하도록 설정해서 해보자 생각이 들어서 방법을 찾아보았다.
Example Node Server w/ Babel
babel + nodemon example project
development인 경우에는 babel-node를 사용해도 괜찮지만 production인 경우에는 좋지 않다.
precompile을 한 후에 실행하는 것을 권장. => production에서는 precompile된 것을 pm2같은 process manager로 실행시키는 것이 좋을 것 같다.
Webpack Hot Module Replacement (HMR) Example
server-side Hot Module Replacement with Webpack & Express
nodemon도 필요없고, webpack을 이용하니 client와 유사한 개발환경을 구축할 수 있고,
bundling까지 되니 production에 deploy할때 simple할 것 같다.
=> 나쁘지는 않은 것 같은데 굳이 webpack HMR이 production에서 돌아갈 필요는 없다는 생각이 든다.
=> 가능성은 있긴 한데 당장은 babel-node, nodemon으로 다시 회귀!
'Coding' 카테고리의 다른 글
Node.js require vs ES2015 import/export (0) | 2017.07.07 |
---|---|
create-react-app에서 알아두면 좋을 것들 (0) | 2017.07.06 |
default export와 named export의 차이 (0) | 2017.07.05 |
Node 8 그리고 npm 5 (0) | 2017.06.16 |
@SpringBootTest, @WebMvcTest 차이 (0) | 2017.06.15 |