Node.js는 Single-Threaded 기반 JS 런타임:
Node.js는 자바스크립트 런타임 환경으로, 서버 측 애플리케이션을 개발하기 위해 사용됩니다.
Node.js의 중요한 특징 중 하나는 싱글 스레드(single-threaded)로 동작한다는 것입니다. 이는 Node.js 애플리케이션이 단일 스레드에서 이벤트 루프(event loop)를 통해 작업을 처리한다는 의미입니다.
싱글 스레드로 동작하면서도 Node.js는 비동기 및 non-blocking I/O 작업을 지원하여 동시성을 활용할 수 있습니다.
Node.js는 Non-blocking, Asynchronous 기반 JS 런타임
Node.js는 비동기식 (asynchronous) 및 논블로킹 (non-blocking) I/O 모델을 사용하여 동시성과 높은 성능을 제공합니다.
비동기식은 작업을 순차적으로 기다리지 않고, 작업이 완료될 때까지 다른 작업을 수행할 수 있게 합니다.
논블로킹은 I/O 작업이 다른 작업을 차단하지 않고 계속 진행될 수 있도록 합니다.
Node.js의 이벤트 루프 (Event Loop)
Node.js의 핵심은 이벤트 루프입니다. 이벤트 루프는 비동기식 작업을 관리하고 실행하는 역할을 합니다.
이벤트 루프는 여러 이벤트와 콜백 함수들을 큐(Queue)에 넣고, 이벤트 루프가 반복적으로 큐를 확인하여 작업을 실행합니다.
예를 들어, 파일 읽기 작업을 비동기적으로 실행할 때, 파일 읽기가 완료되면 이벤트 루프는 콜백 함수를 큐에 넣고 이벤트 루프의 다음 반복에서 실행합니다.
이렇게 하면 I/O 작업이 블로킹되지 않고 다른 작업을 동시에 처리할 수 있어 애플리케이션의 응답성이 향상됩니다.
Node.js의 이벤트 루프와 비동기/논블로킹 모델은 네트워크 요청, 파일 시스템 액세스, 데이터베이스 쿼리와 같은 I/O 중심의 작업을 효율적으로 다룰 수 있게 해주며, 스케일링 및 성능 향상을 가능하게 합니다. 이러한 특징으로 Node.js는 서버 측 웹 애플리케이션 및 마이크로서비스 개발에 널리 사용되고 있습니다.
'면접' 카테고리의 다른 글
자바스크립트 기초 면접 질문 (1) | 2023.09.06 |
---|---|
자료구조, 알고리즘 면접 질문 (0) | 2023.09.06 |
네트워크 면접 질문 (0) | 2023.09.06 |
데이터 베이스 질문 (0) | 2023.09.06 |
면접 후기 (2) | 2023.09.05 |