반응형
노드 핵심 개념 이해하기
-Node.js는 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임이다.
🔍서버와 런타임
서버
- 노드는 다양한 자바스크립트 애플리케이션 중 서버 애플리케이션 실행 시 제일 많이 사용함.
- 서버는 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 or 프로그램을 말함.
- 클라이언트 : 브라우저, 데스크톱 프로그램, 모바일 앱...
자바스크립트 런타임
- 런타임은 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 말한다.
- 노드는 자바스크립트 런타임 -> 노드는 자바스크립트 프로그램을 컴퓨터에서 실행 가능 -> 쉽게 말해 노드는 자바스크립트 실행기라고 볼 수 있음. (기존에는 자바스크립트 프로그램을 웹 브라우저 위에서만 실행 가능했다.)
🔍이벤트 기반
- 이벤트 기반(event-driven)이란 이벤트 발생 시 미리 지정해둔 작업을 수행하는 방식. (네트워크 요청, 클릭...)
- 노드는 이벤트 기반 방식으로 동작 -> 이벤트 발생 시 이벤트 리스너에 등록해둔 콜백 함수를 호출한다. 발생한 이벤트가 없거나 발생했던 이벤트 모두 처리 시 노드는 다음 이벤트 발생 때까지 대기함.
🔍논 블로킹 I/O
- I/O는 입력(Input), 출력(Output)을 의미한다.
- 파일 읽기, 쓰기, 폴더 만들기 등의 작업 시 노드는 블로킹 방식으로 처리하는 방법을 제공한다.
- 논 블로킹이란? 이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행한다는 의미임.
- 반대로 블로킹은 이전 작업이 끝나야만 다음 작업을 수행하는 것을 의미하며, 그림으로 확인해 보면 블로킹 방식보다 논 블로킹 방식이 더 짧은 시간 안에 같은 작업을 처리할 수 있음을 확인할 수 있다.
🔍싱글 스레드
- 싱글 스레드란 스레드가 하나 뿐이라는 것을 의미함.
💡프로세스 : 운영 체제에서 할당하는 작업의 단위. 노드나 웹 브라우저같은 프로그램은 개별적인 프로세스임.
💡스레드는 프로세스 내에서 실행되는 흐름의 단위. 프로세스는 스레드를 여러 개 생성해 여러 작업을 동시에 처리 가능함.
- 엄밀히 말하면 노드는 싱글 스레드로 동작하지는 않음.
- 노드 실행 시 먼저 프로세스 하나가 생성됨 -> 그 프로세스 내부적으로 스레드를 여러 개 생성함. -> 이중에서 우리가 직접 제어할 수 있는 스레드가 하나뿐임.
🔍서버로서의 노드
- 장점 : 서버에는 기본적으로 I/O 요청이 많이 발생하기 때문에 I/O 처리에 유리한 노드를 서버로 사용 시 장점이 될 수 있음.
- 단점 : 하지만 모든 코드가 스레드 하나에서 처리되기 때문에 CPU 부하가 큰 작업에는 적합하지 않음.
=>개수는 많지만 크기는 작은 데이터를 실시간으로 주고받는 데 적합함. (실시간 채팅 애플리케이션, 주식 차트...)
- 노드는 웹 서버가 내장되어 있어 입문자가 쉽게 접근 가능함. (노드 외의 서버 개발 시 아파치 같은 별도 웹 서버 설치 필요함.)
🔍서버 외의 노드
- 노드 기반으로 돌아가는 대표적인 웹 프레임워크 : 앵귤러(Angular), 리액트(React), 뷰(Vue) 등
- 페이스북, 인스타그램, 핀터레스트, 테슬라 등이 리액트 네이브를 사용하여 모바일 앱을 운영 중.
반응형
'💻 my code archive > 📗Node.js' 카테고리의 다른 글
노드 공부 기록(3) - 자바스크립트 문법, 구조분해 할당, 프로미스, async / await (0) | 2022.04.14 |
---|---|
노드 공부 기록(2) - Node.js 개발 환경 설정하기 (0) | 2022.04.14 |
노드&리액트 공부기록(5) - Body-parser, Postman 이용하여 회원가입 만들기 (0) | 2022.02.26 |
노드&리액트 공부기록(4) - SSH 이용해 Github 연결하기 (0) | 2022.02.26 |
노드&리액트 공부 기록(3) - MongoDB 에서 Model, Schema의 개념 (0) | 2022.02.26 |