-
node.js express와 일반 서버의 차이카테고리 없음 2023. 2. 27. 17:02
보통 일반적인 server에서는 1부터 9까지 요청이 있으면
1부터 9까지 순서대로 실행을 합니다.
여기서 발생할 수 있는 문제는 예를 들어, 4번 요청이 무거워서 실행이 오래 걸린다 치면 (500시간 짜리 영상 업로드라던지)
5~9번 요청은 4번 요청의 실행이 완료될 때까지 기다려야 합니다.
웹개발에서 이는 치명적이라 할 수 있습니다. 사용자 1 ~ 9 가 영상을 업로드하는데, 4번이 갑자기 500시간짜리 영상을 업로드 해버리면 5 ~ 9번 사용자의 요청은 4번 사용자의 요청이 완료될 때까지 기다려야합니다.
하지만 node.js 서버에서는 일단 1번부터 9번까지 다 받고
오래걸리는 4번은 나중에 실행됩니다. 덕분에 4번은 괘씸죄로 기다리지만 그 동안 4번을 제외한 나머지 요청은 빠르게 수행됩니다.
음식점으로 예를 들면
일반 서버의 경우 먼저 온 손님부터 주문(요청)을 처리합니다.
단체손님이 중간에 껴 있으면 뒤에 손님들은 단체손님 주문이 다 처리될 때까지 기다려야 합니다.
node.js서버는 일단 주문은 다 받고, 오래 걸리는 걸 나중에 내보낸 겁니다.
(참고로 영어로 종업원도 server입니다. 서버는 그냥 뭔가 주문(request)을 받으면 주문을 받고(GET) 주방에 주문을 알려준뒤(GET request method) 뭔갈 만들어서 손님에게 줍니다(respond))
즉, nodejs의 서버는 일단 빠른건 다 실행하고 느린건 나중에 실행합니다.
위에서 설명한 일반서버처럼
순차적으로 처리하는 방식: 동기(Synchronous) 처리방식
비순차적으로 처리하는, 동시에 처리하는 방식: 비동기(Asynchronous) 처리 방식
이라고 합니다
node.js가 요청이 굉장히 많은 (예: 채팅, 유튜브 등) 서버를 구현할 때 아주 유용한 이유가 여기에 있습니다. 다만 웹 개발 이외에는 (제가 아는 바로는) 비추하는 듯 합니다 (이미지 처리 등)