2023. 7. 13. 18:14ㆍAWS 기반 데이터분석 처리 고급 SW 클라우드 개발자 양성과정
NodeJS란 Chrome V8 Javascript엔진으로 빌드된 Javscript 런타임이다.
런타임: Javascript를 돌아가게 만드는 것
Nodejs? 웹 서버를 만들 수 있는 기능 제공, 웹서버가 아니다. Javascript는 단독 실행 불가, 웹의 브라우저에서만 javascript를 실행할 수 있었는데, nodejs라는 javascript 실행기 등장으로, VScode에서 npm run start / node indes.js와 같은 방식으로 javascript 파일 실행 가능. Nodejs 이전에는 html에서 브라우저가 javscript를 읽은 것이고, nodejs 이후에는 nodejs 파일명.js로 javscript 실행 가능 + javascript를 활용한 웹 서버 생성 가능.
Nodejs 특징
1. 비동기 이벤트 기반의 javascript 실행기
비동기 이벤트 기반? 수행할 동작을 메모리에 미리 등록해 두고 이벤트가 발생할 시 지정된 작업을 수행하는 것. 이벤트란 특정한 행위 ex) API 요청, 타이버, 버튼 클릭과 같이 nodejs에 입력을 주는 것.
nodejs의 모든 API는 비동기로 non-blocking라고 할 수 있음. 쉽게 말하면 nodejs에서의 API 요청 시 반환되는 데이터를 기다리지 않고 다음 API작업을 함. Nodejs는 내부적으로 이전에 보낸 API에 대한 응답을 받는다고 할 수 있음.
웹 서버를 만드는 코드:
const http = require('http);
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
기본적으로 모든 연결(localhost:3000 API 요청)은 동시에 처리됨. 연결 시 콜백함수가 실행되고, 연결이 없을 때는 노드는 sleep(절전모드)한다.
높은 확장성을 가진, 단일 스레드(Single Threaded but Highly Scalable): nodejs는 http 라이브러리는 제공하기 때문에, 아파치와 같은 별도 소프트웨어가 없어도 웹 서버를 작동시키는 것이 가능함. 따라서 기존의 웹 서버의 통제 없이 자유롭게 핸들링이 가능하기 떄문에 높은 확장성을 가진다고 할 수 있다.
nodejs는 "단일 스레드"를 사용하기 때문에, 기존의 다른 서버보다 더 많은 수의 요청을 처리할 수 있다?
프로세스는 운영체제가 할당하는 작업, 스레드는 프로세스 내에서 실행되는 작업단위. Nodejs가 실행되면, 프로세스가 하나 실행된다. 그리고 프로세스 내ㅜ
프로세스(process)란?
프로세스(process)란 단순히 실행 중인 프로그램(program)이라고 할 수 있습니다.
즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말합니다.
이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성됩니다.
스레드(thread)란?
스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미합니다.
모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다.
또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded process)라고 합니다.
'AWS 기반 데이터분석 처리 고급 SW 클라우드 개발자 양성과정' 카테고리의 다른 글
도커 (0) | 2023.07.16 |
---|---|
유스케이스 다이어그램 (0) | 2023.07.14 |
AWS_정리 (0) | 2023.07.12 |
Type (0) | 2023.06.30 |
용어정리 (0) | 2023.06.30 |