런타임 환경(영어: runtime environment)은 컴퓨터가 실행되는 동안 프로세스나
프로그램을 위한 소프트웨어 서비스를 제공하는 가상 머신의 상태이다.
웹페이지에 자바스크립트가 있고 각 회사마다 브라우저엔 JS해석엔진이 있고 구글의 CHROME엔 V8에 있는대 그 V8을 때어내서 기능을 덕지덕지 붙여서 나온게 NODE JS이다. 즉 근본은 JS 변환 툴인것.
그래서 나온게 컴퓨터 로컬 내에서도 다양한 용도로 확장하기 위한 JavaScript Runtime이다.
개발도구를 지원하진 않지만 적절한 코드를 사용하면 node js 자체만을 사용해서 서버를 만들수도잇으며
express 를 설치하면 더더욱 편리한 서버를 구축할수있다.
express란? NodesJS를 사용하여 쉽게 서버를 구성할 수 있게 만든 프레임워크
Express를 사용해야 할 이유 (1) - 생태계 조사
프로세스 : 운영체제에서 할당하는 작업의 단위이다. 노드나 인터넷 브라우저 같은 프로그램은 개별적인 프로세스이다.
스레드 : 프로세스 내에서 실행되는 흐름의 단위이다. 하나의 프로세스는 스레드를 여러개 가질 수 있다. 스레드들은 부모 프로세스의 자원을 공유한다. 즉, 같은 메모리에 접근할 수 있다.
자바스크립트 그리고 node js는 싱글 스레드 작업 처리를한다.
1.뭔가 계산을함
2.근대 연산 이후로 보내야됨. 그럼 연산이후 연산장치에 달린 버스타고 OS 지나서 브라우저까지 도착햇음
3.브라우저에 연산결과가 도착햇음. 그럼 이걸 다시 보내야함. 그럼 보내는 시간도 필요함. 반대로 처음에 받는시간도 필요함.
이 보내는시간+받는시간+연산하는시간을 다 합쳐서 서버가 응답하는시간임. RESPONSE TIME임.
요약하자면 연산시간 빼고, 프론트 단계의 코드에서 정보를 주고받는 시간을 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가 낫다고한다.
자바스크립트는 싱글 스레드로 동작하고 node js도 마찬가지이다 이때 html 태그들은 동기화 방식으로 처리 하는대 node js의 이벤트는 비동기 처리를 시킨다. 이는 사용자가 지정할수도있고, 연산량에따라 node js가 알아서 순서를 나눌수도있다.
이벤트는 한쪽에서 다른 쪽으로 알림 메시지를 보내는 것과 비슷함.
개발자가 이벤트라고 정의 해놓은 특정 함수의 작동도 이벤트로 볼수 있음
동기화란?: 연산 자원에 관해서 동시 접근을 막고 순차적으로 처리하는것을 말한다.
비동기화란?: 연산 자원에 관하여 동시 접근을 가능케 하고 우선순위에 따라 순서를 나눈 후 처리한다
JavaScript 동기/비동기와 CallBack,Promise and Async/Await
작년 3월에 작성한 글들을 다시 올리는 중