Node js란?

박가현·2023년 5월 5일
5

Nodejs

목록 보기
1/2
post-thumbnail

프로젝트를 시작하고 백엔드에 대한 지식이 없어 백엔드 개발자와 대화하는 게 힘들때가 종종 있었다. Nodejs로 간단한 CRUD를 개발해보는 것이 목표 중 하나이기도 하였고 백엔드에 대한 지식도 습득하고자 Node js 공부를 시작하였다.

‘제로초 Node js의 교과서’ 강의를 통해 학습하고 혼자서 간단한 프로젝트를 만드는 것을 목표로 두고 있다


goal
  • Node js의 정의를 파악한다
  • Node js의 특성에 대해 학습한다



Node js란?

Node js의 정의에 대한 질문을 하면 서버라고 답하는 사람들이 종종 있다 하지만 엄밀히 말하면 Node js는 JavaScript 런타임이고 공식 문서에서는 아래와 같이 정의하고 있다

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


런타임이란 특정 언어로 만든 프로그램을 실행할 수 있는 환경을 뜻하며 노드를 통해 다양한 자바스크립트 어플리케이션을 실행할 수 있다는 것을 의미한다

JavaScript는 말 그대로 스크립트 언어이므로 브라우저에서만 실행이 가능했었다. 하지만 이런 자바스크립트를 브라우저에서 해방시켜 브라우저 외에서도 실행 가능하게 만든 것이 Node js이다

JavaScript가 브라우저에서만 실행이 가능했을 때 서버의 코드는 JavaScript가 아닌 다른 언어로 구현해야했었다. 하지만 Node js가 생긴 이후 JavaScript로도 서버 소스코드를 만들어서 노드를 통해 서버를 구동할 수 있게 되었다

즉 한가지 언어로 전체 웹 페이지를 만들 수 있게 된 것은 매우 혁신적이었다



Node js의 특성


  • 이벤트 기반

이벤트 기반이란 이벤트가 발생했을 때 미리 지정해둔 작업을 수행하는 방식으로 이벤트가 발생하면 리스너에 등록해둔 콜백함수를 호출하며 이벤트가 끝난 후 노드는 다음 이벤트가 발생할 때까지 대기한다

  • 논 블로킹 I/O

파일 시스템 접근, 네트워크를 통한 요청 작업은 Input / Output의 일종이며 노드는 이런 작업들을 비동기 방식으로 블로킹을 만들지 않게 끔 처리한다

  • 싱글 스레드

노드는 스레드가 여러 개지만 직접 다룰 수 있는 스레드는 하나이기에 싱글 스레드라고 표현한다. 노드는 싱글 스레드로 혼자서 일을 처리하지만 논 블로킹 방식으로 이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행한다

→ 노드는 기본적으로 싱글 스레드, 논블로킹을 지원하므로 I/O 요청이 많이 발생하면 노드를 서버로 사용하는 것이 좋지만 노드는 CPU 부하가 큰 작업에는 적합하지 않다

profile
프론트엔드 공부일지

0개의 댓글