좋은점이 있다면 단점이 있는법!
1. 싱글 스레드 모델의 한계
- Node.js는 싱글 스레드, 이벤트 기반 모델을 사용합니다. 비동기 처리를 통해 고성능을 발휘하지만, CPU 집약적인 작업(예: 복잡한 계산이나 대규모 데이터 처리)에 적합하지 않습니다.
- 하나의 스레드에서 모든 작업이 처리되므로, 오래 걸리는 작업은 이벤트 루프를 막아 다른 요청 처리에 지장을 줄 수 있습니다.
2. 비성숙한 라이브러리
- Node.js의 npm 에코시스템에는 수많은 패키지가 있지만, 일부는 잘 관리되지 않거나 품질이 낮을 수 있습니다.
- 유지보수가 중단된 라이브러리를 사용하는 경우 보안 및 안정성 문제로 이어질 수 있습니다. (서비스가 멈출수도 있습니다!!)
3. 콜백 지옥
- 초기 Node.js 코드에서는 콜백 패턴을 많이 사용하므로 코드가 복잡해지고 가독성이 떨어질 수 있습니다.
- 비록 Promise와 async/await의 도입으로 많이 개선되었지만, 여전히 일부 코드베이스는 과거의 콜백 스타일을 유지하고 있습니다.
4. 정적인 타입 없음
- Node.js는 JavaScript 기반이기 때문에 기본적으로 동적 타입 언어입니다.
- 대규모 프로젝트에서 타입 안전성이 부족하여 버그가 발생하기 쉽습니다. 이를 보완하기 위해 TypeScript를 사용하는 경우가 많지만, 추가적인 학습과 설정이 필요합니다.
5. 툴링 및 디버깅 어려움
- JavaScript 특성상 런타임 에러가 발생하기 전까지는 일부 버그를 발견하기 어려운 경우가 많습니다.
- 디버깅 경험이 다른 언어에 비해 복잡하거나 직관적이지 않을 수 있습니다.
6. 보안 문제
- npm 패키지의 의존성 트리가 복잡한 경우, 보안 취약점을 포함한 패키지를 무의식적으로 사용하는 위험이 있습니다.
- 개발자가 직접 관리하는 의존성 외에도, 간접 의존성에 대한 관리가 중요합니다.
7. CPU 집약 작업에 비효율적
- Node.js는 주로 I/O 작업(파일 처리, 네트워크 요청)에 적합하며, 고성능 컴퓨팅 작업에는 부적합합니다.
- CPU를 많이 사용하는 작업은 Node.js의 싱글 스레드 모델을 방해하여 다른 요청의 성능을 저하시킬 수 있습니다.
'Node.js > 1. node.js 란?' 카테고리의 다른 글
1-5. Node.js 이벤트 루프 (0) | 2025.01.07 |
---|---|
1-4. 콜백 지옥 (0) | 2025.01.06 |
1-2 node.js의 특징. event-driven, non-blocking I/O , 단일 스레드 (0) | 2025.01.06 |
1-1 node.js 는 무엇일까요? (1) | 2014.02.13 |