티스토리 뷰
서버 : 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램
클라이언트 : 요청을 보내는 주체
- 브라우저, 데스크톱 프로그램, 모바일 앱, 다른 서버 요청을 보내는 서버 등등
" 비동기 이벤트 주도 JavaScript 런타임으로써
Node는 확장성 있는 네트워크 애플리케이션을 만들 수 있도록 설계되었습니다. "
런타임이란, 특정 언어로 만든 프로그램들을 실행할 수 있는 환경
Node.js란, 자바스크립트 프로그램을 컴퓨터에서 실행할 수 있게 해주는 것
- libuv 라이브러리 : 이벤트 기반, 논블로킹 I/O 모델을 구현
- V8과 libuv는 C와 C++로 구현되어 있고, 우리가 코딩한 자바스크립트 코드는 노드가 알아서 연결해주므로 몰라도 됨
서버로서의 노드의 장단점
장점
- 멀티 스레드 방식에 비해 컴퓨터 자원을 적게 사용
- I/O 작업이 많은 서버로 적합
- 멀티 스레드 방식보다 쉬움
- 웹 서버가 내장되어 있음
- 자바스크립트를 사용
- JSON 형식과 호환하기 쉬움
단점
- 싱글 스레드라서 CPU 코어를 하나만 사용
- CPU 작업이 많은 서버로는 부적합
- 하나뿐인 스레드가 에러로 인해 멈추지 않도록 관리해야 함 -> 서버 전체가 멈추기 때문
- 서버 규모가 커졌을 때 서버를 관리하기 어려움 -> 웹 서버를 노드 서버와 연결해야함
- 어중간한 성능
'LANGUAGE > NODE.JS' 카테고리의 다른 글
[NODE.JS] KOA (0) | 2019.08.20 |
---|---|
[NODE.JS] MODULE - 모듈 (0) | 2019.07.21 |
[NODE.JS] RERL (0) | 2019.07.21 |
[NODE.JS] SINGLE THREAD (0) | 2019.07.19 |
[NODE.JS] EVENT LOOP - 이벤트 루프 (0) | 2019.07.19 |
댓글