보통 코드는 위에서 부터 코드가 쭉 읽히는 동기 방식으로 진행된다.

 

이것은 항상 순서에 따라서 한번에 한가지 일만 처리되는 것을 의미한다.

 

동시에 코드가 처리된다면 속도가 올라 갈 것이다. 우리는 보통 이것을 '병렬처리'라고 부른다.

 

Node.js에서 사용할 수 있는 병렬처리는 어떤 것들이 있을까?

 

제목에 말한 것처럼 비동기 처리, 멀티 스레드, 멀티 프로세스가 있다. 이에 대해서 어떤식으로 사용해야 하는지 기록하고자 한다.

 

 

비동기 처리

사실 비동기 처리는 '병렬처리'라고는 할 수 없다.

 

CS적으로 본다면 '병렬처리'라는 단어는 코드가 동시에 읽히면서 실행이 된다는 의미이다.

 

하지만 비동기도 분명히 인간의 사고에서 보았을 때 '병렬성'이라는게 존재하기 때문에 병렬처리라고 표현하였다.

(하지만.. 면접에서는 비동기 처리가 병렬처리라고 하지 않길 바란다.)

 

비동기 처리는 작업이 완료될 때까지 기다리지 않고 다음 작업을 바로 수행할 수 있도록 하는 방식

 

위의 정의를 보면 어디서 '병렬성'이 적용 될 수 있는지 알기 힘들 수도 있다.

 

처음에는 비동기로 작성된 코드를 보았을 때는 '코드가 멈추지 않고 따로 실행되는 구나' 정도로 알고 있을 수 밖에 없었다.

 

하지만 비동기 처리도 결국 코드 실행이 한줄 씩 실행된다고 하는데, 도대체 어디서 '병렬성'이 적용 될 수 있을까? 

 

'작업이 완료될 때까지 기다리지 않는다' 이 부분이 핵심이다.

 

사실 이 부분에 대해서 조금 더 설명을 붙혀야 이해하기가 쉽다.

 

외부 응답에 대한 작업이 완료될 때까지 기다리지 않는다

 

 

외부로 부터의 응답이 필요한 경우가 어떤 것들이 있을까?

(1) DB 요청

(2) 외부 API 요청(네트워크 요청)

(3) 파일 읽기

 

우리가 대표적으로 사용하는 것들은 위의 세 가지로 들 수 있다

 

따라서 비동기 처리는 외부로 요청을 보냈을 때, 외부로부터 응답이 오는 시간을 기다리지 않고 응답이 올 때까지 다른 코드 실행을 하는 것으로 볼 수 있다.

 

물론 외부 요청이 아닌 코드가 비동기 처리가 안 되는 것은 아니다. 위에 언급한 것처럼, 비동기 처리도 결국엔 한 번에 한 줄의 코드만 실행되기 때문에, 외부 요청이 아닌 단순 연산과 같은 내부적인(CPU 집약적인)코드 실행에 비동기를 적용하는 것은 행 속도에 큰 영향을 미치지 못할 수도 있다.

 

결국 비동기 처리는 '외부 요청으로 부터 응답시간을 최소화' 할 수 있다는 속도적 장점을 가지고 있다. 

 

 

멀티 스레드

WIP

 

멀티 프로세스

WIP

'Knowledge > Node' 카테고리의 다른 글

화살표 함수란?  (0) 2025.03.13
[Node] 배열 초기화  (0) 2022.08.03
[Node/Express] 미들웨어의 종류  (0) 2022.03.29
[Node/Express] set/get, use 정리  (0) 2022.03.29
[Node] export & import / module.exports , exports & require( )  (0) 2021.12.28