이 글은 Node.js’ magical tips every developer should remember 를 번역한 것입니다.
개발자가 알아야 할 노드 팁들
필자는 자바스크립트 개발자로 오랫동안 일해 왔고 지금은 주로 Node.js와 Angular.js를 사용하고 있습니다. 경험 상, 언어의 목적과 상관 없이 모든 언어에는 항상 여러 트릭과 팁들이 있다는걸 발견했습니다.
프로그래머들은 종종 문제를 복잡하게 생각하고 그것은 개발 환경에 혼돈을 가져 옵니다. 이것에 관한 것은 Eric Elliott의 글에 설명되어 있습니다.
어쨌든 Node.js의 몇몇 좋은 팁과 트릭들과 본론을 시작하겠습니다:
1. 노드 쉘을 사용하라
만약 당신이 노드 함수가 작동하는지 테스트하고 싶다면, node.js shell은 테스트를 위해 아주 잘 작동할 것입니다. 그저 ‘node’ 명령어를 실행함으로써 node.js shell을 실행할 수 있습니다. 텍스트 에디터에 코드를 작성하고 그것은 아주 잘 작동할 것입니다. 그러나, 실행이 완료되었을 때 다른 CLI 툴들 처럼’exit’이나 ‘quit’ 같은 명령어들은 노드에서 작동되지 않습니다. 프로세스를 종료하기 위해 노드 쉘에서는 유효한 구문을 작성해야 합니다. 필요한 커맨드는 다음과 같습니다.
process.exit(0)
노드 쉘을 처음 사용할 때 나는 쉘을 벗어나는 방법을 이해하기 위해 구글에 검색해야만 했습니다. 또한 Ctrl/Cmd + D
를 사용함으로써 노드 쉘을 벗어날 수 있지만, 이 단축키는 노드 쉘이 실행중인 프로세스를 종료시키지 않습니다.
2. production 의존성에 “*” 사용을 피해라
당신의 package.json 파일에 항상 최신 버전을 유지하기 위해 *
를 사용하는 경우가 있을 수 있습니다. 그것은 당신의 모듈들이 성능이 향상되고, 버그가 수정되고, 새로운 기능들이 포함된 최신 버전으로 유지될 수 있는 좋은 방법입니다. 하지만 이것은 오직 development 모드이고 아직 production 이전에 한해서만 이해할 수 있습니다.
//instead of this:
“dependencies”: {
“clustered-node”: “*”
}
//use this:
“dependencies”: {
“clustered-node”: “~0.0.10”
}
그러나 production 환경에서는 의존성을 위해 그러한 방식을 사용하는 것은 매우매우 위험합니다. 당신은 패키지가 언제 문제를 일으켜 당신의 앱 충돌을 야기할 지 모릅니다. 따라서 *
는 초기 단계 development에서 사용하고 중요한 배치 단계에서는 구체적인 버전으로 전환해야 합니다.
3. 개발엔 nodemon, production엔 pm2
당신이 노드로 개발을 하기 시작할 때, 가장 절망스러운 것은 모든 변화에 대해 node filename.js
를 실행해야 한다는 것입니다.
이런 문제에 절망하고 검색 끝에,nodemon
이란 아름다운 패키지를 발견했습니다.
npm install -g nodemon
nodemon filename.js
nodemon을 사용해 파일을 실행하면 해당 파일과 해당 파일과 의존관계에 있는 파일들의 변화를 모니터 합니다.
production에서는 어떨까요?
당신이 Heroku, Nodejitsu 또는 다른 node.js 호스팅을 사용하고 있지 않다면, 당신은 node app을 실행하기 위해 EC2나 다른 클라우드를 사용하고 있을 것입니다. 어떻게 Node.js app이 항상 켜져 있도록 할 수 있을까요?
답은 PM2 라는 좋은 툴을 사용하는 것입니다. PM2는 nodemon과 같이 당신의 노드 앱을 production에서 실행되고 있게 하는 툴입니다. Nodemon은 변화를 모니터하여 다시 실행하지만 PM2는 충돌을 만나면 당신의 노드 앱을 다시 실행하게 합니다. PM2가 뛰어나긴 하지만, 당신의 앱을 여러개의 CPU 코어로 실행하게 하고 싶으면 PM2는 내장된 “load balancer”와 함께 당신이 쉽게 얼마나 많은 노드 Instance를 지정할 수 있게 해줍니다.
pm2 start app.js -i max
-i 파라미터는 얼마나 많은 instance를 실행할 지 결정합니다. 위에서는 max라는 빌트인 값으로 코어 수만큼 실행하게 합니다.