Node.js는 자바스크립트 실행기
이전 게시글에서도 말했다 싶이 Node.js는 크롬 브라우저에 V8 즉, JavaScript 런타임이다.
그런데 이 엔진을 왜 이토록 Server 프로그래밍에 사용되는 이유가 무엇일까?
장점
- 자바스크립트를 동일하게 사용해서 서버단 로직을 처리할 수 있다는게 가장 큰 장점!
새로운 언어를 습득하지 않고도 자바스크립트를 활용해 서버기술을 빨리 개발/응용할 수 있습니다. - 개발이 빠르고 쉽다. 서버 설치부터 화면 띄우는 것까지 금방 처리 됩니다.
- Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능
- 로컬에서 서버만 켜봐도 얼마나 가볍게 돌아가는지 알 수 있다.
- 이벤트 기반 비동기방식이라 서버 무리가 적다.
Non-blocking I/O 이 무엇인가?
만약 4개의 요청있다고 가정하자.
요청1) 영화 1장 예매좀요
요청2) 영화 1장 예매좀요
요청3) 영화 200장 예매좀요
요청4) 영화 1장 예매좀요
이렇게 4개의 요청이 차례로 들어왔을 경우, 일단 접수부터 다 받고 빨리 완료된 것부터 처리해준다.
누가 먼저 왔는지 상관없고. 그냥 빨리 결과가 나오는 순으로 예매해주는 것이다.
처리 순서는 요청1 – 요청2 – 요청4 – 요청3 이런게 될것이다.
그래서 아까 요청4 했던 사람도 빠르게 영화표를 받아볼 수 있다.
Non-blocking I/O는 그냥 완료가 빨리될 수 있는 것부터 처리하게 설계된 런타임이다.
반면, 일반 프로그래밍언어에서 blockgin I/O가 지원한다면 요청이 들어온 순서대로 일을 처리한다.
만약 첫 요청이 엄청난 처리를 요구하는 요청이고 그 이후에 들어오는 요청들은 엄청 작은 처리를 요구하는 요청이라면 첫 요청이 처리될 동안 다른 작은 요청들 또한 그만큼에 지연 시간이 생긴다.
Node.JS가 강점을 보이는 분야
SNS, 채팅서비스 웹서버이다. SNS같은 플랫폼 만들 때 가장 중요한게 ‘한번에 많은 요청을 감당할 수 있냐’ 이다.
일반 서버의 경우 1초에 10만개의 요청이 들어오면.. 바로 처리해주기 위해선
- 똑같은 서버를 몇만대 복사해서 만들어 두거나 (Scaling)
- CPU 멀티쓰레딩을 이용하거나
- Node 처럼 Non-blocking 스타일로 코드를 짜거나 한다.
Node.JS가 약점을 보이는 분야
수학적 연산이 필요하거나 이미지를 가공하거나 분석하는 다소 처리할게 많은 일들은 잘 하지 못한다.
예를들어 수학적 연산이 많이 들어가는 머신러닝이나 게임 분야에서는 약점을 보인다.
'WEB > Node.JS' 카테고리의 다른 글
[express] mongodb 데이터 삽입(insert, save) (0) | 2021.04.28 |
---|---|
[express] mongodb 데이터 검색(find, findOne) (0) | 2021.04.28 |
[Node.js] express란 (0) | 2021.04.27 |
[Node.JS] express를 사용해보자 (0) | 2021.04.05 |
[Node.JS] Node.js의 정체 (0) | 2021.04.05 |