■Node.js
1. 개요
- 서버 환경에서 동작하는 자바스크립트 프레임워크로 DB-클라이언트-서버를 모두 자바스크립트로 구성할 수 있게 되었다.
2. 등장 배경
- 자바스크립트 활용도의 증가
- 웹 브라우저를 벗어나 사용하려는 움직임이 시작
- 2008/9~ 구글 크롬 발표, V8 자바스크립트 엔진의 등장, 자바스크립트의 단점인 '속도'가 개선, 코드를 공개
- 2009/1~ 자바스크립트를 웹 브라우저 외에서 사용하기 위한 표준을 만들자는 의견 증가로 CommonJS 표준 발표
- Ryan Dahl은 CommonJS 표준과 V8 자바스크립트 엔진을 기반으로 Node.js를 개발
3. 기존 어플리케이션과 Node.js 어플리케이션의 차이
- 기존 웹 서버는 대부분 스레드를 기반으로 하는 동기 방식으로 네트워크 입출력을 처리
- Node.js는 이벤트를 기반으로 하는 비동기 방식으로 네트워크 입출력을 처리
4. 이벤트 기반 비동기 방식이란?
예) 재래 시장에서 4개의 가게를 들러 장을 보는 상황이다.
- 동기 방식(멀티 스레드, 멀티 프로세스)
: 몸을 복제해 동시에 여러 가게에 가서 줄을 선다.
- 비동기 방식(이벤트 기반)
: 시장에 대기 시스템을 도입 후, 각 가게를 돌면서 대기표를 받고, 번호가 불리면(이벤트 발생) 물건을 받아온다.
- 동기 방식은 작업 요청이 들어올 때마다 스레드를 여러 개 만들어 동시에 일을 처리한다.
일과 스레드의 양은 비례하므로 메모리 사용량이 증가한다는 단점이 있다.
- Node.js가 사용하는 '이벤트 기반 비동기 방식'은 스레드를 단 하나만 생성하므로 몸은 하나이고, 이벤트를 사용하므로
빠르게 일을 처리할 수 있다. 일은 많아도 어쨋든 몸은 하나이므로 메모리 사용량과 같은 시스템 리소스 사용량에는 변화가 거의 없다.
따라서 대규모 네트워크 프로그램을 개발하기 적합한 형태이다.
단점은, 그 한명이 쓰러지는 순간 프로그램 전체에 문제가 발생한다.
* Node.js 내부는 여러 스레드가 스레드 풀로 동작한다. 또한 실제 웹서버를 운용할 때에는 코어를 분산해서
관리하므로 하나의 스레드만 사용한다고 볼 수 없다. 중요한 것은 스레드의 운용을 플랫폼이 담당하며,
개발자는 스레드를 의식하지 않고 프로그래밍을 할 수 있다는 점이다.
5. Node.js의 장단점
- 장점
1) 자바스크립트를 사용하기 때문에 웹 개발자의 진입 장벽이 낮다.
2) 구글의 V8 자바스크립트 엔진을 사용하기 때문에 앞으로도 계속 성능 개선의 여지가 있다.
3) C++을 이용한 기능 확장이 가능하다.
4) 'Non-blocking I/O'와 '단일 스레드 이벤트 루프'를 통한 높은 Request 처리 성능을 가지고 있다.
DB에서 대량의 데이터를 취득, 웹페이지에 표시하는 처리의 경우, 일반적으로 DB 처리에 대기시간(blocking)이
발생하기 때문에 웹페이지 표시가 지연되는 현상이 발생한다.
'Non-blocking I/O'는 비동기 처리를 실시하므로 DB 처리와 웹페이지 표시를 별도 진행하여
스트레스 없이 웹페이지 표시가 가능하다.
5) Node.js에는 Socketio라는 실시간 통신을 실현하는 라이브러리가 있어 대량의 데이터 처리와 실시간 통신을
구현할 수 있는 기능을 모두 갖추고 있다.
- 단점
1) 자바스크립트를 사용하기 때문에 C나 C++로 개발된 서버 어플리케이션보다 느리다.
'■ 웹 개발 > 웹 역사' 카테고리의 다른 글
Ajax의 등장 배경 (0) | 2020.11.13 |
---|---|
HTML의 등장 배경 (0) | 2020.11.13 |
Javascript의 등장 배경 (0) | 2020.11.12 |