서버로서의 노드
서버
•
네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램
클라이언트
•
서버에 요청을 보내는 주체 (브라우저, 데스크탑 프로그램, 모바일 앱, 다른 서버에 요청을 보내는 서버)
ex) 브라우저(클라이언트, 요청)가 웹사이트(서버, 응답)에 접속
ex) 핸드폰(클라이언트)을 통해 앱스토어(서버)에 앱 다운로드
노드 ≠ 서버
노드 서버의 장단점
장점
•
멀티 스레드 방식에 비해 컴퓨터 자원을 적게 사용함
•
I/O 작업이 많은 서버로 적합
•
멀티 스레드 방식보다 쉽다
•
웹 서버가 내장되어 있다
•
자바스크립트를 사용한다
•
JSON 형식과 호환하기 쉽다
단점
•
싱글 스레드라서 CPU 코어를 하나만 사용해야한다
•
CPU 작업이 많은 서버로는 부적합하다
•
하나뿐인 스레드가 멈추지 않도록 관리해야한다
•
서버 규모가 커졌을 때, 서버를 관리하기 어렵다
•
어중간한 성능이다
→ CPU 작업을 위해 AWS Lambda나 GCP 같은 별도 서비스를 사용
→ 페이팔, 넷플릭스, 나사, 월마트, 링크드인, 우버 등에서 메인 또는 서브 서버로 사용
→ 자바스크립트 런타임이기 때문에 용도가 서버에만 한정되지 않음
→ 다양한 용도 사용 가능
•
웹프레임워크 : Angular, React, Vue, Meteor etc.
•
모바일 앱프레임워크 : React Native
•
데스크탑 개발도구 : Electorn(Atom, Slack, VSCode, Discore 등 제작)