Node.js란?

c_yj·2022년 8월 5일
0

Node.js에 대하 대략적으로는 알고있었지만 이번에 사이드 프로젝트를 준비하게 되면서

Node.js란 ❓

Node.js는 Chrome V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경(Runtime Environment)으로 주로 서버 사이드 애플리케이션 개발에 사용되는 소프트웨어 플랫폼이다. Node.js는 브라우저 외부 환경에서 자바스크립트 애플리케이션 개발에 사용되며 이에 필요한 모듈, 파일 시스템, HTTP 등 Built-in API를 제공한다.

2009년 라이언 달(Ryan Dahl)이 발표한 Node.js는 폭발적인 관심을 받아왔고 Node.js를 사용하는 기업수도 대폭 증가했다. 앞으로 엔터프라이즈 영역에서 기존 Java나 .NET을 Node.js로 대체하려는 검토가 활발히 진행될 것으로 예상된다. 현재 Node.js를 사용하는 기업은 Microsoft, Paypal, eBay, Yahoo, GoDaddy 등이 있다.

Node.js는 자바스크립트를 사용해 개발한다. Front-end와 Back-end에서 자바스크립트를 사용할 수 있다는 동형성(isomorphic)은 별도의 언어 학습 시간을 단축해 주는 장점이 있다.

Node 특징 ⭐

이벤트 기반 비동기 방식 (Non-Blocking)

Node.js에서는 모든 API가 비동기 방식이므로, 호출 후 응답을 기다지리 않고 다른 API를 호출한다. 이전에 호출했던 API의 응답이 오면 이벤트 루프가 확인하여 처리한다.

자바스크립트

진입장벽이 낮으며 모든 웹 개발자가 쉽게 접근할 수 있다 장점이 있다.

단일 스레드

하나의 스레드가 모든 작업을 수행합니다.
스레드가 1개이기 때문에 메모리 사용량과 시스템 리소스 사용량 변화가 많지 않습니다.
따라서 대규모 네트워크 프로그램을 개발하기 적합합니다.
하지만 쓰레드 하나가 무너진다면 프로그램 전체에 문제가 발생합니다.
멀티스레드의 경우 Context Switching을 이용하여 여러 작업을 동시에 처리하는 것과 같이 느끼게 하지만, 오히려 Context Switching을 하는 시간 때문에 총 작업시간이 더 걸릴 수 있습니다.

Node.js가 어울리는 애플리케이션

  • 간단한 로직.

  • 대용량(동시에 여러 request를 처리)

  • 비동기방식에 어울리는 서비스(네트워크 스트리밍 서비스, 채팅 서비스 등

  • 입출력이 잦은 서비스

Node.js 가 어울리지 않는 웹서비스

  • 단일 처리가 오래 걸리는 경우 : 싱글 쓰레드이기 때문

  • 서버 체크로직이 많은 경우 : 비동기방식이기 때문에 CallBack Hell에 빠지지 않기 위해

  • 업무 복잡도/난이도가 높은 경우 : 에러가 나면 서버가 죽기 때문에 코드 품질 중요

참고
https://ninjaggobugi.tistory.com/7
https://seoyeonkk.tistory.com/entry/Nodejs-%EC%9D%98-%ED%8A%B9%EC%A7%95-%EB%B0%8F-%EC%9E%A5%EB%8B%A8%EC%A0%90
https://velog.io/@deannn/Node.js-Node.js%EC%9D%98-%EC%86%8C%EA%B0%9C%EC%99%80-%ED%8A%B9%EC%A7%95#1-chrome-v8-javascript-%EC%97%94%EC%A7%84-%EA%B8%B0%EB%B0%98-javascript-%EB%9F%B0%ED%83%80%EC%9E%84

profile
FrontEnd Developer

0개의 댓글