개요

노드(Node.js)에 대한 핵심 개념 이애하기

 

서버

노드는 서버 어플리케이션을 실행하는데 많이 사용된다.

서버는 네트워크를 통해 클라리언트에 정보나 서비스를 제공하는 프로그램이다.

 

노드

노드는 자바 스크립트(js) 런타임이다.

노드는 자바 스크립트 프로그램을 컴퓨터에서 실행할 수 있다.

 

이벤트 기반

미리 지정해둔 작업을 수행하는 방식

콜백 : 이벤트가 발생할 때 무엇을 할지 미리 등록하고 사용?

이벤트 루프 :  여러 이벤트가 동시에 발생할 때, 어떤 순서로 콜백 함수를 호출할지 판단.

 

호출스택 후입선출...

 

setTimeout(함수, 3000) // 3초후 함수 실행

 

이벤트 루프

백그라운드

태스크 큐

 

논 블로킹

파일 시스템 접급이나 네트워크를 통한 요청과 같은 I/O는 논블로킹 방식으로 처리하는 방법이 제공됨

블로킹 : 이전 작업이 끝나야 다음 작업을 실행하는 것

논 블로킹 : 이전 작업이 끝나는 것을 기다리지 않고 다음 작업을 실행한다. (동시 진행)

 

논 블로킹은 짧은 시간에 처리할 수 있으나, 모두 동시에 처리될 수 있는 I/O 작업일 경우에만 가능하다.

논 블로킹 방식으로 코딩하는 습관 필요 setTimeout(콜백,0)

 

*논 블로킹과 동시가 같은 의미가 아니다?

블로킹, 논 블로킹, 동기, 비동기 

 

 

싱글 스레드

스레드가 하나뿐이라는 것을 의미

프로세스 : 운영체제에서 할당하는 작업의 단위 (프로그램을 실행시켰을 때 작업관리자에 뜨는 것)

스레드 : 프로세스 내에서 실행되는 흐름의 단위

(부모 프로세스의 자원을 공유하여 멀티 스레드의 경우 원하지 않는 값이 발생할 수 있다.)

(멀티 스레드 예시 : 로딩화면에서 스레드1은 로딩하고 스레드2는 로딩되는 현황을 유저에게 전달한다)

 

스레드풀과 워커스레드

스레드풀 : 특정 동작을 수행할 때 스스로 멀티 스레드를 사용 (암호화, 파일 입출력, 압축 등)

워커스레드 : 노드 12 버전에서 안정화된 기능으로 다수의 스레드를 다룰 수 있음 (CPU 작업 등)

 

멀티 스레드와 멀티 프로세싱

# 표

 

 

서버로서의 노드

노드는 개수는 많지만 크기는 작은 데이터를 실시간으로 주고받는 작업에 적합 (채팅, JSON데이터 등)

CPU 연산이 많이 발생하는 작업에는 부적합

 

노드에는 웹 서버가 내장되어 있어 별도의 웹서버 설치가 필요 없다.

그러나 추후 서버 규모가 커지면 웹 서버를 노드 서버와 연결할 필요성이 있다.

노드는 최적화가 되어있지 않으나 사용이 편리한 특징이 있다.

 

노드의 장단점

# 표

 

 

서버 외의 노드

노드는 웹, 모바일, 데스크톱 애플리케이션 개발에도 사용된다.

 

 

프로미스

실행은 바로 하되 결과는 나중에 받는 객체

 

JS와  node에서는 비동기를 주로 접합니다.

특히 이벤트 리스너를 사용할 때 콜백함수를 자주 사용하는데,

콜백 대신 프로미스 기반으로 재구성하여 콜백 지옥 현상을 극복했다.

 

 

 

 

...머지

 

 

 

 

 

 

 

 

728x90

'Program > Server' 카테고리의 다른 글

[Photon] 서버 개요  (0) 2022.09.13
[NodeJS] http 모듈로 서버 만들기  (0) 2022.09.13
[NodeJS] 노드 내장 모듈  (0) 2022.09.13
[NodeJS] Process  (0) 2022.09.13
멀티플레이어 게임 이론  (0) 2022.07.15

+ Recent posts