본문 바로가기

Learn/NodeJS

Node.js 학습 #1 간단히 알아보기

반응형

Node.js

정의

 비동기 이벤트 주도 JavaScript 런타임으로써 확장성 있는 네트워크 어플리케이션을 만들 수 있도록 설계된 플랫폼

 

동기와 비동기

 기존의 방식은 쓰레드 기반의 네트워크를 구현한다. 이를 동기식이라 하는데 비동기식에 비해 사용하기가 어렵다는데 문제가 있다.

각 상점을 기다리면서 가기엔 27분이나 걸린다.

동기(쓰레드)

 동기식의 경우 위 그림과 같은 상황에서 현실에선 있을 수 없는 식으로 가야한다. 바로 '동시성'을 발휘해 몸을 필요한 수 만큼 나눠 각 가게에 직접 보내고 볼일을 마치고 오면 다시 하나의 몸으로 합치는 식이다.

 

 즉, 가게가 많을 수록 몸을 여러개로 나누어 동시에 처리해야하니, 너무 많이 나누면 몸이 작아져 가게 까지 왔다갔다 하는 일 조차 큰 일이 되어버린다.

비동기(이벤트)

 비동기의 경우는 일일이 몸을 나누거나 기다리는 개념이 아니다. 그저 각 상점에서 대기표를 뽑고 할일을 하던가 쉬던가 하면서 기다리다가, 자신의 차례가 온 상점을 들렸다가 오면된다. 이렇게 되면 항상 무언가를 할 필요 없이 필요할 때만 일을 할 수 있게 된다.

 

 몸을 여러개로 나눌 필요가 없으므로 하나 하나 빠르게 해결이 가능하다. 하지만 혹여나 가다가 사고라도 나면 모든일이 중단된다는 단점이 있다.

 

장, 단점

 장점

 1. 구글이 제공하는 자바스크립트 엔진을 사용한다.

 2. 자바스크립트를 알고있었다면 새로 배울 필요가 없다.

 3. 개발이 빠르다.

 4. 가벼운 플랫폼이다.

 

단점

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

 2. 순차적 코드 실행 구조가 아니라, 일반적인 Java 처럼 만들면 큰 문제가 발생 할 수 있다.

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

 4. 코드가 수행되어야 코드에 에러가 있는지 알 수 있으며, 에러가 날 경우 프로세스가 내려가기 때문에 테스트가 엄청 중요하다.

 

 

반응형