본문 바로가기

WINK-(Web & App)/Express.js (Node.js) 스터디

[2023 백엔드 스터디] 성정규 #1주차 - 1장.노드 시작하기

반응형

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. 프로세스
  • 운영체제에서 할당하는 작업의 단위
  • 노드나 웹 브라우저 같은 프로그램은 개별적인 프로세스
  • 프로세스 간에는 메모리 등의 자원을 공유하지 않음
  1. 스레드
  • 프로세스 내에서 실행되는 흐름의 단위
  • 프로세스는 스레드를 여러개 생성해서 여러 작업을 동시에 처리할 수 있음
  • 스레드들은 부모 프로세스의 자원을 공유
  • 같은 주소의 메모리에 접근 가능하므로 데이터를 공유할 수 있음

노드는 싱글 스레드, 논블로킹 모델임.

1.2 서버로서의 노드

노드 서버의 장단점은 싱글 스레드, 논블로킹 모델의 장단점과 크게 다르지 않습니다.

노드 사용자들이 말하는 가장 큰 장점은 언어로 자바스크립트를 사용한다는 것이다. 이것이 생산성이 중요한 기업이 노드를 채택하는 이유이다. 하지만 로드 밸런싱에 특화된 웹 서버에 비해서는 속도가 느리다.

노드의 장점

  • 멀티 스레드 방식에 비해 적은 컴퓨터 자원 사용
  • I/O 작업이 많은 서버로 적합
  • 멀티 스레드 방식보다 쉬움
  • 웹 서버가 내장되어 있음
  • 자바스크립트를 사용함
  • JSON 형식과 쉽게 호환됨

노드의 단점

  • 기본적으로 싱글 스레드라서 CPU 코어를 하나만 사용
  • CPU 작업이 많은 서버로는 부적합
  • 하나뿐인 스레드가 멈추지 않도록 관리가 필요함
  • 서버 규모가 커졌을 때 서버를 관리하기 어려움
  • 어중간한 성능

1.3 서버 외의 노드 ~ 1.4 개발환경 설정하기

pass

반응형