express = Node.js 웹 프레임워크
node.js
- node.js의 모든 api는 비동기 방식으로 동작하여 non-blocking I/O가 가능하다.
- 단일 스레드 이벤트 루프 모델을 사용하여 가벼운 환경에서도 높은 Request 처리 성능을 가지고 있다.
- 데이터를 실시간으로 처리하여 I/O가 자주 발생하는 SPA(Single page Application)에 적합하다.
- 서버 사이드 스크립트 언어이다.
node.js 장단점
장점)
1. 멀티 스레드 방식에 비해 컴퓨터 자원을 적게 사용
2. I/O 작업이 많은 서버에 적합(non blocking 방식을 사용하기 때문)
단점)
1. 싱글 스레드라서 CPU 코어를 하나만 사용
2. CPU 작업이 많은 서버에는 부적합(non blocking 방식을 사용하기 때문)
클라이언트 사이드 : 클라이언트(사용자) 측에서 처리하는 것 대표적으로(javascript)
서버 사이드 : 서버(제공자) 측에서 즉시 처리하는 것 대표적으로(java, node.js, python)
데이터를 서버 사이드에서 처리시
장점
- 클라이언트(사용자)의 컴퓨터 처리부담이 줄어든다
- 데이터 위조의 가능성을 줄여준다(서버쪽에서 중요한 데이터를 관리하기 때문에).
단점
- 서버가 처리해야할 데이터가 많아져서 서버 비용이 늘어난다.
데이터를 클라이언트 사이드에서 처리시
장점
- 서버 비용이 줄어든다.
단점
- 클라이언트 쪽에서 보내준 데이터를 서버 쪽에서 진위성을 파악하기 힘들기 때문에 중요한 데이터를 클라이언트 쪽에서 처리하기 힘듬
이벤트가 발생할 때 미리 만들어둔 작업을 수행하는 방식
1. 이벤트 리스너에 콜백 함수 등록
2. 이벤트 발생
3. 등록된 콜백 함수 호출
non blocking I/O
- 오래 걸리는 함수를 백그라운드로 보내고 빨리 끝나는 코드를 먼저 실행하는 방식(뒤로 밀린 함수들은 다시 태스트 큐를 거쳐 호출 스택으로 올라온다.)
- I/O작업을 진행하는 동안 유저 프로세스의 작업을 중단시키지 않는다.
blocking I/O
- 요청이 들어온 함수를 차례차례 순서대로 실행하는 방식
- I/O작업이 진행되는 동안 유저 프로세스의 작업을 중단한채 대기한다.
'Node' 카테고리의 다른 글
| [Node] 웹소켓 정리 (0) | 2023.04.07 |
|---|---|
| [Node] NPM 정리 (0) | 2023.04.07 |