Fall in IT.

Node.js, Express 개념정리하기 본문

프로그래밍언어/Node.js

Node.js, Express 개념정리하기

D.Y 2016. 4. 2. 21:24

반갑습니다. 오늘은 Node.js, Express의 개념에 대해서 간략히 알아보도록 하겠습니다.



Node.js의 개념

  • 구글의 크롬 V8 자바스크립트 엔진을 기반으로한 비동기 IO 를 지원하는 고성능네트워크 서버이다.
  • 프로그래밍 언어로 Javascript를 사용한다.
  • 2009년 유럽 JSConf의 라이언 달이 V8을 이용하여 자바스크립트의 강력함과 단순함을 활용한 이벤트 기반의 논블로킹 I/O를 주 컨셉으로 만든 백엔드(Back-end) 자바스크립트기반 서버이다.

Node.js 장점

  • 매우 빠른 고성능 서버
    - 비동기 처리로 인해 퍼포먼스가 증가한다.
  • 한가지 언어(Javascript)를 사용하여 개발 할 수 있다.
    - 서버-클라이언트 모두를 개발할 수 있다. 
  • 프론트엔드 개발자들이 직접 서버 개발을 할 수 있다.
    즉, 프론트엔드 개발자는 하나의 어플리케이션을 혼자 개발 할 수 있다.
  • 광범위한 커뮤니티
    - 이미 많은 커뮤니티들이 활성화 되어있다.
  • 탁월한 생산성
    - Java 언어를 사용하여 REST API + DB 기술을 사용하여 백엔드를 개발할때와 node.js로 개발할 경우 node.js로 개발할때 더 빠르게 개발 할 수 있다. (단, 프로젝트의 시나리오에 따라 달라질 수 있습니다.)


Node.js 사용 시 주의사항

  • 싱글스레드이기 때문에 하나의 작업 자체가 시간이 많이 걸리면 전체 시스템의 성능이 낮아진다.
    - CPU를 많이 사용하지 않는 작업 위주로 개발되어야 한다. 
  • 코드의 가독성이 좋지않다. 
    - 자바에 비해 자바스크립트는 코드의 가독성이 좋지 않기 때문이다.
    - 코드의 가독성이 좋지 않다보니, 유지보수가 어려워 질 수 있다.
  • 실행해봐야 에러를 확인 할 수 있다.
    - 컴파일시 확인이 불가하다.
  • 프로그래밍 컨셉이 기존의 서버사이드 컨셉과는 달라서 적응 시간이 필요하다.
    - 코드를 순차적으로 실행하는 것이 아니라, 비동기 방식으로 이벤트를 보내 놓고, 그 응답에 대한 이벤트가 오면 핸들러를 통해서 처리하는 형식이기 때문에, 기존 서버 프로그래밍 모델과는 많은 차이가 있다.


Node.js를 사용하는데 적합한 어플리케이션은?

  • Node.js 의 특징을 살펴보면 짧은 시간에 대량의 클라이언트 요청을 처리하는 웹 어플리케이션을 개발하기엔 적합하나, CPU의 사용이 높게 필요한 어플리케이션의 경우(특히, 하나의 작업처리 시간이 길게 필요한경우)에는 오히려 성능이 좋지 않을 수 있을것 같습니다.

  • 간단히 말하면, Node.js는 간단하지만 많은 양의 처리를 요하는 서버를 구축할때 효율이 좋습니다.


Express.js의 개념

  • Express.js는 Node.js를 위한 빠르고 간편한 웹 프레임워크입니다.

  • 다양한 웹프레임웍이 있지만 현재까지 가장 많이 사용하는 것이 바로 익스프레스 엔진입니다.

    "Express.js는 Node.js의 핵심 모듈인 http Connect 컴포넌트를 기반으로 하는 웹 프레임워크다. 그러한 컴포넌트를 미들웨어(middleware)라고 하며, 설정보다는 관례(convention over configuration)와 같은 프레임워크의 철학을 지탱하는 주춧돌에 해당한다. 즉, 개발자들은 특정 프로젝트에 필요한 라이브러리를 어떤 것이든 자유롭게 선택할 수 있으며, 이는 개발자들에게 유연함과 수준 높은 맞춤식 구성을 보장한다."

(쉽게말하면, Node.js 개발시 개발을 빠르고 손쉽게 할 수 있도록 도와주는 역할을 합니다. 이것은, 미들웨어(Middleware) 구조 때문에 가능한 것입니다. 자바스크립트코드로 작성된 다양한 기능의 미들웨어는 개발자가 필요한 것만 선택하여 익스프레스와 결합해 사용할 수 있습니다.)


참조사이트
  • http://wikibook.co.kr/article/what-is-expressjs/
  • http://expressjs.com/en/starter/installing.html, express 공식 홈페이지 
  • https://nodejs.org/en/, node.js 공식 홈페이지


Comments