Node.js 이해하기

일단해봐·2023년 7월 14일
0

NodeJS

목록 보기
1/1
post-thumbnail

📌 Node.js 란?

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

즉, 노드를 통해 다양한 자바스크립트 애플리케이션을 실행할 수 있고, 그 중 서버를 실행하는데 가장 많이 사용된다.

기존 웹 브라우저에서만 실행되던 JavaScript를 서버 측에서 실행할 수 있게 해줘 웹 개발을 진행할 때 웹에서 표시되는 부분은 JavaScript를 사용하여 만들어야 하고 서버는 Ruby, Java 등 다른 언어를 사용해야 했던 문제를 JavaScript 하나로 프론트와 백을 모두 개발할 수 있는 환경을 만들었다.

노드는 비동기식 이벤트 기반 아키텍처를 사용하여 많은 수의 동시 연결을 처리할 수 있고, 확장성과 성능이 뛰어나다. 이를 통해 JavaScript를 사용하여 웹 서버, 웹 애플리케이션 등을 개발할 수 있다. 노드는 NPM(Node Package Manager)을 포함하고 있어 다양한 외부 모듈과 라이브러리를 활용할 수 있으며, 많은 개발자와 커뮤니티의 지원을 받고 있다.

📌 Node.js 특징

1. 자바스크립트 런타임

  • 런타임이란 특정 언어로 만든 프로그램을 실행할 수 있는 환경을 뜻한다.
  • 즉, 자바스크립트 언어로 만든 프로그램을 실행할 수 있는 환경을 자바스크립트 런타임이라 한다.
  • 노드를 사용하기 위해선 JavaScript 언어를 이해해야 한다.

2. 이벤트 기반

  • 이벤트 기반이란 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 의미한다.
  • 이벤트 기반 모델에서는 이벤트 루프라는 개념이 등장한다. 여러 이벤트가 동시에 발생했을 때 어떤 순서로 콜백 함수를 호출할지를 이벤트 루프가 판단한다.
  • 즉, 특정 이벤트가 발생할 때 무엇을 할지 미리 등록해두고, 이벤트가 발생하면 이벤트 리스너의 콜백함수를 호출하고, 이벤트가 끝난 후 노드는 다음 이벤트를 기다린다.

3. 이벤트 루프

  • 이벤트 루프는 여러 이벤트가 동시에 발생했을 때 어떤 순서로 콜백함수를 호출 할지를 판단한다.

4. 논 블로킹 I/O

  • 논 블로킹이란 이전 작업이 완료될 때까지 대기하지 않고 작업을 수행한다는 뜻이다.
  • 반대로 블로킹이란 이전 작업이 끝나야만 다음 작업을 수행하느 것을 의미한다.

5. 싱글 스레드

이벤트 기반, 논 블로킹 모델과 더불어 노드를 설명하는 키워드 중 하나는 싱글 스레드이다.자바스크립트 코드는 동시에 실행될 수 없는데 그 이유는 노드가 싱글 스레드 기반이기 때문이다. 스레드를 이해하기 위해선 프로세스부터 알아야 한다.

  • 프로세스는 운영체제에서 할당하는 작업의 단위다. 노드나 웹 브라우저 같은 프로그램은 개별적인 프로세스다. 프로세스 간에는 메모리 등의 자원을 공유하지 않는다.
  • 스레드는 프로세스 내에서 실행되는 흐름의 단위다. 프로세스는 스레드를 여러 개 생성해 여러 작업을 동시에 처리할 수 있다. 스레드들은 부모 프로세스의 자원을 공유한다. 같은 주소의 메모리에 접근 가능하므로 데이터를 공휴할 수 있다.

노드는 싱글 스레드, 논 블로킹 방식 모델을 사용한다.

📌 마무리

Node.js는 싱글 스레드, 논 블로킹 모델을 사용하여 작성한 코드를 하나의 스레드로 실행하기 때문에 무거운 코드를 실행할 때 성능이 저하될 수 있다. 하지만 I/O 작업과 같은 가볍지만 많은 요청을 수행할 때는 적합한 모델이기 때문에 웹 서버로서 채택되어지고 있다. 웹과 실시간으로 소통하는 서버 개발에 특화되어있다.

결론적으로 적은 컴퓨터 자원으로 많은 I/O 요청 작업에 특화되었고, 자바스크립트 언어로 풀스택 개발을 가능하게 해준다는 장점을 가지고 있어 꾸준히 관심을 받을 모델인 것 같다. 아직 백엔드에 관한 지식이 부족해 가볍게 알아보았지만 깊게 공부한다면 나중에 활용도가 매우 높은 지식일 것 같다.

profile
안녕하세요, 프론트엔드 개발자가 될 열정적인 사람입니다.

0개의 댓글