Node.js
(Node.js) Node.js
JJeongHyun
2023. 1. 17. 14:52
반응형
node.js
- JS를 브라우저 환경이 아닌 OS환경에서 실행하기 위한 런타임 환경
- Chrome V8 JS 엔진으로 빌드된 JS 런타임. 노드를 통해 다양한 JS 애플리케이션을 실행할 수 있으며, 서버를 실행하는데 제일 많이 사용
- JS를 서버에서도 사용할 수 있도록 만든 프로그램
- V8이라는 JS 엔진위에서 동작하는 JS 런타임(환경)
- 런타임(RunTime) : 특정 언어로 만든 프로그램을 실행할 수 있는 환경
- 서버사이트 스크립트 언어가 아니라 프로그램
- 웹서버와 같이 확장성 있는 네트워크 프로그램을 제작하기 위해 만들어짐
- 싱글스레드(Single Thread)
- 이벤트 기반(Event Driven)
- 넌 블로킹(Non-Blocking)
싱글스레드(Single Thread)
- 한번에 여러 작업을 실행하지 못한다
- JS는 기본적으로 싱글스레드인데, 다만 멀티 스레드 기능을 사용할 수 있게 해주는 라이브러리가 존재하긴 한다
- 스레드(Thred)
- CPU의 작업 단위, 프로세스가 실행하기 위해서 CPU에게 받는 혹은 할당받는 영역
- 프로세스 내에서 실제로 작업을 수행하는 주체
- 모든 프로세스는 한 개이상의 스레드가 존재하여 작업을 수행, 또한 두 개 이상의 스레드들 가지는 프로세스를 멀티 스레드 프로세스(Multi-thread process)
- 프로세스(Process)
- 프로그램 단위, 우리가 실행한 프로그램에 대한 것
- 단순히 실행 중인 프로그램, 즉 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것. 이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성
이벤트 기반(Event Driven)
- 이벤트 루프가 있어 정의된 이벤트에 대해서 코드를 실행
- 특정 이벤트 발생 시 미리 예약 혹은 지정해놓은 작업을 수행하는 방식
- 지정한 작업을 수행하기 위해서 작업이 일어나야 할 시점에 이벤트를 미리 등록해두어야 한다, 이러한 작업을 이벤트 리스너에게 콜백함수를 등록한다고 한다
동기 / 비동기 (Synchronous / Asynchronous)
- 동기
- 실행되는 작업이 서로 연관이 있어서 하나가 실행이 되고 완료된 후에야 그 반환값을 사용하여 다른 작업을 실행
모든 요청, 응답이 일련의 순서가 있다
- 실행되는 작업이 서로 연관이 있어서 하나가 실행이 되고 완료된 후에야 그 반환값을 사용하여 다른 작업을 실행
- 비동기
- 작업을 실행하는데 별 관계가 없어서 함께 실행이 될 수 있다. 요청을 보냈을 때 응답 상태와 다음 동작을 수행, 따라서 작업의 순서가 보장 되지 않는다고 볼 수 있다
블로킹 / 논 블로킹 (Blocking / Non-Blocking)
- 블로킹
- I/O 작업이 진행되는 동안 유저 프로세스는 자신의 작업을 중단한 채 대기하는 방식
- I/O 작업이 진행되는 동안 유저 프로세스는 자신의 작업을 중단한 채 대기
- 애플리케이션에서 다른 작업을 수행하지 못하고 대기하므로 자원 낭비
- 논블로킹
- I/O 작업이 진행되는 동안 유저 프로세스의 작업을 중단 시키지 않는 방식
- I/O 진행시간과 관계가 없기 때문에 애플리케이션에서 작업을 중지하지 않고도 I/O 작업을 진행 가능하다
- 반복적으로 시스템 호출이 발생하기 때문에 자원낭비
라운드 로빈(Round Robin)
- 시분할, 코드를 일정 시간으로 짤라서 실행
- 여러 작업을 할 때 각 코드에 대해서 일정한 시간 동안 진행 후 다른 코드를 진행한다. 한번 다 돌린 후에 다시 이어서 진행