Q. Node.js 의 장점 및 단점은 무엇인가요?

봉으니 2019. 02. 21. 조회수 124


기업들이 웹 서버를 Node.js 로 구축한다는 기사를 많이 접하였습니다.

전 세계적으로 Node.js 를 이용해 서버를 구축하는 이유 중 장점은 무엇이라 생각하시나요?

또한 Node.js 의 한계점이나 어떤 비지니스 모델에 적용하면 가장 큰 효율을 낼 수 있다고

생각하시는지 궁금합니다.

조현영 님이 답변을 등록했습니다.

조현영
Node.js 교과서 저자 3/3/2019

안녕하세요.

장점부터 말씀드리자면 노드는 언어가 자바스크립트라는 점이 제일 장점입니다. 자바스크립트는 가장 널리 쓰이는 언어로 웹 플랫폼을 독점하고 있기 때문에 가장 파급력과 중요도가 큽니다. 개발자 풀도 자바, C 계열과 더불어 가장 넓고요. 한 언어로 빠르게 다른 플랫폼으로 서비스를 확장해나갈 수 있다는 점에서 노드가 좋습니다.

노드 자체의 장점을 말씀드리자면 네트워크 요청이 많은 서비스에 좋습니다. 노드 이전의 웹 서버는 아무것도 안 하는데 시간을 많이 허비했습니다. 네트워크 요청을 기다리느라, 아무것도 못하는 시간이 존재했던 거죠. 이걸 눈치챈 라이언 달(노드 창시자)는 논 블로킹+싱글 쓰레드의 노드를 개발해서 네트워크 요청을 기다리는 시간에 다른 일을 할 수 있도록 합니다.

한계점은 CPU 연산이 많은 서비스입니다. 노드는 동시에 들어오는 네트워크 요청들은 잘 처리하지만 하나의 요청이 막대하게 CPU에 부담을 주는 경우에는 동시에 작업을 처리할 수 없습니다. 그래서 3D 작업이나 동영상 편집 서비스같이 CPU를 많이 사용해야 하는 서비스에서는 성능에 문제가 생길 수 있습니다. 이럴 때 굳이 노드로 해야한다면 lambda나 cloud functions로 요청마다 별도의 노드 서버를 띄워서 분리하는 게 좋습니다.

장단점에 관한 좋은 답변이 있어 링크로 남깁니다.

https://stackoverflow.com/questions/34855352/how-in-general-does-node-js-handle-10-000-concurrent-requests