본문 바로가기

Node.js/1. node.js 란?

1-3 node.js의 단점!

좋은점이 있다면 단점이 있는법!

 

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의 싱글 스레드 모델을 방해하여 다른 요청의 성능을 저하시킬 수 있습니다.