Node.js - why do we use node.js

JUGNMIN LEE·2021년 6월 18일
0

Node.js

목록 보기
1/2
post-thumbnail

Node 공부를 하면서

왜 노드를 사용하고 노드란 무엇인지 정리를 해보자 !



Node.js란 무엇인가 ?

공식사이트에선 아래와 같이 설명하고있다.

크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임입니다. 이벤트기반 혹은 논블로킹 I/O 모델을 사용해 가볍고 효율적이다

노드를 공부하는 사람들의 다수는 프론트엔지니어 이며 자바스크립트를 공부했다는 사람들은 해당 언어로
서버를 짜기 위해 노드를 배우기도 한다.

위의 공식사이트에 설명에 의하면

노드는 서버라는 단어 자체가 소개글에 없다 그렇기에 서버로만 사용되는 것이 아닌 자바스크립트라는 언어로 만든 프로그램을 실행할 수 있게 만들어주는 환경일 뿐이다 (그래서 자바스크립트 런타임이라 부름!)

그러면 왜 우리는 Node.js를 주로 서버로 활용하게 될까 ?

첫번째 이유

이벤트 루프를 활용한 논블로킹 I/O(입출력)이니깐 !!

이벤트 루프를 알기 전에 이벤트 기반에 대해 알아보자.

이벤트 기반이란 이벤트가 발생할때 미리 지정해둔 작업을 수행하는 방식을 의미하며 여기서 여러가지의 이벤트가 발생할때 어떤 순서로 작업을 수행할지 이벤트 루프가 판단을 하게 된다 !

이벤트 코드를 실행하는 순서에 따라 영역들이 있으며

Call Stack, Web Apis, Task Queue등이 있다

그렇다면 논블로킹은 ??

논블로킹은 이전 작업이 완료될때까지 멈춰져있지 않고 다음 작업을 실행 하는것을 말한다 !

실생활에서 예를 들면 아래와 같은 예시를 들 수 있다.

카페와 식당 두 장소에 직원이 한명씩 있다.
하지만 카페의 경우에는 직원이 손님들의 주문들을 다 받아 각자 메뉴가 완성되면 진동벨로 알려주며 식당의 경우에는 주문이 들어오고 음식이 완성되어 나가기 전까지 고객은 줄을 서서 기다려야 한다
여기서 카페는 논블로킹이며 블로킹은 식당이라고 볼 수가 있다.


두번째 이유

자바스크립트는 싱글스레드 언어라는 이야기를 들어봤을 것이다 원래는 멀티스레드 언어이지만 실질적으로 개발자가 컨트롤 할 수 있는 부분은 스레드 하나이기에 싱글스레드 언어라고 부르기도 한다 Node.js도 마찬가지로 싱글스레드이다.

때문에 한번에 하나의 작업밖에 처리를 하지 못하지만 위에서 설명한대로 이벤트 루프를 활용한 논블로킹 I/O를 통하여 고성능으로 병렬처리가 가능하다 !!

또한 싱글스레드는 멀티스레드에 비해 자원을 적 게 사용하는 장점이 있으며 대신 시간이 오래걸리는 작업을 한다면 서버전체에 성능이 저하 되게 된다 또한 에러를 제대로 처리하지 못하면 서버전체가 멈추어버리는 현상이 일어날 수도 있다


정리

노드는 정말 강력하다 자바스크립트라는 언어 하나로 웹사이트와 서버를 동시에 개발할 수 있기 때문이다

profile
Frontend Developer

0개의 댓글