1. 개요

Node.js 에서의 동기화 방식에 대해서 알아볼 것이다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9fdf412f-58f7-4a1e-b775-5373c327daf7/Untitled.png

빨래와 설거지와 청소를 순서대로 해야한다고 가정해보고 '동기적'으로 일처리를 하는 것과 '비동기'적으로 일처리를 하는 것을 알아보자.

여기에서 '동기적'으로 일을 처리하는 것은, 빨래를 하고, 다하면 설거지를 하고, 설거지를 다하면 청소를 하는 것이 동기적인 일처리 과정이다.

만약 여기에서, '비동기적'으로 일을 처리하는 것은, 빨래를 담당하는 업체에 빨래를 해달라고 말해놓고, 설거지를 담당하는 업체에 설거지를 해달라고 말해놓고, 청소를 담당하는 업체에 청소를 해달라고 말해놓는 것을 말한다.

→ 이런 식으로, 했다면 어떤 것이 먼저 끝날지 알 수가 없다. 순서가 중요하지 않다면, **'비동기적'**으로 일을 처리하는 것이 좋다.

기술적인 측면에서 설명해보자.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6afa9696-1e99-4888-a0de-aa236a9dbb91/Untitled.png

만약, 해당 기능을 통해서 적은 글자들을 '발행'버튼을 누르면 해당 이메일로 메일을 보내주는 시스템을 구현했다고 생각해보자.

10000명의 고객들에게 메일을 하나씩 보내야한다.

만약, '동기적인' 일처리를 한다면, 한 명당 하나씩 보내야할 것이다. 한 명당 이메일을 보내는 시간이 1분이 걸린다면, 10000분의 시간을 소요하게 되는 것이다.

하지만, '비동기적'인 일처리를 하게 된다면, 이메일을 보내는 보내는 시스템에게 이메일을 보내라고 시키는 것이다. 그렇게 한다면, 10000분 보다는 더 빠르게 컴퓨터가 처리해줄 수 있을 것이다.