Node.js

-·2022년 9월 28일
0

Node JS

목록 보기
1/1
post-thumbnail

1. Node Js란 ?

Chrome 브라우저의 V8 Javascript 엔진을 탑재한 이벤트 기반의 Server Side 오픈소스 Javascript 런타임으로, 노드에 내장되어 있는 기능들(libuv, httpd, ..)로 동시 요청 처리에 높은 성능을 갖는 HTTP Server를 구축 및 실행할 수 있다.

  • Javscript : 브라우저(Chrome, Safari, Internet Exploere)에서 HTML 요소 생성부터 모든 페이지 및 기능을 동적으로 처리할 수 있도록 만들어주는 브라우저에서 실행되는 프로그래밍 언어
  • V8 Javascript 엔진 : Javascript 언어로 작성된 코드를 컴퓨터가 해석하기 쉬운 바이트 코드로 변환하는 역할을 수행.
    (바이트 코드는 직접 CPU 내의 레지스터와 누산기를 어떤 식으로 사용하라고 명령하는 명령문이나 마찬가지기 때문에 사람 입장에서는 어렵지만 컴퓨터 입장에서는 한결 이해하기가 편한 방식이다)

2. Node Js를 사용 하는 이유

1) Frontend와 Backend 기술 스택 통합

  • FE와 BE 양쪽에 동일한 JS 언어를 사용하면 코드를 모듈로 만들어서 재사용 할 수 있을뿐 아니라 JS로 훈련된 개발자는 최소한의 노력으로 서버 측 프로그래밍을 시작할 수 있으므로 이는 개발팀의 전반적인 생산성 향상에 도움이 된다.

2) 빠른 처리 속도와 동시 요청 처리 성능

  • Node.js에 사용된 C++로 작성된 V8 엔진은 인터프리터 방식이 아닌 JavaScript로 작성된 코드를 컴퓨터가 해석하기 쉬운 바이트 코드로 변환하는 JIT 컴파일 방식을 채택하고 있으며, V8의 최적화 기법으로 놀라운 속도로 작업을 수행한다. 게다가 Google이 엔진에 막대한 투자를 한 덕분에 V8은 매년 성능 향상을 보여주고 있다.

  • Node.js에는 V8 엔진과 더불어 libuv라는 비동기 I/O에 중점을 둔 오픈 소스 라이브러리를 사용함으로써 이벤트 기반(Event Driven), Single Thread, non-blocking I/O 모델을 구현하므로 Node.js는 지연(blocking) 없이 동시 요청을 빠르게 처리할 수 있다.

3) MSA (Micro Service Architecture)에 적합

Monolithic Architecture는 예를들어 하나의 서버에 결제,인증, 스트밍 등의 모든 기능이 포함되어 있는 구조로 결제 서버에 문제가 생기면 나머지 인증, 스트리밍과 관련된 기능도 모두 영향을 받을 수 있다.

MSA (Micro Service Architecture)는 시스템의 전체적인 구조를 서비스별로 독립적으로 나뉘어서 구성되는 아키텍쳐로, 결제 기능, 인증 기능을 분리해서 하나의 시스템에서 하나의 기능만 하도록 만들어진 구조이다. MSA 구조 안에서는 기능이 추가될 때마다 기존 시스템에 더해지는 것이 아니라 가벼운 시스템을 새롭게 구축하는 방법으로 확장하게 되므로 Node.js는 상대적으로 가벼운 런타임이기 때문에 MSA와 아주 잘 조화되어 사용될 수 있다.

이처럼 Node.js는 주로 API 서버(HTTP 서버)를 구축하는데 활용되며 HTTP API 서버를 만드는 방법이 다양함에도 아래와 같은 이유로 Node.js를 기반으로 API 서버를 구현한다.

3. Node Js 실행

1)REPL (Read Eval Print Loop)

Node.js REPL(Read-Eval-Print-Loop)은 Javascript 코드 및 node.js에서 제공하는 다양한 표현식을 실시간으로 처리하는 대화형 쉘(Shell)을 의미한다. 이 대화형 쉘은 사용자가 입력한 Javascript 코드를 읽고, 코드 행을 해석한 결과를 평가하고, 결과를 사용자에게 출력하고, 사용자가 종료 신호를 보낼 때까지 이 과정을 반복한다. 즉, REPL은 파일을 생성하지 않고도 Javascript 코드를 테스트하는 빠른 방법이다.
REPL을 시작하는 방법은 간단하게 터미널에 node라고 입력하면 된다.

2) Javascript file 실행

touch hello.js로 hello.js 파일을 생성한 후 vi 를 통해 편집기를 사용해서 hello.js을 열고, console.log('Hello World');를 작성한 후 저장하였다. 그후 node hello.js 입력하면 Node.js는 파일을 읽고 console.log("Hello World"); 전역 콘솔 개체의 log 메서드를 호출하여 문자열 "Hello World"가 출력된다.

4. 요약

  • Node.js는 Chrome 브라우저의 V8 Javascript 엔진을 탑재한 Server Side 오픈소스 Javascript 런타임

  • Node.js는 주로 이벤트 기반의 높은 처리 성능을 낼 수 있는 네트워크 서버(API)를 구축하는데 활용

  • Node.js 기반의 네트워크 서버(API)의 장점은 Frontend와 Backend 기술 스택 통합, 빠른 처리 속도와 높은 동시 요청 처리 성능, 그리고 MSA (Micro Service Architecture)에 적합 등이 있다.

  • NVM (Node Version Manager)를 사용해서 node.js의 버전을 관리할 수 있다.

  • javascript 코드를 실행하는 방법은 REPL (Read Eval Print Loop)과 .js 파일에 코드를 작성하고 실행하는 방법이 있다.

0개의 댓글