kdy·2023년 1월 26일
0
post-thumbnail


React와 Node.js의 관계

Node.js는 싱글 스레드 기반의 자바스크립트 런타임 환경이며, 크롬의v8엔진을 바탕으로 제작되었다.

런타임 환경(영어: runtime environment)은 컴퓨터가 실행되는 동안 프로세스나 
프로그램을 위한 소프트웨어 서비스를 제공하는 가상 머신의 상태이다. 


웹페이지에 자바스크립트가 있고 각 회사마다 브라우저엔 JS해석엔진이 있고 구글의 CHROME엔 V8에 있는대 그 V8을 때어내서 기능을 덕지덕지 붙여서 나온게 NODE JS이다. 즉 근본은 JS 변환 툴인것.

그래서 나온게 컴퓨터 로컬 내에서도 다양한 용도로 확장하기 위한 JavaScript Runtime이다.

특징1. node js 만으로도 서버구축이 가능하며 express 개발 환경을 사용하면 편리한 서버 구축이 가능하다

개발도구를 지원하진 않지만 적절한 코드를 사용하면 node js 자체만을 사용해서 서버를 만들수도잇으며

express 를 설치하면 더더욱 편리한 서버를 구축할수있다.

express란?  NodesJS를 사용하여 쉽게 서버를 구성할 수 있게 만든 프레임워크

Express를 사용해야 할 이유 (1) - 생태계 조사

특징2. NON BLOCKING I/O가 가능함

프로세스 : 운영체제에서 할당하는 작업의 단위이다. 노드나 인터넷 브라우저 같은 프로그램은 개별적인 프로세스이다.

스레드 : 프로세스 내에서 실행되는 흐름의 단위이다. 하나의 프로세스는 스레드를 여러개 가질 수 있다. 스레드들은 부모 프로세스의 자원을 공유한다. 즉, 같은 메모리에 접근할 수 있다.

자바스크립트 그리고 node js는 싱글 스레드 작업 처리를한다. 

1.뭔가 계산을함

2.근대 연산 이후로 보내야됨. 그럼 연산이후 연산장치에 달린 버스타고 OS 지나서 브라우저까지 도착햇음

3.브라우저에 연산결과가 도착햇음. 그럼 이걸 다시 보내야함. 그럼 보내는 시간도 필요함. 반대로 처음에 받는시간도 필요함.
이 보내는시간+받는시간+연산하는시간을 다 합쳐서 서버가 응답하는시간임. RESPONSE TIME임.

  1. 그럼 I/O가 뭐냐 서버기준으로 I/O시간은 INPUT OUTPUT이 입력값 결과값을 도출하는 시간 말고도 . 메모리에 저장된 요청자료를 CPU로 보낸다던지 요청자료를 하드웨어에서 찾는 다든지, 요청자료를 다시 보내려고 브라우저까지 보내는 시간, 브라우저에서 클라이언트에게 보내는 시간을 통틀어 여기서는 그냥 I/O라고함, 서버 기준으로는 연산을 제외한 나머지를 I/O시간이라고 말해도 됌.

요약하자면 연산시간 빼고, 프론트 단계의 코드에서 정보를 주고받는 시간을 I/O시간이라함.


(Non-blocking I/O and how Node uses it, in friendly terms: blocking vs async IO, CPU vs IO

그럼 NON BLOCKING I/O가 뭐냐

CPU가 중간에 쉬는 시간을 없애줌. ->더 빡새게 굴릴수있음. 아 참고로 JS는 처음부터 NON BLOCKING임

non blocking 기능을 처음부터 못쓰는 언어들은 node js를 사용함으로서 가능하게할수있다.


요약하면 NODE JS가 좋은 점 중 하나는 많은 클라이언트 요청을 감당해야 할 때, 싱글 스레드 서버를 굉장히 효율적으로 사용하게 해준다.

노드 js를 사용중인 회사

: walmart, ebay, paypal, dow jones, intuit, netflix, linked in , MS, uber, yahoo, etc

반대로 node js를 쓰면안되는 서비스 회사는

cpu ram gpu등 다양한 하드웨어를 사용하는곳은 쓰면안된다.
[output이 너무많고 복잡하다]

이러한 환경에는 python이나 django가 낫다고한다.

특징3. 비동기 기반의 이벤트 처리.

자바스크립트는 싱글 스레드로 동작하고 node js도 마찬가지이다 이때 html 태그들은 동기화 방식으로 처리 하는대 node js의 이벤트는 비동기 처리를 시킨다. 이는 사용자가 지정할수도있고, 연산량에따라 node js가 알아서 순서를 나눌수도있다.

이벤트는 한쪽에서 다른 쪽으로 알림 메시지를 보내는 것과 비슷함. 
개발자가 이벤트라고 정의 해놓은 특정 함수의 작동도 이벤트로 볼수 있음

동기화란?: 연산 자원에 관해서 동시 접근을 막고 순차적으로 처리하는것을 말한다.

비동기화란?: 연산 자원에 관하여 동시 접근을 가능케 하고 우선순위에 따라 순서를 나눈 후 처리한다

JavaScript 동기/비동기와 CallBack,Promise and Async/Await

작년 3월에 작성한 글들을 다시 올리는 중

profile
빠르고 정확해야 혈압이 안오른다

0개의 댓글