1. 논 블로킹 I/O
기본적으로 작성한 Javascript Code는 동시에 실행될 수 없다. 하지만 Javascript 상에서 돌아가는 것이 아닌 I/O 작업 같은 것은 동시에 처리될 수 있다. I/O는 입력(Input) / 출력(Output)을 의미하며, 파일 시스템 접근(파일 읽기, 파일 쓰기 등)이나 네트워크를 통한 요청 같은 작업이 I/O의 일종이다. 이러한 작업을 할 때 Node는 논 블로킹 방식으로 처리하는 방법을 제공한다.
논 블로킹 :
이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행한다.
블로킹 :
이전 작업이 끝나야만 다음 작업을 수행한다.
* 그림을 보면 블로킹 방식보다 논 블로킹 방식이 같은 작업을 더 짧은 시간에 처리할 수 있음을 알 수 있다. 다만 작업들이 모두 동시에 처리될 수 있는 작업이라는 전제가 있어야 한다.
* Node는 I/O 작업을 백그라운드로 넘겨서 동시에 처리하곤 한다. 따라서 동시에 처리될 수 있는 작업들은 최대한 묶어서 백그라운드로 넘겨야 시간을 절약할 수 있다.
* 1개의 작업당 1초를 소요한다는 가정하에 그림을 보면 순서의 중요성을 알 수 있다.
* 동시에 처리될 수 있는 I/O 작업이라도 논 블로킹 방식으로 코딩하지 않으면 의미가 퇴색되므로 논 블로킹 방식으로 코딩하는 습관을 들여야한다.