1. What is Node.js ?
한줄요약 : 웹 브라우저 외부에서 javascript 코드를 실행하는 오픈 소스 크로스 플랫폼 javascript 런타임 환경
- JavaScript 런타임 : Node.js는 Google Chrome의 핵심 엔진이기도 한 V8 JavaScript 엔진 에서 실행됩니다. 그러나 브라우저 컨텍스트와 달리 Node.js는 브라우저 외부에서 JavaScript 코드를 실행합니다 .
- 단일 프로세스 모델 : Node.js 애플리케이션은 단일 프로세스 내에서 작동하므로 모든 요청에 대해 새 스레드를 생성할 필요가 없습니다. 이러한 디자인 선택은 Node.js의 성능에 기여합니다.
- 비동기 I/O : Node.js는 표준 라이브러리에서 비동기 I/O 기본 요소 세트를 제공합니다. 이러한 기본 요소는 JavaScript 코드가 차단되는 것을 방지하여 비차단 동작을 표준으로 만듭니다. I/O 작업을 수행할 때 Node.js는 기다리는 동안 CPU 주기를 낭비하지 않습니다. 대신 응답이 도착하면 작업을 재개합니다.
- 동시성 처리 : 스레드 동시성 관리 용이
- JavaScript Everywhere : JavaScript만 할 줄 알아도 백엔드/프론트엔드 모두 가능
- ECMAScript 표준 : 사용자의 브라우저 업데이트와 상관없이 사용하려는 버전을 선택할 수 있습니다.
2. Why Node.js ?
- 시작하기 쉬움 : Node.js는 초보자에게 친숙하며 프로토타입 제작 및 민첩한 개발에 이상적입니다.
- 확장성 : 수평 및 수직으로 확장됩니다.
- 실시간 웹 앱 : Node.js는 실시간 동기화에 탁월합니다.
- Fast Suite : 작업(예: 데이터베이스 액세스, 네트워크 연결)을 빠르게 처리합니다.
- 통합 언어 : 프론트엔드와 백엔드 어디에서나 JavaScript를 사용할 수 있습니다.
- 풍부한 생태계 : Node.js는 대규모 오픈 소스 라이브러리를 자랑하며 비동기식, 비차단 프로그래밍을 지원합니다.

3. Node.js의 장단점
- 장점
- 비동기 및 이벤트 기반 처리: 높은 동시성 처리가 가능합니다.
- 빠른 실행 속도: V8 엔진을 사용하여 높은 성능을 제공합니다.
- 풍부한 생태계: npm을 통해 수많은 패키지와 모듈을 사용할 수 있습니다.
- 프론트엔드와 백엔드에서 동일한 언어 사용: 개발 효율성이 높아집니다.
- 크로스 플랫폼 지원: 다양한 운영 체제에서 실행 가능합니다.
- 단점
- 싱글 스레드 특성: CPU 집약적인 작업(복잡한 연산이나 대규모 데이터 처리)에는 적합하지 않을 수 있습니다.
- 콜백 지옥 : 복잡한 비동기 코드로 인해 가독성이 떨어질 수 있습니다 (Promise, async/await로 일부 해결).
- 불안정한 API : 버전 간 호환성 문제가 발생할 수 있습니다.
- 관계형 데이터베이스 처리 : 기본적으로 약한 지원 (개선되고 있음).
4. 정리
| 장점 | 단점 |
| 1. 비동기 및 이벤트 기반 처리 | 1. 싱글 스레드 특성 |
| 2. 빠른 실행 속도 | 2. 콜백 지옥 |
| 3. 풍부한 생태계 | 3. 불안정한 API |
| 4. 프론트엔드와 백엔드에서 동일한 언어 사용 | 4. 관계형 데이터베이스 처리의 약점 |
| 5. 크로스 플랫폼 지원 |
'개발 > 백엔드' 카테고리의 다른 글
| [spring] MVC - 모델, 뷰, 컨트롤러 (0) | 2024.06.15 |
|---|---|
| [spring] 스프링 부트 라이브러리 정리 spring boot libraries (0) | 2024.06.14 |
| spring-boot-starter-logging (0) | 2024.06.14 |
| spring-core가 뭐임? (0) | 2024.06.14 |
| 타임리프 템플릿 엔진이 뭐임? what is thymeleaf template engine? (1) | 2024.06.14 |
