Knowledge/IT

[IT/개발] NodeJS는 왜 이벤트 기반(Event-driven)이라 부를까?

디송 2023. 1. 27. 17:24

이벤트 기반이란 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식이다.

이벤트 리스너를 통해 이벤트를 등록 할 수 있다.

 

npm 'events' 모듈을 통해서 NodeJS을 위한 서버 작업에서도 이벤트 리스너를 등록 할 수 있다.

 

이벤트는 콜백함수와 한 세트를 이룬다.

이벤트는 독립적으로 실행되는 비동기 행위다.

 

즉 이 독립적인 이벤트의 순서를 제어하기 위하여 '이벤트 루프'가 탄생했다.

JavaScript 는 싱글 스레드 언어이지만 이러한 이벤트 루프를 통해 효율적으로 Non-blocking을 실행 할 수 있게 되었다.

 

 

NodeJS는 이벤트 기반의 특성을 가지고 있다.

이벤트 리스너를 생성하고 실행 시킬 수 있기 때문이다.

이벤트 리스너는 이름과 콜백함수로 이루어져 있다.

이와같이 이벤트는 독립적인 실행을 함으로 제어가 필요했다.

이 이벤트를 효율적인 순서로 동작하게 하는 것이 이벤트 루프이다.

 

 

 

+

JavaScript라는 언어를 사용하기 때문에 이벤트 기반의 특성도 NodeJS에 넣어졌지만 실제로 어떻게 사용되는지는 아직 감이 안온다.

(비동기 전역함수와의 차이를 모르겠음.. ==> 이벤트를 만들어서 호출하는것과 전역함수를 호출 하는 것에 대한 차이를 말하는 것)

사용자 경험 역할을하는 웹 브라우저의 이벤트의 존재는 너무나도 필수적이고 이해가 되지만,

NodeJS에서 이벤트들은 단지 웹 브라우저라는 자바스크립트의 런타임에서 '그냥 가져온 기능' 정도로 밖에 안느껴진다.

 

NodeJS에서 이벤트 기반이 어떤식으로 사용되는지 알아봐야 한다.