카테고리 없음

Node.js

tp134679 2025. 1. 4. 13:32

<목차>

1. 동기,비동기 

      1.1 서버의 필요성과 프로세스 스레드

2. Node.js 란

3. Node.js nvm, npm

 

 

 

1. 동기 비동기

node.js 를 들어가 앞서서 동기와 비동기 를 알아야하는데


우리가 앞에서 해온 코드들은 대부분 동기적으로  이루어지고 실행을 했습니다. 

ex) 

 

해당 코드를 실행 시키면 위에서부터 아래로 평가와 실행을 하는 js 특성상 a 라는 변수를 먼저 파악하고 b 변수 파악 후 실행단계시 log라는 함수를 실행시켜서 a = 1 b = 2 값을 차례대로 보여줍니다. 이처럼 예상이가능하게 움직이는 형태를 동기 라고합니다.

 

동기(Synchronous)

동기는 사전적으로 '동시에 일어난다'는 의미를 갖고 있습니다.

하나의 작업이 끝날 떄까지 다른 작업을 하지 않고 기다리는 방식 한작업의 요청이 끝나지 않는 이상 다음 요청은 실행하지않음

 

레스토랑으로 예를 들어 설명하자면 

ex)

이처럼 순차적으로 처리하는것은 직관적이여서 좋으나 B처럼 A에 대한 요청이 끝나지 않는한 시간이 계속 지체되는 손해를 보게 됩니다. 이처럼 동기적인 방식은 시간이 오래걸리는 작업의 경우 시스템의 성능이 저하되거나 지체되는 형태를 띄기에 비동기적 처리를 사용합니다. 

 

비동기(Asynchronous)

비동기는 사전적으로 '동시에 일어나지 않는다'는 의미를 갖고 있습니다.

하나의 작업이 끝나기전에 동시에 다른 작업에 대한 처리도 동시에 이루어짐을 뜻합니다. 

 

레스토랑으로 에시를 들자면 

A손님의 음식이 나오기전에  B손님의 음식이 먼저 나왔다면 그대로 서빙 즉 비동기적 처리임으로 개개인의 요청마다 즉각적으로 처리하기에 일처리가 빠르나 순서를 예상 할 수가없음. 

 

 

1.1 서버의 필요성과 프로세스 스레드

 

서버 의 필요성

단순한 작업(계산기, 문서작성,그림판 등)내 컴퓨터(클라이언트)에 설치가 되어있거나 

 에서 동적으로 처리해도 일처리가 빠른경우는 비동기적 처리가 필요없으나

외부의 데이터가 필요한경우(웹 서핑 뉴스페이지 방송 등)에는 클라이언트에서 데이터를 가지고 있지 않기에 데이터를 요청할 서버가 필요하다 그런데 이떄 동기적으로 처리하게 되면 서버 연결하는데도 시간을 가지고 나머지 기능들을 순차적으로 하나씩 요청해서 가지고 오는 형태를 가지므로 시간이 오래걸리므로 비동기적인 처리를 하는 서버 연결(외부터널)이 필요하다.  

프로세스

프로세스는 정적인 프로그렘을 실행시킨 상태를 뜻합니다. 하나의 프로그렘은 여러개의 프로세스를 가지고 있을 수 있으며 크롬으로 예를 들자면 

크롬이라는 프로그렘을 실행시켜서 프로세스 작업상태로 만들었으나 여러개의 창(프로세스)를 열어서 작업이 가능할 수 있다. (글쓰기 창과, 네이버 창)이처럼 눈에보이는 프로세스 창과 뒤에서 작업하는 프로세스 창을 나눌 수 있는데

 

- 포그라운드 프로세스

눈으로 보이는 프로세스이면 사용자가 직접 실행하며 사용자와 상호작용하는 프로세스

- 백그라운드 프로세스 

눈에 보이지 않으며 사용자와 직접적으로 상호작용 하지 않고, 보이지 않는곳에서 동작하는 프로세스 

ex) 윈도우 자동 소프트 웨어 업데이트

 

스레드

프로세스 안에서 실행되는 작업의 단위로서 하나의 프로세스안에서 여러가지 작업 입력이나 검색등 여러가지 작업 등을 처리함 비동기적으로 처리함으로서 프로세스를 멀티로도 작업이 가능하게 하며 한 프로세스 안에서 여러가지 작업을 수행이 가능하게해줍니다.

 

2. Node.js 란

공식 홈페이지에서 정의 하는 node.js 란  V8 java Script 엔진으로 빌드 된 싱글 스레드로서 javascript 런타임 환경(실행할 수 있는 환경)엔진입니다.

V8은 구글에서 만들어낸 엔진인데 그로 인하여 탄생한게 크롬입니다. 이 V8 엔진의 성능이 매우 뛰어났기에 이를 기반으로 만들어진 런타임 (javascript 실행 환경) 입니다.

기존에 js에서 작성한 결과값을 보려면 vs 코드 내에서 라이브 서버를 열어서  개발자 모드 창을 열어서 값을 확인해야했다면 이제는 명령 프롬프트 창에서 직접 결과를 확인할 수 있게 도와주는 엔진 입니다.

 

 

3. Node.js nvm, npm

node.js nvm, npm 노드에서 더욱더 다양한 외장 모듈이나 업데이트를 해주는 기능을 알아보자면

 

 

 

nvm

Node Version Manger 의 약자로서 노드를 설치하고 버전을 관리해주는 기능을 제공합니다. 이를 통해  Node.js 를 사용하는 이용자는 손쉽게 자기에게 필요한 버전을 찾아가며 사용이 가능합니다. 

 

npm

Node Package Manager 의 약자로서 외장 모듈을 다운로드 할 수 있게 도와주는걸 말합니다. 사용자별로 원하는 기능을 추가로 다운받는 node.js 의 페키지 매니저 

npm init 명령어를 사용하면 외장모듈을 사용할 수 있게 해주는 package. json 파일이 깔리게 되는데 

그전에 많은 정보를 입력하게 해준다 하나하나 살펴보면

 

 

 

pacjage.json 을들어가보면 그안에는 각각의 설정을 가진 기능들이 있다.

name : 외장모듈을 사용하겠다고 선언한 폴더의 이름

version: 지금 사용하는 버전

main: 노드를 사용할 파일

author: 사용자의 이름

license: 사용하는 라이센스

description: 프로젝트에 대한 간단한 설명을 하는 란

 

 

여기서 추가로 사용하고 싶은 기능을 다운하게 되면 

dependencies (의존성) 란이 생기는데 npm을 사용할껀데 어떤것을 의존한다 라는 란이 생깁니다.

 

npm intall (추가로 사용하고 싶은 외부모듈 이름)

 

예시로 서버를 여는 기능을 가진 외부모듈인 express 를 다운받아보면 

 

의존성란이 생기고 그안에 express 가 들어가서 외부모듈이 다운받아진것을 확인 할 수 있다!

이런식으로 사용자가 필요한 외부모듈을 다운받아 사용이 가능하다.