Search
Duplicate

노드의 특징

생성일
2022/12/22 08:15
태그
nodejs

노드의 특징

이벤트 기반

이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식
이벤트의 예 : 클릭, 네트워크 요청, 타이머 등
이벤트 리스너 : 이벤트를 등록하는 함수
콜백 함수 : 이벤트가 발생했을 때 실행될 함수
1.
이벤트 리스너에 콜백 함수 등록
2.
이벤트 발생
3.
등록된 콜백 함수 호출

논블로킹 I/O

노드는
블로킹이면서 동기
비동기면서 논블로킹

논 블로킹 : 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고, 나중에 오래 걸리는 함수를 실행

논 블로킹 방식 하에서 일부 코드는 백그라운드에서 병렬로 실행 됨
일부 코드 : I/O 작업(파일 시스템 접근, 네트워크 요청), 압축, 암호화 등
나머지 코드는 블로킹 방식으로 실행됨
I/O 작업이 많을 때, 노드 활용성이 극대화

프로세스 vs 스레드

프로세스

OS에서 할당하는 작업의 단위, 프로세스 간 자원 공유X

스레드

프로세스 내에서 실행되는 작업의 단위, 부모 프로세스 자원 공유
→ 노드 프로세스는 멀티 스레드이지만, 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글 스레드라고 표현
→ 노드는 주로 멀티 스레드 대신 멀티 프로세스 활용
→ 노드는 14버전부터 멀티 스레드 사용 가능

싱글 스레드

싱글 스레드라 주어진 일을 하나밖에 처리하지 못함
블로킹이 발생하는 경우, 나머지 작업은 모두 대기해야 함 → 비효율 발생
ex) 주방에 비유 (점원 : 스레드, 주문 : 요청, 서빙 : 응답)
→ 대신 논 블로킹 모델을 채택하여, 일부 코드(I/O)를 백그라운드(다른 프로세스)에서 실행 가능
요청을 먼저 받고, 완료될 때 응답함
I/O 관련 코드가 아닌 경우, 싱글 스레드, 블로킹 모델과 같아짐
→ 노드의 핵심은 싱글 스레드 하나를 어떻게 효율적으로 잘 관리하는가