node.js_programming

[Node.js] 인기 NPM 패키지 알아보기

NPM은 Node.js를 더욱 편리하게 사용할 수 있도록 만드는 핵심 요소입니다.

Node Package Manager라는 뜻의 NPM은 Node.js에서 사용할 수 있는 모듈을 패키지 형태로 저장해 둔 패키지 생태계이자 현존하는 가장 큰 오픈소스 라이브러리입니다. 직접 개발한 모듈뿐 아니라 다른 사용자들이 미리 만들어 놓은 모듈을 NPM에서 간편하게 다운로드 받아 사용할 수 있다는 점이 특징입니다.

NPM에는 100만개 이상의 패키지가 등록 되어 있는데요.
이 중, node.js 개발자에게 꾸준히 인기 있는 패키지는 무엇인지 살펴 보겠습니다.


1. Express

express

Express는 node.js의 웹 개발 프레임워크입니다. npm-stat.com에 따르면 Express가 출시된 2010년 5월부터 2019년 11월 현재 9억건이 넘는 다운로드 수를 기록했습니다. 사실 상, Node.js의 표준 프레임워크라고 볼 수 있는 Express는 다음과 같은 특징을 갖고 있습니다.

  • 미들웨어
    Express의 장점 중 하나는 ‘미들웨어’를 사용한다는 것입니다. 미들웨어는 Express가 요청(req)에 대한 응답(res)을 하기 전, 중간에서 특정 동작을 수행하는 프로그램을 의미합니다. 미들웨어를 통해 서버 통신 과정에서 수행되어야 하는 작업을 간편하게 처리할 수 있습니다. 예를 들어, 사용자 인증을 먼저 거친 후, 웹 페이지를 렌더링 하고 싶다면 인증 미들웨어를 작성하여 먼저 삽입해 주는 방식입니다.
     
  • 라우팅
    Node.js에 내제된 라우팅 기능보다 발전된 라우팅 기능을 제공합니다. 라우팅은 사용자가 보내는 URL에 따라 응답할 방법을 결정하는 것을 말합니다. Express는 REST API를 통해 라우팅 로직을 특정 디렉토리 아래에 모듈로 만들어 놓고 간편하게 불러와(require) 사용할 수 있습니다.
     
  • 디버깅
    응용 프로그램의 어느 부분에서 버그가 발생했는지 신속하게 찾아낼 수 있도록 쉬운 디버깅 매커니즘을 제공합니다. 내부적으로 디버그 모듈을 사용하여 경로 일치, 사용 중인 미들웨어 기능, 응용 프로그램 모드 및 요청-응답(request-response) 사이클 흐름을 기록하고 판단합니다.

Express를 이용해 별도의 코드를 작성하지 않고도 간단하게 웹 서버를 구현할 수 있는 방법을 확인해 보세요. [Express로 웹 애플리케이션 만들기]

2. React

react

React는 페이스북에서 개발한 유저 인터페이스(User Interface, UI) 라이브러리입니다. 페이스북, 인스타그램 뿐 아니라 넷플릭스, 에어비앤비, 애플 등 다양한 곳에서 React를 활용합니다. 페이스북에서 업데이트를 활발히 진행하고 지속적인 보완이 이뤄진다는 점 때문에 신뢰를 얻고 있습니다.

React의 주요 특징은 아래와 같습니다.

  • 컴포넌트
    React로 구성된 웹 페이지는 다양한 컴포넌트로 구성되어 있습니다. 복잡한 UI를 작은 섹션으로 쪼개어 구성하고, 각 섹션을 재사용할 수 있어 단순하고 유연하다는 특징이 있습니다.
     
  • 가상 DOM (Virtual DOM)
    React는 Virtual DOM을 통해 빠르게 렌더링 합니다. 웹 페이지를 웹 브라우저에 표현하기 위해 DOM(Document Object Model)을 업데이트하는 것은 중요하지만, 전체 문서를 업데이트 하는 데에는 많은 시간이 소요 됩니다. Virtual DOM은 Origin DOM을 추상화하여 객체화한 형태로, Origin DOM을 실제 조작하지 않아 브라우저 리플로우나 리페인트 횟수를 줄여 퍼포먼스를 높입니다.
     
  • JSX(Java Script XML)
    React는 일반 JavaScript 문법이 아닌 JSX(Java Script XML) 문법을 사용하여 UI를 템플릿화 합니다. JSX는 HTML과 유사한 형태이기 때문에 구문 작성이 쉬워 간단하게 컴포넌트를 만들어 사용할 수 있습니다.

3. Mocha

mocha

Mocha는 Node.js에서 가장 많이 사용하는 테스트 프레임입니다. 테스트 코드를 입력하면 실행(run)해 주는 테스트 러너로, 가볍게 테스트를 진행할 수 있다는 점이 장점입니다.

다만, 자체 테스트 Assertion은 지원하지 않기 때문에 Chai, Should.js 등의 라이브러리를 함께 사용해야 합니다. Simple, Flexible, Fun을 슬로건으로 하는 Mocha는 테스트 주도 개발(Test Driven Development,TDD)을 수월하게 한다는 평을 받고 있습니다.

4. Socket.IO

socket.io

Node.js는 가볍고 빠른 특징 덕분에 real-time 애플리케이션 개발에 적합합니다. 이에 따라 node.js를 이용한 실시간 채팅 개발을 수월하게 해주는 풀스택 Socket.IO 패키지는 NPM에서 자주 다운로드 되는 순위에 자리하고 있습니다.

Socket.IO는 브라우저와 서버 간 실시간 양방향 및 이벤트 기반 통신을 가능하게 하는 라이브러리로서 기존에 있던 다양한 통신 기술(JavaScript 기반 Ajax, Flex Socket 등)을 통합하여 단일 API로 만든 기술입니다.

웹 소켓을 지원하지 않는 브라우저(Mozilla 계열, 낮은 버전의 Internet Explorer)도 서버와 양방향 통신을 할 수 있어 브라우저에 관계없이 실시간 웹 채팅을 구현할 수 있습니다.

Socket.IO를 사용한 채팅 서버 개발에 관심이 있으시다면.
[Node.js] Socket.IO와 Redis를 활용한 채팅 서버 개발 게시 글을 참고하세요.

5. PM2

pm2

PM2는 Node.js 프로세스 매니저입니다. 서버에서 애플리케이션을 개발하는 경우, 로그 처리, 프로세스가 다운됐을 때의 처리, 부팅 시 자동실행 등 관리해줘야 할 것들이 많습니다. PM2는 애플리케이션 시작(start), 재시작(restart), 정지(stop), 삭제(delete) 등의 상태를 관리하며 응용 프로그램을 무 중단 상태로 운영하고 다운타임 없이 프로그램을 다시 로드(reload)하는 역할을 수행합니다.

특히, 애플리케이션에 충돌이 발생한 경우에도 미리 restart 옵션을 활성화하면, 애플리케이션을 자동 재시작하여 무 중단 서비스를 운영할 수 있습니다.

클러스터링 모드로 애플리케이션 성능을 향상할 수 있는 것도 주요한 특징입니다. 클러스터링 모드는 단일 CPU 코어 기반인 Node.js로 만든 애플리케이션을 멀티 CPU로 확장하여 애플리케이션 성능 향상에 도움을 줍니다.


지금까지 인기 있는 NPM 패키지 5가지를 알아보았습니다.

가비아는 Node.js 호스팅을 제공하고 있습니다.

CBT, OBT를 거쳐 안정성이 검증된 컨테이너 기반 가비아의 Node.js 호스팅을 이용해 보세요.

[Node.js 호스팅 알아보기]