NodeJS란??

0

인턴

목록 보기
2/3
post-thumbnail

NodeJS 란??

노드 공식 사이트에서는 노드를 이와 같이 설명한다,

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

Node.js는 Chrome의 V8엔진을 이용하여 브라우저에서 JavaScript를 해석하듯이 서버에서 JavaScript가 동작할 수 있도록 하는 환경이라고 생각하면 이해가 쉽다.
위에서 말했듯이 환경이기 때문에 Node.js 자체 모듈인 http모듈을 import하여 서버를 생성 해야한다.


웹브라우저에 해당하는 자바스크립트 엔진


NodeJS 특징??

1.Node.js는 Single-Thread의 non-blocking I/O 이벤트 기반 비동식 방식으로 작동한다.

2.JavsScript 엔진(V8 Engine)으로 빌드 된 JavaScript 런타임이다.

따라서, 사용자의 요청은 한 곳에서 받지만 작업은 실질적으로 멀티쓰레드로 운영하여 결과를 구현한다.


NodeJS의 쓰레드 풀

Node.js는 application 자체에서는 단일 스레드로 실행되지만 Background에서 thread pool을 구성해 작업을 수행한다.

Thread Pool을 관리하는 것은 개발자가 아니라 플랫폼이다.

개발자는 쓰레드 하나를 관리하듯 프로그래밍하면 플랫폼이 여러 쓰레드를 관리하기 때문에 효율적으로 프로그래밍이 가능하다.


NodeJS 장점

1. 자바스크립트를 동일하게 사용해서 서버단 로직을 처리할 수 있다는게 가장 큰 장점새로운 언어를 습득하지 않고도 웹 서버 구축이 가능하다.

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

3. npm(node package manager)을 통한 다양한 모듈(패키지) 제공
  npm을 이용해 자신이 필요한 라이브러리와 패키지를 검색해서 설치하고 사용할 수 있기 때문에 빠른 개발이 가능하다.

4. 구글이 만드는 JavaScript 엔진을 사용한다. 구글은 V8 엔진 성능 업그레이드를 계속 하고 있다.

5. C++로 개발된 V8 JavaScript 엔진이기 때문에 확장성이 좋다.

NodeJS 단점

1. 이벤트 기반 비동기 방식이기 때문에 callback hell에 빠질 수 있다.

2. 단일 쓰레드이기 떄문에 가벼운 웹서비스에 최적화

3. 코드가 문제없이 수행되어야 코드에 에러가 있는지 알 수 있기 때문에,테스트에 많은 신경을 써야한다.

NodeJS가 어울리는 웹 서비스

로직이 간단하고 빠른 개발이 요구 될 시
비동기 방식이 어울리는 서비스(스트리밍,라이브,채팅)
ex)Netflix, Linkedin, Paypal, Uber, Facebook

profile
목적지가 있는 개발자 백재원입니다.

0개의 댓글