Node.js의 특징
Node.js란
Node.js는 자바스크립트를 브라우저 밖에서 스크립트 언어 이상의 프로그래밍 언어 역할을 할 수 있도록 실행할 수 있게 하는 런타임 환경이다.
덕분에 Node.js는 다양한 영역에서 다양하게 활용되고 있는데, 아래 통계를 보면 그 위상을 짐작할 수 있다.
https://survey.stackoverflow.co/2024/technology
Technology | 2024 Stack Overflow Developer Survey
PostgreSQL debuted in the developer survey in 2018 when 33% of developers reported using it, compared with the most popular option that year: MySQL, in use by 59% of developers. Six years later, PostgreSQL is used by 49% of developers and is the most popul
survey.stackoverflow.co
개발자들이라면 알만한 사이트 스택오버플로우의 2024년 통계 자료이다.
물론 국내에서 백엔드는 Spring이 대부분 사용되는 경향이 있지만 전세계적으로 보았을 때는 Node.js의 비율이 상당하다.
Node.js 특징
- 싱글 스레드: 처리해야 할 이벤트, 일이 많이 있어도 하나씩 하나씩 처리한다.
- 이벤트 기발: 이벤트가 있어야만 일을 진행한다.
- 논블로킹 I.O: 일을 처리하다 비는 시간이 생기면 다른 일을 처리한다.
논블로킹 I.O에 대한 자세한 설명은 다음과 같다.
function first() {
console.log("첫 번째");
}
function second() {
console.log("두 번째");
}
function third() {
console.log("세 번째");
}
first();
second();
third();
// Result
// 첫 번째
// 두 번째
// 세 번째
first(), second(), third() 세 개의 함수를 만들고 순서대로 실행을 해준다.
당연하게도 첫 번째, 두 번째, 세 번째 순으로 출력이 진행된다.
function first() {
console.log("첫 번째");
}
function second() {
console.log("두 번째");
}
function third() {
console.log("세 번째");
}
first();
setTimeout(second, 2000);
third();
// Result
// 첫 번째
// 세 번째
// 두 번째
이제 second에 setTimeout()함수를 적용하여 다시 실행해보자.
setTimeout(func, ms)는 func 함수를 ms 시간 뒤에 실행해주는 함수이다.
즉 setTimeout(second, 2000)은 second() 함수를 2초(2000ms) 뒤에 실행해준다.
위 코드를 실행하보면, 첫 번째와 세 번째가 출력된 후 2초 뒤에 두 번째가 출력되는 것을 알 수 있다.
second()를 실행하였을 때 2초를 기다려야 하기 때문에, 그 빈 시간동안 third()를 실행하고 second()를 실행한 것이다.