노드는 기본적으로 싱글스레드 논블록킹으로 돌아가게됩니다.
그렇기 때문에 싱글스레드 논블록킹으로 실행되는 노드 서버 또한 이런 장점을 가지고있습니다.
(하지만 이벤트 루프가 노드의 핵심이라고 할수있는데, 이벤트 루프는 제가 설명할정도로 잘 알지 못하기 때문에 여기를 눌러서 봐주셨으면 감사하겠습니다 죄송합니다)
1. 멀티스레드보다 컴퓨터 자원을 더 적게 사용합니다
2. 입력/출력 작업이 많은 서버에서 사용하기 좋습니다
3. 싱글스레드이기 때문에 멀티스레드 프로그래밍보다 난이도가 쉽습니다
4. 거의 모든 프레임워크가 자스인 프론트(리액트,뷰,앵귤러)와 언어가 같습니다
5. 이름부터 Js가 들어가는 JavaScript Object Notation, Json을 다루기가 쉽습니다
하지만 마찬가지로 싱글스레드이기 때문에 존재하는 단점들이 있습니다.
1. 싱글스레드라서 CPU코어를 하나밖에 못씁니다
2. 무거운 CPU연산과는 맞지않습니다
3. 스레드가 하나뿐이기 때문에 절대로 멈추면 안됩니다.
이런 특징을 가지기 때문에 노드는 빠르게 개발하는 스타트업 프로젝트, 가벼운 JSON 데이터를 제공하는 API서버등에서 주로 쓰입니다
이렇게 보면 노드는 대기업에선 절대 못쓰일거같지만, 대형 스트리밍 서비스를 제공하는 넷플릭스에서도 노드를 사용합니다.
이 부분은 넷플릭스에서 직접 강연했던 유튜브 영상이 있기 때문에 노드에 의심이 드신다면 한번 보시면 좋을거같습니다.
그리고 물론 노드는 서버 말고도 다양한곳에서 사용할수있습니다.
1. 웹 프론트엔드 - 리액트, 뷰, 앵귤러
2. 모바일 - 리액트 네이티브(인스타그램, 페이스북), 아이오닉 프레임워크
3. 데스크톱 응용 프로그램 - 일렉트론(아톰, 슬랙, 디스코드, VScode)
이렇게 많은곳에서 노드js를 사용하고 있습니다