Node.js

조양권·2021년 5월 18일
0

JS

목록 보기
14/17

Node.js

Node.js는 구글 크롬의 자바 크롬의 JS엔진(V8)로 빌드된 JS런타임이다. 여기서 JS엔진이란 JS로 쓰여진 스크립트로 기계가 실행 가능한 과정을 만들어 내는 머신을 의미한다. JS런타임은 프로그램에 실행동안 사용가능한 내장된 라이브러리를 의미한다.

JS는 일반적으로 크롬과 같은 브라우저에 내장되어 있었다. 즉슨, JS는 그동안 브라우저에 종속되어 있었다. 이런 JS를 브라우저 밖, 즉 컴퓨터 내 다양한 용도로 확장하기 위해 만들어 진것이 Node.js이다.

Node.js를 이용한다면 python과 같이 로컬의 file system도 이용 가능하고, 서버도만들고, 크롤링도 가능하다.

Node.js의 장점

  • JS를 동일하게 사용해서 서버단 로직을 처리할 수 있음
    -> 새로운 언어를 습득하지 않아도 JS를 활용해 서버기술을 개발/응용할 수 있다.

  • 개발이 빠르고 쉽다. 서버 설치부터 실행까지 빠르다

  • Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 지녔다

  • 이벤트 기반 비동기 방식이라 서버 무리가 적다

  • npm(node package manger)를 통해 다양한 모듈을 제공한다. npm을 이용해 자신이 필요한 라이브러리와 패키지를 검색해 설치하고 사용할 수 있기 때문에 개발 속도와 효율성이 크게 증가한다

Node.js의 단점

  • 이벤트 기반 비동기 방식이라 서버단 로직이 복잡할 경우 콜백의 늪에 빠질 수 있다
  • 단일쓰레드이기 때문에 하나의 작업 자체가 많이 걸리는 웹서비스에는 적합하지 않다. 게시판과 같은 가벼운 I/O가 많은 웹서비스에 어울린다.
  • 코드가 수행되어야 코드에 에러가 있는지 판별이 가능하므로 에러가 날경우 프로세스가 내려가기 때문에 테스트가 매우 중요하다. 반드시 모든 케이스에 대해 소스코드를 검증해야 한다.

Node.js를 사용하기 적합한 케이스

  • 알람이나 실시간 대화같이 데이터의 실시간 처리가 필요한 앱
  • 사용자의 입력과 출력이 잦은 앱
  • 데이터 스트리밍 앱
  • JSON API기반 앱
  • 단일 페이지 기반의 앱

Node.js를 사용하기 적합하지 않은 케이스

Data Science같이 복잡한 데이터를 처리하기 위해 메모리, 램, cpu 등 하드웨어를 사용해야 하는곳엔 어울리지 않다. 하드코어한 처리를 위해서는 python django가 적합하다.

profile
할 수 있는 것이 늘어나는 즐거움

0개의 댓글