개발/백엔드

Node.js란 뭘까 - what, why, pros and cons

나한나한나한나 2024. 8. 16. 17:13

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. 크로스 플랫폼 지원