2021. 11. 1. 22:21ㆍWeb
목적
- node.js의 특징과 장단점을 알 수 있다.
Node.js는 오늘날 백엔드의 가장 대표적인 개발환경 중 하나라고 볼 수 있습니다.
Node.js 특징
- 싱글 쓰레드, event 기반 비동기 방식으로 작동합니다.
이벤트 기반이란 무슨 뜻일까요?
완료된 동작에 대해 알림(event)을 받으면 그 때 처리하는 것을 의미합니다.
위의 자바스크립트 예시를 봅시다. 'form.addEventListner()' 이 부분만 보시면 됩니다.
form에 추가해 준 eventListener가 event를 듣고 있습니다. form 에 끝난 작업에 대해 event 를 받고 처리합니다.
submit을 눌렀다.(제출 완료) => 이 event 를 받아 아래의 코드를 실행시킵니다. (이벤트 처리)
이것이 이벤트 기반 동작이라고 할 수 있겠습니다.
Node.js는 single 스레드 이벤트 기반 비동기 방식으로 작동한다고 앞에서 말했습니다.
동기 방식과 비동기 방식의 차이점을 살펴봅시다.
- 푸드코트에 A, B, C, D 4개의 음식점이 있고, 각 가게에서 음식을 만들어 내는 작업이 있다고 합시다. 작업이 끝나면, 완료된 음식을 손님한테 가져다 주어야 합니다.
- 이를 빠른 시간안에 해결할 수 있는 방법은 무엇이 있을까요? 각 가게마다 음식이 만들어지는 속도, 주문량은 모두 다릅니다.
- 여러 명이 동시에 네 가게의 음식을 나른다.
- 한 명이 작업을 수행. 가게에서 작업이 끝나면 알림을 받고 갖고온다.
1번이 기존 네트워크 어플리케이션이 사용하는 쓰레드 기반 동기 방식(sychronous)입니다.
동기 방식은 작업 요청이 들어올 때마다 쓰레드를 여러 개 만들어 동시에 일을 처리합니다.
속도는 굉장히 빠를 수 있지만 일이 많아질수록, 쓰레드도 그에 맞게 늘어나므로 메모리 사용량이 계속 증가한다는 단점이 있습니다.
그렇다면 2번째 방법은 어떨까요?
쓰레드는 1개만 생성하고 작업이 끝나면, 이벤트(알림)를 받고 처리합니다.
1번과 달리 일이 많아져도 쓰레드는 1개이므로 메모리 사용량, 리소스 사용량에는 변함이 없습니다.
따라서 대규모 네트워크 프로그램을 개발하기 적합한 형태이고 이 방식이 Node.js가 사용하는 방식입니다.
Node.js의 장점
사실 node.js 가 쓰레드를 1개만 쓰는 것은 아닙니다. 여러개의 쓰레드가 묶여서 동작하고 있죠.
하지만 이 쓰레드 관리를 개발자가 하는 것은 아니고 플랫폼에서 알아서 해준다고 합니다.
개발자는 그저 하나의 흐름대로 코드를 짜나가면 node.js가 알아서 효율적인 멀티 쓰레드 운용을 하게 해준다는 것입니다.
또한 JavaScript를 주언어로 하고 있기 때문에 진입장벽이 낮습니다. 웹개발자면 JS 는 필수적으로 다루는 언어이기 때문입니다.
프로트엔드, 백엔드 둘다 JavaScript 라는 하나의 언어로 제어할 수 있다는 아주 강력한 장점이 있습니다.
싱글 쓰레드 이벤트 기반 동작 방식으로 처리 속도가 빠릅니다.
node.js는 구글의 V8 엔진으로 build된 JS 런타임으로, 구글이 계속해서 V8 엔진을 업그레이드 하고 있습니다.
npm(node package manager)을 통한 다양한 모듈(패키지) 제공. 자신이 필요한 라이브러리와 패키지를 편리하게 활용할 수 있습니다.
Node.js의 단점
단일 쓰레드(Single Thread)기반이기 때문에 하나의 작업이 많이 걸리는 웹서비스에는 어울리지 않고, 과부하가 걸릴 수 있음.
게시판, 피드와 같이 가벼운 I/O가 많은 웹서비스에 어울립니다.
코드가 수행되어야 코드에 에러가 있는지 알 수 있으며, 에러가 날 경우 프로세스가 내려가기 때문에 테스트가 매우 중요.
반드시 모든 케이스에 대해 소스코드를 검증해야 합니다.
'Web' 카테고리의 다른 글
API & REST API (0) | 2021.11.05 |
---|---|
정적 언어와 동적 언어 (0) | 2021.10.12 |