Node.js
- Chrome V8 엔진으로 빌드된 JS런타임 환경
- 브라우저 없이도 컴퓨터에서 작동할 수 있는 런타임환경
- 구글이 Node.js를 만든건 아님 V8엔진만 만듬
Node.js 특징
논 블로킹
- 함수가 실행되는 중에도 다른 작업 동시에 진행가능, 작업이 끝나지 않은 코드가 있어도 실행이 가능한 다음 코드로 넘어감
싱글스레드
- 싱글 스레드란 스레드 하나를 사용하여 동시에 하나의 작업만 처리가능
- 스레드: 프로그램이 동작할 때, cpu를 사용하는 단위
이벤트 루프
- 특정 이벤트가 발생하면 콜백함수를 호출, 호출할 콜백함수를 관리, 실행순서를 결정하는것
- JS는 싱글 스레드 기반언어, 단 한개의 call stack을 가짐
- 블로킹을 일으키는 이벤트들은 비동기적으로 실행
- 이벤트 처리가 끝난 콜백 함수들은 큐에 순차적으로 쌓이고 이벤트 루프는 stack이 비었을때 큐에서 콜백을 꺼내 stack에 올리는 역할 수행
Node.js 장단점
장점 | 단점 |
싱글 스레드, 적은 컴퓨터 자원사용 | cpu 코어 하나만 사용 |
Input/Output 작업이 많은 서버로 적합 | cpu 작업이 많은 서버로 부적합 |
웹서버 내장 | 스레드가 한개 |
JS사용 | 서버 규모 관리 x |
JSON형식과 호환 |
동기 / 비동기
- 동기: 먼저 실행된 코드의 처리결과가 나올때 까지 다음 코드가 실행되지 않고 대기 하는것
- 비동기: 실행순서와 관계없이 먼저 처리된 코드부터 처리결과가 나옴
동기적 예시 놀이공원
- 놀이기구를 타기위해 대기하는 사람 === 실행이 되기위해 대기중인 코드
- 놀이기구를 타고 있는 사람 === 실행중인코드
- 놀이기구를 타고 나온 사람 === 실행이 끝난 코드
비동기적 예시 맛집, 영화관
- 맛집에 들어가기 위해 줄서 있는 사람 === 실행이 되기 위해 대기중인 코드
- 맛집에 들어가서 밥먹을 먹고 있는 사람 === 실행중인 코드
- 맛집에서 밥을 다 먹고나온 사람(들어간 순서와 관계없이 밥을 빨리 먹은 사람은 먼저나옴) === 실행이 끝난 코드 (실행 순서와 관계없이 처리가 먼저 끝난 코드먼저 실행)
- 영화관에서 티켓을 끊기위해 대기중인 사람 === 실행이 되기 위해 대기중인 코드
- 영화관에서 티켓을 1장을 끊으려는 사람들과 200장을 끊으려는 사람 === 티켓 1장 ==가벼운 코드 , 티켓 200장 == 무거운코드
- 티켓을 끊으려는 사람들의 주문을 한꺼번에 받고 1장인 티켓부터 결제 === 실행이 가벼운 코드 부터 처리하고 무거운 코드는 나중에 처리
내일 할일: REST API전체적인 흐름 이해하기, 서버와 DB연동하여 데이터 주고 받기, 각 요청 별로 데이터 처리 방법 연습하기, thunder client 익숙해지기, 에러처리, req ,res 데이터 흐름 이해하기
'개발일지' 카테고리의 다른 글
개발일지 30일차 (3) | 2023.04.16 |
---|---|
내가보려고 만든 git명령어 (0) | 2023.04.15 |
개발일지 28일차 (0) | 2023.04.14 |
개발일지 27일차 (0) | 2023.04.13 |
VS Code 소스제어 10K 없애기 (0) | 2023.04.12 |