Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다.
즉, 노드를 통해 다양한 자바스크립트 애플리케이션을 실행할 수 있고, 그 중 서버를 실행하는데 가장 많이 사용된다.
기존 웹 브라우저에서만 실행되던 JavaScript를 서버 측에서 실행할 수 있게 해줘 웹 개발을 진행할 때 웹에서 표시되는 부분은 JavaScript를 사용하여 만들어야 하고 서버는 Ruby, Java 등 다른 언어를 사용해야 했던 문제를 JavaScript 하나로 프론트와 백을 모두 개발할 수 있는 환경을 만들었다.
노드는 비동기식 이벤트 기반 아키텍처를 사용하여 많은 수의 동시 연결을 처리할 수 있고, 확장성과 성능이 뛰어나다. 이를 통해 JavaScript를 사용하여 웹 서버, 웹 애플리케이션 등을 개발할 수 있다. 노드는 NPM(Node Package Manager)을 포함하고 있어 다양한 외부 모듈과 라이브러리를 활용할 수 있으며, 많은 개발자와 커뮤니티의 지원을 받고 있다.
이벤트 기반, 논 블로킹 모델과 더불어 노드를 설명하는 키워드 중 하나는 싱글 스레드이다.자바스크립트 코드는 동시에 실행될 수 없는데 그 이유는 노드가 싱글 스레드 기반이기 때문이다. 스레드를 이해하기 위해선 프로세스부터 알아야 한다.
노드는 싱글 스레드, 논 블로킹 방식 모델을 사용한다.
Node.js는 싱글 스레드, 논 블로킹 모델을 사용하여 작성한 코드를 하나의 스레드로 실행하기 때문에 무거운 코드를 실행할 때 성능이 저하될 수 있다. 하지만 I/O 작업과 같은 가볍지만 많은 요청을 수행할 때는 적합한 모델이기 때문에 웹 서버로서 채택되어지고 있다. 웹과 실시간으로 소통하는 서버 개발에 특화되어있다.
결론적으로 적은 컴퓨터 자원으로 많은 I/O 요청 작업에 특화되었고, 자바스크립트 언어로 풀스택 개발을 가능하게 해준다는 장점을 가지고 있어 꾸준히 관심을 받을 모델인 것 같다. 아직 백엔드에 관한 지식이 부족해 가볍게 알아보았지만 깊게 공부한다면 나중에 활용도가 매우 높은 지식일 것 같다.