본문 바로가기

카테고리 없음

node.js란 무엇인가?

node.js란?

Node.js는  Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임이다.

 

즉, 노드를 통해 다양한 자바스크립트 애플리케이션을 실행할 수 있으며,

서버를 실행하는데 제일 많이 사용된다.

 

  • Node.js는 JavaScript를 서버에서도 사용할 수 있도록 만든 프로그램이다.
  • Node.js는 V8이라는 JavaScript 엔진 위에서 동작하는 자바스크립트 런타임(환경)이다.
  • Node.js는 서버사이트 스크립트 언어가 아니다. 프로그램(환경)이다.
  • Node.js는 웹서버와 같이 확장성 있는 네트워크 프로그램을 제작하기 위해 만들어졌다.

 

node.js의 특징

- 확성성이 있는 네트워크 어플리케이션 개발에 사용되는 소프트웨어 플랫폼이다.

- 서버사이트에서 많이 사용되고 있다.

- 사용되는 언어로는 자바스크립트(Javascript)를 활용하며,

  Non-bloking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있는것이 특징이다.

- 내장 HTTP 서버 라이브러리를 포함하고 있어

  웹 서버에서 아파치 등의 별도 소프트웨어 없이 동작하는 것이 가능하다.

 

( Non- bloking I/O  : 함수 호출 시 당장 실행하는것이 아닌,

                                잠시 대기하는 동시에 요청을 처리하고 요청이 완료된 순서대로 처리하는 작업)

(이벤트 루프 : 여러 이벤트가 동시 발생 시, 어떤 순서로 콜백함수를 호출 할지를 이벤트 루프가 판단한다.)

 

 

node.js의 장단점

 

장점

- 자바스크립트를 동일하게 사용해서 서버단 로직을 처리할 수 있다

- 개발이 빠르고 쉽다.

- Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능

- 이벤트 기반 비동기방식이라 서버무리가 적다.

- npm(node package manager)을 통한 다양한 모듈(패키지)제공

 

단점

- 이벤트 기반 비동기방식이라 서버단 로직이 복잡한 경우 콜백함수의 늪에 빠질 수 있다.

- 코드를 순차적으로 실행하는 것이 아니라 비동기 방식으로 이벤트를 보내고,

  응답(이벤트)이 오면 처리하는 방식이기 때문에 java 개발을 했던 방식으로 설계하고 프로그래밍하면 

  큰 문제가 발생한다.

-단일 쓰레드이기 때문에 하나의 작업 자체가 많이 걸리는 웹 서비스에는 어울리지 않는다.

 (게시판 형태와 같이 가벼운 I/O가 많은 웹서비스에 어울린다.)

- 코드가 수행되어야 코드에 에러가 났는지 알 수 있으며,

  에러가 날 경우 프로세스가 내려가기 때문에 테스트가 엄청 중요하다.

  반드시 모든 케이스에 대해 소스코드를 검증해야한다.

 

 

 

node.js에 적합한 웹서비스

  • 간단한 로직. 
  • 대용량(동시에 여러 request를 처리)
  • 빠른 응답시간 요구
  • 빠른 개발 요구
  • 비동기방식에 어울리는 서비스(네트워크 스트리밍 서비스, 채팅 서비스 등)

 

node.js에 적합하지 않은 웹서비스

  • 단일 처리가 오래 걸리는 경우 : 싱글 쓰레드이기 때문
  • 서버 체크로직이 많은 경우 : 비동기방식이기 때문에 CallBack Hell에 빠지지 않기 위해
  • 업무 복잡도/난이도가 높은 경우 : 에러가 나면 서버가 죽기 때문에 코드 품질 중요

 

 


Reference

https://hanamon.kr/nodejs-%EA%B0%9C%EB%85%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/

https://junspapa-itdev.tistory.com/3