Node.js - 노드 시작하기

MIRA KIM·2022년 11월 30일
0

Node.js

목록 보기
1/1

노드 시작하기

노드의 정의

  • 공홈 설명 : JS엔진으로 빌드된 자바스크립트 런타임(실행기)
  • 노드는 서버인가?
    • 브라우저와 html에 종속된 js를 해방
    • 노드는 서버의 역할도 수행할 수 있는 자바스크립트 런타임
    • 노드로 자바스크립트로 작성된 서버를 실행 할 수 있음
    • 서버 실행을위한 hppt/https/http2 모듈을 제공
  • 노드 : 자바스크립트 런타임
    • 런타임 : 특정언어로 만든 프로그램을 실행할 수 있게 해주는 가상머신
    • 노드 > 자바스크립트로 만든 프로그램들을 실행할 수있게 해줌
    • 다른 런타임 : 웹브라우져(크롬, 엣지 등)
  • JS내부구조
    • V8 엔진
    • libuv : 노드의 특성인 이벤트 기반, 논블로킹 I/O 모델을 구현한 라이브러리 : 싱글스레드 비동기

노드의 특성

이벤트기반

  • 이벤트가 발생할떄 지정해둔 작업을 수행하는 방식

  • 이벤트 리스너 : 이벤트를 등록하는 함수

  • 콜백 함수 : 이벤트가 발생했을때 실행될 함수

  • 이벤트 기반(이벤트 발생과정)

      1. 이벤트 리스너에 콜백 함수 등록
      1. 이벤트 발생
      1. 등록된 콜백 함수 호출

논블로킹 I/O

  • 노드 : 블로킹-동기 / 논블로킹-비동기(동기 - 순서대로 / 비동기 - 순서대로 X)
  • 논블로킹 : 오래걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고 나중에 오래걸리는 함수를 실행

프로세스 VS 스레드

  • 프로세스와 스레드
    • 프로세스 : 운영체제에서 할당하는 작업의 단위
    • 스레드 : 프로세스 내에서 실행되는 작업의 단위. 부모 프로세스 자원 공유.
  • 노드 프로세스는 멀티스레드이나 싱글스레드만 다룰 수 있었음 > 14부터 멀티스레드 컨트롤 가능 BUT, 실효성은 의문

노드의 역할

서버로서의 노드

  • 서버 : 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램

  • 클라이언트 : 서버에 요청을 보내는 주체(브라우저, 데스크탑 프로그램, 앱 등)

  • 노드 서버의 장단점

장점단점
멀티스레드 방식에 비해 컴퓨터 자원을 적게 사용함싱글스레드라서 CPU코어를 하나만 사용
I/O 작업이 많은 서버로 적합CPU 작업이 많은 서버로는 부적합
멀티스레드 방식보다 쉬움스레드가 하나뿐이라 멈추지 않게 관리해야함
웹서버 내장서버규모가 커지면 관리 어렵
자바스크립트 사용어중간한 성능
JSON과 호환이 쉬움
  • 페이팔, 넷플, 월마트 등에서 사용중

서버외의 노드

  • 용도가 서버에만 한정되지 않음
  • 웹프레임 워크 : React , Vue, Angular 등
  • 모바일 앱 프레임워크 : React Native
  • 데스크탑 개발도구 : Electron

0개의 댓글