본문 바로가기

Others/NODE.JS

동기와 비동기

  • 동기 ; Synchronous ; 싱크
  • 비동기 ; Asynchronous ; 어싱크


동기&비동기 비유로 접근하기 ( nodejs에서와 의미가 정확하게 일치하지는 않으나 느낌만 전달 받자 )


1) 실생활 일처리


동기 :  여러가지일이 있는데, 하나의 일을 완전히 마친 후에 또 다른 일을 하고, 하나씩 순서대로 진행하는 것

비동기 : 여러가지 일을 각 전문가에게 동시에 맡긴다. 맡기는 것은 짧은 시간이면 됨. 뭐가 먼저 될지 알 수 없다는 단점, 순서가 중요하지 않다면 이렇게 처리하면 된다.



2) 기술적 측면


예) 이메일 발송 시스템


동기 : 발송 버튼을 누른 후, 100명의 수신자에게 한명씩 메일을 보낸다. 한명당 1초가 걸린다고 하면 수행완료까지 100초...

비동기 : 발송 버튼을 누른 후, 사용자에게 메세지가 완료되었다는 메세지를 띄우고, 백단에서 메일을 보내는 작업을 진행.



 코드로 살펴보는 동기와 비동기 파일시스템 모듈을 사용하여 살펴보자 )


파일시스템 모듈의 함수를 살펴보면 ~Sync의 유무에 따라 비동기방식과 동기 방식을 구분할 수 있다. (없는게 비동기겠죠?)


Nodejs는 비동기적으로 어떤일을 처리하는 것이 Nodejs가 추구하는 철학이고 가장 중요한 특성.

기본적으로는 대부분의 시간이 필요한 작업(I/O가 필요한 작업)들은 Nodejs에서는 비동기적으로 처리하고 특별히 원할 때는 동기적으로 처리할 수 있도록 ~Sync라고 구분 되어 있지만 문서를 살펴보면 되도록이면 사용하지 말라고 되어 있는 것을 확인할 수 있다.








* readFileSync를 할 때 일이 굉장히 오래 걸릴 때 Nodejs는 싱글스레드로 동작한다. 이런 경우가 생긴다면, 만든 웹애플리케이션에서 파일을 읽는 작업이 있는데 파일을 읽는데 10분이 걸린다면 그 10분동안 아무도 웹페이지에 접근할 수 없다고 볼 수 있다.

'Others > NODE.JS' 카테고리의 다른 글

Express] 정적파일을 서비스하는 법  (0) 2017.09.11
Express 설치 및 기본코드분석  (0) 2017.09.11
모듈과 NPM  (0) 2017.09.07
웹 애플리케이션 만들기  (0) 2017.09.07
서버 측 자바스크립트 - nodejs 소개  (0) 2017.09.03