개요
노드(Node.js)에 대한 핵심 개념 이애하기
서버
노드는 서버 어플리케이션을 실행하는데 많이 사용된다.
서버는 네트워크를 통해 클라리언트에 정보나 서비스를 제공하는 프로그램이다.
노드
노드는 자바 스크립트(js) 런타임이다.
노드는 자바 스크립트 프로그램을 컴퓨터에서 실행할 수 있다.
이벤트 기반
미리 지정해둔 작업을 수행하는 방식
콜백 : 이벤트가 발생할 때 무엇을 할지 미리 등록하고 사용?
이벤트 루프 : 여러 이벤트가 동시에 발생할 때, 어떤 순서로 콜백 함수를 호출할지 판단.
호출스택 후입선출...
setTimeout(함수, 3000) // 3초후 함수 실행
이벤트 루프
백그라운드
태스크 큐
논 블로킹
파일 시스템 접급이나 네트워크를 통한 요청과 같은 I/O는 논블로킹 방식으로 처리하는 방법이 제공됨
블로킹 : 이전 작업이 끝나야 다음 작업을 실행하는 것
논 블로킹 : 이전 작업이 끝나는 것을 기다리지 않고 다음 작업을 실행한다. (동시 진행)
논 블로킹은 짧은 시간에 처리할 수 있으나, 모두 동시에 처리될 수 있는 I/O 작업일 경우에만 가능하다.
논 블로킹 방식으로 코딩하는 습관 필요 setTimeout(콜백,0)
*논 블로킹과 동시가 같은 의미가 아니다?
블로킹, 논 블로킹, 동기, 비동기
싱글 스레드
스레드가 하나뿐이라는 것을 의미
프로세스 : 운영체제에서 할당하는 작업의 단위 (프로그램을 실행시켰을 때 작업관리자에 뜨는 것)
스레드 : 프로세스 내에서 실행되는 흐름의 단위
(부모 프로세스의 자원을 공유하여 멀티 스레드의 경우 원하지 않는 값이 발생할 수 있다.)
(멀티 스레드 예시 : 로딩화면에서 스레드1은 로딩하고 스레드2는 로딩되는 현황을 유저에게 전달한다)
스레드풀과 워커스레드
스레드풀 : 특정 동작을 수행할 때 스스로 멀티 스레드를 사용 (암호화, 파일 입출력, 압축 등)
워커스레드 : 노드 12 버전에서 안정화된 기능으로 다수의 스레드를 다룰 수 있음 (CPU 작업 등)
멀티 스레드와 멀티 프로세싱
# 표
서버로서의 노드
노드는 개수는 많지만 크기는 작은 데이터를 실시간으로 주고받는 작업에 적합 (채팅, JSON데이터 등)
CPU 연산이 많이 발생하는 작업에는 부적합
노드에는 웹 서버가 내장되어 있어 별도의 웹서버 설치가 필요 없다.
그러나 추후 서버 규모가 커지면 웹 서버를 노드 서버와 연결할 필요성이 있다.
노드는 최적화가 되어있지 않으나 사용이 편리한 특징이 있다.
노드의 장단점
# 표
서버 외의 노드
노드는 웹, 모바일, 데스크톱 애플리케이션 개발에도 사용된다.
프로미스
실행은 바로 하되 결과는 나중에 받는 객체
JS와 node에서는 비동기를 주로 접합니다.
특히 이벤트 리스너를 사용할 때 콜백함수를 자주 사용하는데,
콜백 대신 프로미스 기반으로 재구성하여 콜백 지옥 현상을 극복했다.
...머지
'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 |