Node.js란?

Jaelyang Choi·2021년 1월 13일
0

목차

Node.js란?

Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임.
웹 브라우저에 종속적인 자바스크립트를 여러 OS 환경에서 실행할 수 있도록 함.


Node.js는 Chrome의 V8엔진을 이용하여 브라우저에서 JavaScript를 해석하듯이 서버에서 JavaScript를 동작할 수 있도록 하는 환경(플랫폼)
말그대로 환경(플랫폼)이기 때문에 Node.js 자체로는 아무것도 못한다. 서버도 직접 구현해야 한다.

확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼

  • 웹 서버 기능 내장(apache처럼)

컨셉

경량 코어, 경량 모듈 철학

장점

1. 개발 생산성

풀스택 개발, JSON 사용, 비동기 프로그래밍

2. JSON 지원

JSON은 데이터 표현을 위한 실질적 표준.
javascript 언어 자체가 JSON을 지원하므로 데이터 처리에 필요한 코드 양이 간결해짐.
MongoDB를 사용할 경우 데이터 저장부터 노출까지 모든 레이어에 걸쳐 JSON 형식으로 데이터 표현이 통일됨
-> ORM이나 객체와 JSON사이의 변환이 없어도 된다!

3. 쉬운 비동기 프로그래밍

비동기 프로그래밍은 동기 프로그래밍 보다 성능이 좋으나 어려웠음.
async/await 함수는 비동기 프로그래밍 코드를 동기 프로그래밍 코드처럼 작성할 수 있게 함.
멀티스레드에서 골칫거리였던 동기화, 교착 상태(deadlock)에 대한 고민을 없애 줌.

  • 비동기 논블록킹 i/o 와 이벤트 주도 기술
    Node.js 라이브러리 내의 API는 모두 비동기식.
    None-Blocking 즉 멈추지 않는다.
    Network, File I/O와 같이 오래걸리는 작업이 완료되기까지 기다리지 않고 다음 API를 실행.
    비동기 작업이 값을 반환하면 이벤트 루프가 이를 확인하고 값을 받아옴.


    NodeJS의 API: Nodejs는 비동기적 처리를 하기 위한 좋은 기능을 내장

이벤트 메커니즘을 통해 서버가 멈추지 않고 반응.
Chrome의 V8 JavaScript 엔진을 사용하여 빠른 코드 실행을 제공하며, 버퍼링 X.

위와 같은 특징을 가지고 있어 데이터를 실시간으로 다루는 애플리케이션이나 싱글페이지 애플리케이션(SPA), 입출력이 잦은 애플리케이션을 개발할 때 뛰어난 효율성을 발휘.

단, 싱글 쓰레드 모델이기 때문에 하나의 작업 자체가 시간이 많이 걸리면 전체 시스템의 성능이 아주 급격하게 나빠지므로 CPU 사용률이 높은 애플리케이션에선 Node.js 사용을 권장 X



참고

https://medium.com/@yeon22/node-js-node-js%EB%9E%80-410ae3749c56
https://d2.naver.com/helloworld/4994500

profile
개발자 최재량입니다.

0개의 댓글