ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Node.js] Node.js란
    Node.js 2022. 3. 7. 17:27

    Node.js

    Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다. 싱글스레드이며, 이벤트 루프를 기반으로 논블로킹 I/O 처리와 npm을 이용한 다양한 라이브러리 및 패키지 사용이 가능한 특징이 있다.

     

    Node.js 특징

    1. 이벤트 루프

    • 콜백 이벤트 큐에서 하나씩 꺼내서 동작시키는 Loop를 말한다.
    • 이벤트 루프에서는 이벤트 발생 시 호출 되는 콜백 함수들을 테스크 큐에 전달하고, 테스크 큐에 담겨져있는 콜백 함수들을 콜스택에 넘겨준다.

     

    2. 논블로킹 I/O

    • 이전 작업이 완료될 때까지 기다리면서 멈추지 않고, 다음 작업이 지연되지 않게 동작하는 패러다임이다.
    • 오래 걸리는 작업은 백그라운드에서 진행하며, 완료 후 이벤트 루프를 통해 테스크 큐를 거쳐 호출 스택에 올라오길 기다리는 방식이다.

     

    3. 싱글스레드

    • 스레드는 프로세스 내에서 실행되는 흐름의 단위이다. 프로세스는 스레드를 여러 개 생성해서 여러 작업을 동시에 처리할 수 있는데, 스레드들은 부모 프로세스의 자원을 공유한다.
    • JavaScript같은 경우에는 동시에 실행될 수 없기 때문에, Node가 싱글 스레드기반인 것이다.

     

    Node.js 적합과 부적합

    적합

    • 간단한 로직 -> 알림 등
    • 대용량 -> 동시에 여러 요청들을 처리
    • 빠른 응답시간 요구 -> 알림 및 실시간 채팅 등
    • 빠른 개발 요구
    • 비동기 방식에 어울리는 서비스 -> 네트워크 스트리밍 서비스, 채팅 서비스 등

     

    부적합

    • 단일 처리가 오래 걸리는 경우 -> 싱글스레드 기반이기 때문이다.
    • 서버 체크 로직이 많은 경우 -> 논블로킹 I/O 기반이기 떄문에 콜백 헬에 빠지기 쉽다.
    • 업무 복잡도/난이도가 높은 경우 -> 에러 발생 시 서버가 다운되기 때문에 코드 품질이 중요하다.

     

    출처: https://velog.io/@kimkevin90/Nodejs-%EA%B0%9C%EB%85%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0Nodejs-%EB%9E%80

    출처: https://velog.io/@vermonter/JS-Node.js%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

    'Node.js' 카테고리의 다른 글

    [Node.js] Socket.io란  (0) 2022.03.10
    Node.js 장점 및 단점  (0) 2022.02.17
    node.js sequelize migration 생성 및 Column 추가하기  (0) 2022.01.10
    req.body, req.params, req.query  (0) 2022.01.03
Designed by Tistory.