이벤트루프 2

자바스크립트 이벤트 루프(Event Loop)

이벤트 루프 먼저 이벤트 루프 가 중요한 개념인 이유를 알아야한다고 생각합니다. 자바스크립트는 '단일 쓰레드' 기반의 언어입니다. 따라서 자바스크립트로 작성한 코드는 동시에 하나의 작업만 처리가 가능합니다. 하지만 자바스크립트를 통해 개발을 해보았다면, 동시에 여러작업이 처리되는 것을 보실 수 있었을겁니다. Node.js, Chrome 에서 사용하는 V8(자바스크립트 엔진)은 단일 호출 스택(Call Stack)을 사용하며, 실행 컨텍스트(실행할 코드에 제공할 환경정보들을 모아놓은 객체) 들을 이 호출 스택에 쌓아두었다가 상단에 있는 컨텍스트부터 실행(First in Last out)합니다. 자바스크립트가 '단일 쓰레드' 기반이라는 말은 맞지만, 실제 자바스크립트가 실행되는 ..

Language/JavaScript 2020.07.16

Node.js 비동기 처리

기존 웹 서버들이 쓰레드를 생성할 때, 일정한 메모리 공간을 사용하여서 클라이언트의 요청이 늘어날 경우, 서버를 늘려야하는 문제가 발생하였었습니다. 이와 다르게 Node.js는 비동기 이벤트 기반 아키텍쳐을 이용하기 때문에 이를 극복하고 뛰어난 성능을 발휘할 수 있었습니다. 그렇다면 비동기 이벤트 기반 아키텍쳐가 무엇인지 알아보려 합니다. Blocking I/O I/O 작업이 진행되는 동안 유저의 프로세스가 결과가 반환되기 전에는 다음 처리로 넘어가지 않는 것을 이야기합니다. 위의 그림에서와 같이 하나의 System call이 들어왔을 때, kernel에서 다른 data를 읽는중이라면 이 kernel이 data를 다 읽을 때까지 기다려야하는데, 이를 Block됐다고 표현합니다. Multi Thread 다..

Server/Node.js 2019.01.25