반응형
1장, 노드 시작하기
1.1 핵심 개념 이해하기
1.1.1 서버
노드는 서버 어플리케이션을 실행하는 데 제일 많이 사용한다.
서버는 무엇인가?
- 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램
- 클라이언트의 요청에 대해 Yes or No 로 응답
노드는 자바스크립트 프로그램이 서버로서 기능하기 위한 도구를 제공하므로 서버 역할을 수행할 수 있다.
1.1.2 자바스크립트 런타임
Node.jsⓇ는 Chrome V8 Javascript 엔진으로 빌드된 자바스크립트 런타임이다.
1.1.3 이벤트 기반
이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식
“이벤트 리스너(event listener)에 콜백(callback) 함수를 등록한다”는 말은,
이벤트 기반 시스템에서는 특정 이벤트가 발생할 때 무엇을 할 지 미리 등록해두는 것.
- 이벤트 루프 : 이벤트 발생 시 호출할 콜백 함수들을 관리하고, 호출된 콜백 함수의 실행 순서를 결정하는 역할을 담당
- 백그라운드 : setTimeout 같은 타이머나 이벤트 리스너들이 대기하는 곳
- 태스크 큐 : 이벤트 발생 후, 백그라운드에서는 태스크 큐로 타이머나 이벤트 리스너의 콜백 함수를 보낸다. 정해진 순서대로 콜백들이 줄을 서 있으므로 콜백 큐라고도 부른다.
1.1.4 논블로킹 I/O
- 논블로킹이란?
- 이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행하는 것
- 작업들이 모두 동시에 처리될 수 있는 작업이며, 같은 작업을 더 짧은 시간에 처리함.
- 블로킹이란?
- 이전 작업이 끝나야만 다음작업을 수행하는 것
- setTimeout(콜백, 0)은 코드를 논블로킹으로 만들기 위해 사용하는 기법 중 하나
노드에서는 동기와 블로킹이 유사하고 비동기와 논블로킹이 유사하다.
1.1.5 싱글 스레드
스레드가 하나뿐이라는 의미. 자바스크립트 코드가 동시에 실행될 수 없는 이유이기도 함.
- 프로세스와 스레드의 차이
- 프로세스
- 운영체제에서 할당하는 작업의 단위
- 노드나 웹 브라우저 같은 프로그램은 개별적인 프로세스
- 프로세스 간에는 메모리 등의 자원을 공유하지 않음
- 스레드
- 프로세스 내에서 실행되는 흐름의 단위
- 프로세스는 스레드를 여러개 생성해서 여러 작업을 동시에 처리할 수 있음
- 스레드들은 부모 프로세스의 자원을 공유
- 같은 주소의 메모리에 접근 가능하므로 데이터를 공유할 수 있음
노드는 싱글 스레드, 논블로킹 모델임.
1.2 서버로서의 노드
노드 서버의 장단점은 싱글 스레드, 논블로킹 모델의 장단점과 크게 다르지 않습니다.
노드 사용자들이 말하는 가장 큰 장점은 언어로 자바스크립트를 사용한다는 것이다. 이것이 생산성이 중요한 기업이 노드를 채택하는 이유이다. 하지만 로드 밸런싱에 특화된 웹 서버에 비해서는 속도가 느리다.
노드의 장점
- 멀티 스레드 방식에 비해 적은 컴퓨터 자원 사용
- I/O 작업이 많은 서버로 적합
- 멀티 스레드 방식보다 쉬움
- 웹 서버가 내장되어 있음
- 자바스크립트를 사용함
- JSON 형식과 쉽게 호환됨
노드의 단점
- 기본적으로 싱글 스레드라서 CPU 코어를 하나만 사용
- CPU 작업이 많은 서버로는 부적합
- 하나뿐인 스레드가 멈추지 않도록 관리가 필요함
- 서버 규모가 커졌을 때 서버를 관리하기 어려움
- 어중간한 성능
1.3 서버 외의 노드 ~ 1.4 개발환경 설정하기
pass
반응형
'WINK-(Web & App) > Express.js (Node.js) 스터디' 카테고리의 다른 글
[2023 백엔드 스터디] 성정규 #1주차 - 3장, 노드 기능 알아보기 (1) | 2023.05.04 |
---|---|
[2023 백엔드 스터디] 성정규 #1주차 - 2장, 알아두어야 할 자바스크립트 (1) | 2023.05.04 |
[2023 백엔드 스터디] 이지원 #2주차 - 6.1~6.2장 Express 웹 서버 만들기 (0) | 2023.05.02 |
[2023 백엔드 스터디] 목진협 #2주차 - 6.3~6.5장 Express 웹 서버 만들기 part2 (0) | 2023.05.01 |
[2023 백엔드 스터디] 김민선 #1주차 - 5장.패키지 매니저 (0) | 2023.04.24 |