일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 인덱스
- jpa
- CleanCode
- 도메인 주도 개발 시작하기
- AWS RDS
- 자바
- 기술면접
- 이펙티브 자바
- 자바예외
- 클린코드
- SQL쿡북
- 이펙티브자바
- 알고리즘분석
- 인프런백기선
- java
- MariaDB
- aop
- 혼공SQL
- 인프런김영한
- 알고리즘
- 이팩티브 자바
- 스프링부트와AWS로혼자구현하는웹서비스
- DDD
- vue.js
- AWS
- 네트워크
- react
- 자료구조
- mysql
- 자바스터디
- Today
- Total
기록이 힘이다.
Node.js 본문
<<읽기 전에 찾아보면 좋은 개념>>
스레드
[장점]
-사용자에 대한 응답성을 향상시켜야 할 때
-동시에 작업을 완료시켜야 할 때
[사용해야 하는 경우]
-네트워크 웹 서버 또는 데이터베이스 통신
-시간이 오래 걸리는 작업
[단점]
-많은 스레드로 코드 실행을 제어하면 복잡해지고 버그가 발생할 수 있음
-스레드를 삭제하려면 삭제할 때 발생할 수 있는 문제와 처리 방법을 알아야 함
Node.js는 스레드의 단점을 해결하고자 내부적으로(개발자가 몰라도 되는 부분)는 스레드 처리를 하고,
외부적으로(개발자가 개발해야 하는 부분)는 스레드를 신경 쓰지 않고 개발할 수 있게 만든 소프트웨어 플랫폼
Node.js 배경사
Node.js는 서버 환경에서 작동하는 자바스크립트이다.
CommonJS 표준 발표 이후 곧바로 라이언 달은 CommonJS표준과 V8 자바스크립트 엔진을 기반으로 Node.js를 개발합니다.
기존 웹 서버는 대부분 스레드를 기반으로 하는 동기 방식으로 네트워크 입출력을 처리합니다. 반면에 Node.js는 이벤트를 기반으로 하는 비동기 방식으로 네트워크 입출력을 처리합니다. 스레드냐 이벤트냐는 굉장히 단순한 차이 같지만, 앞으로 Node.js를 제대로 사용하려면 스레드 기반 동기 방식과 이벤트 기반 비동기 방식의 차이를 잘 이해해야 합니다.
이벤트 기반 비동기 방식
동기 방식은 작업 요청이 들어올 때마다 스레드를 여러 개 만들어 동시에 일을 처리합니다. 굉장히 좋은 해결 방법이긴 한데, 일이 많아질수록 스레드를 더 많이 만들어야 하므로 메모리 사용량이 계속 증가하는 단점이 있습니다.
Node.js는 스레드를 단 하나만 생성하므로 몸은 하나입니다. 하지만 이벤트를 사용하므로 빠른 속도로 일을 처리할 수 있습니다.
일이 아무리 많아도 몸은 하나이므로 메모리 사용량과 같은 시스템 리소스 사용량에는 변화가 거의 없습니다. 따라서 대규모 네트워크 프로그램을 개발하기 적합한 형태입니다. 하지만 한명이 쓰러지는 순간 전체 문제 발생 단점
==> note
사실 Node.js도 내부적으로는 여러 개의 스레드가 스레드 풀로 동작합니다. 또한 실제 웹 서버를 운용할 때는 코어를 분산해서 관리하므로, 하나의 스레드만 사용한다고 볼 수는 없습니다.
중요한 것은 이러한 스레드를 운용하는 것이 개발자가 아니라, 플랫폼이라는 것입니다.
Node.js 장단점
장점
1. 자바스크립트를 사용한다는 점이다. 웹 개발자가 쉽게 접근할 수 있다.
2. 구글이 만드는 자바스크립트 엔진을 사용한다는 사실이다. 구글이 무너지지 않는 이상 계속 빨라질 것이다.
3. C++로 개발된 V8 자바스크립트 엔진으로 개발되어 C++를 사용해 기능을 확장
단점
1. 자바스크립트를 사용한다. 아무리 빨라도 C나 C++로 개발된 서버 애플리케이션보다는 느립니다.
==>Note
사실 정말 빠르게 만든다면, 숙련된 C 또는 C++ 개발자를 데리고 웹 서버 애플리케이션을 만드는 것이 좋을 수 있습니다. 하지만 구현 할 때는 속도, 생산성, 유지 보수성, 비용 등을 모두 고려하게 되는데 PHP, Ruby, Python, Node.js 등을 사용하는 것이 C, C++를 사용하는 것보다 우수합니다.
Node.js 의 활용
이베이와 링크드인
이베이는 Node.js를 사용해 웹 API를 배포합니다. 또한 링크드인은 자사의 모든 서버를 Node.js를 사용해 구성했습니다.
Node.js의 가벼움 덕분에 많은 스타트업 기업에서도 활용하고 있습니다.
'Node.js' 카테고리의 다른 글
http 모듈 (0) | 2022.07.14 |
---|---|
이벤트 (0) | 2022.07.07 |
Node.js 기본 (0) | 2022.06.29 |