Node.js와 비동기

이홍경·2021년 12월 21일
0
post-thumbnail

Node.js는 javascript를 브라우저 환경이 아닌 곳에서도 실행할 수 있도록 v8엔진을 기반으로

빌드된 자바스크립트 런타임 환경이다. Node.js에서 비동기란 병렬적 작업 처리의 대안이라고 할 수

있다. 동기적인 방식은 IO 처리를 blocking하게 되는데, 이를 비동기적으로 처리하기 위하여

여러개의 thread를 사용하여 병렬적으로 요청을 처리했었다. 동시 접속자가 많아질 수록, 요청이 많아

질 수록 thread가 많이 발생하고 그만큼의 메모리 자원도 많이 사용된다. 그러나 서버의 자원은 제한이

되어있기 때문에 일정 이상의 thread를 발생시킬 수 없습니다. Node.js에서는 IO 요청을 비동기 방식

으로 처리합니다. IO 요청이 들어오게 된다면 eventqueue에 메세지 형식으로 쌓이게 되고, eventloop

가 돌며 queuq에 쌓인 task들을 pop하여 none-blocking 방식으로 커널에 처리를 요청한다. 작업이

끝난 task를 감지한 뒤 콜백함수를 호출하는 형식으로 비동기 처리를 하게 된다. 하나의 요청 처리가 완료

되기 전에 제어권을 다음 요청으로 넘기기 때문에, IO 처리가 blocking 되지 않으며 다음 요청을 처리할

수 있습니다.

profile
개발자를 꿈꾸는 자

0개의 댓글