본문 바로가기
SW Programming/Node.js

Node.js 개요

by Crystal.k 2019. 12. 4.
  • Node.js의 역사
  • 스레드 기반 동기 방식과 이벤트 기반 비동기 방식의 차이

 

 

Node.js 배경사

javaScript는 1994년 넷스케이프사의 브랜든 이하이가 만든 프로그래밍 언어

javaScript를 활발하게 사용하게 되면서 웹 브라우저를 벗어나 사용하고자 함, 데스크톱에서는 자바스크립트를 사용해 어플리케이션을 개발할 수 있는 ADOBE AIR애플리케이션이나 윈도우8 애플리케이션이 등장하고 스마트폰에서는 자바스크립트를 활용한 하이브리드 애플리케이션이 등장

Node.js는 서버 환경에서 작동하는 javascript !

초기에는 서버 환경에서 자바스크립트를 사용하고자 LiveWires나 jaxer 등 사용했지만, 서버에서 이용하기에 속도가 너무 느림.

2008년도에 속도 형명의 시작.

2008년 9월 구글 크롬 웹브라우저 베타 버전 등장!

2008년 12월 크롬 정식 버전 발표

V8 자바스크립트 엔진은 C++로 개발되었으며 자바스크립트 코드를 기반으로 머신 코드를 생성해 실행하므로 기존 자바스크립트 엔진보다 속도가 빠름

크롬 웹 브라우저의 코드를 오픈 소스화되면서 v8 자바스크립트 엔진의 코드도 공개됨

 

라이언 달은 CommonJS 표준과 V8 자바스크립트 엔진을 기반으로 Node.js를 개발

 

Node.js는 서버 환경에서 자바스크립트를 사용하기위한 노력이 결과물

대규모 네트워크 애플리케이션을 개발 가능

기존의 웹 서버는 스레드를 기반으로 하는 동기 방식으로 네트워크 입출력을 처리

Node.js는 이벤트 기반으로 하는 비동기 방식으로 네트워크 입출력을 처리

 

 

이벤트 기반 비동기 방식

기존의 스레드 기반 동기방식은 해야할 일이 생기면 스레드를 여러개 만들어 동시에 일을 처리. 일이 많아질수록 스레드가 많아지고 메모리 사용량이 증가하는 단점.

 

대기표를 받아 때가 되면 일을 하는 방식

스레드를 단 하나만 생성하고, 대기하다가 이벤트가 발생하는 순간 일을 함.

일이 아무리 많아도 단일 스레드이기 때문에 메모리 사용량, 시스템 리소스 사용량은 그대로.

단점. 단일 스레드이기 때문에 해당 스레드 문제 생기면 프로그램 전체에 문제가 발생.

 

 

Node.js의 장단점

장점.

이벤트 기반 비동기 방식을 사용하여 대규모 네트워크 애플리케이션 개발 적합

JavaScript 사용하기 때문에 접근성이 좋음

구글이 만든 자바스크립트 엔진 사용(V8)

c++로 기능확장 가능

 

단점.

애플리케이션 실행에 문제 발생 시 애플리케이션 전체가 영향을 받음.

C, C++ 보단 느림.  그럼에도 불구하고 속도, 생산성, 유지보수성, 비용 등을 고려했을 때 PHP, Ruby, Python, Node.js가 우수함.

 

 

Node.js의 활용

이베이, 링크드인, 아톰, 슬랙, 등...

반응형

댓글