개발/Node.js

[200제]01. Node.Js 란?

알케이88 2025. 9. 1. 19:14

더보기

이제 국비 과정의 교육이 다 끝나가며 2달간의 파이널 프로젝트만 남았다. 포스팅에 대한 내용은 작성은 당분간 불가능 해 질 것으로 생각이 되지만 간간히 올리도록 하겠다. 

시작 하기 전에 Node.js 를 설치하는건 개인이 알아서 설치를 하고 읽어주길 바란다. 

 

자 그럼 이제 다시 시작 하자. 

 

Node.js란? 

  • 정의
구글 크롬의 V8 자바스크립트 엔진 기반
웹 브라우저 밖에서도 자바스크립트를 실행할 수 있게 해주는 서버 사이드 플랫폼

 

  • 주요 특징:
    1. 비동기 I/O 처리
      • 요청과 파일 읽기/쓰기, DB 작업 등을 블로킹 없이 처리가 가능하여 빠른 성능을 자랑
    2. 이벤트 기반(Event-driven)
      • 이벤트와 콜백 함수 중심으로 동작
      • 서버가 효율적으로 요청을 처리
    3. 싱글 스레드
      • 하나의 스레드로 동작하지만 비동기처리를 통해 많은 요청을 동시 처리 가능 
    4. npm(Node Package Management)
      • 다양한 라이브러리와 패키지를 쉽게 설치 및 관리 할 수 있는 도구 제공
  • 용도:
    • 웹 서버 구축
    • Rest API 서버 개발
    • 실시간 채팅 서버
    • 파일 처리, 스크립트 자동화 
  • Node.js 를 사용 하는 이유
    1. 빠른 성능
      • V8 엔진 덕에 자바 스크립트 실행 속도가 매우 빠름
      • 비동기 I/O 구조로 요청을 동시에 처리 가 가능 하여 실시간 서비스(채팅, 게임)에 적
    2. 논블록킹(Non-blocking) 구조
      • 일반 서버(ex. PHP, Java)는 요청 하나가 끝날때 까지 기다리지만 Node.js 는 이벤트 기반으로 멀티 테스크처럼 처리
      • 동시에 수천개의 요청을 효율적으로 처리 가능 
    3. 자바 스크립트로 서버 개발 가능
      • 프론트엔드 개발자가 같은 언어(JavaScript)로 백엔드도 개발 가능 
      • 풀스텍 개발이 쉬워짐
    4. npm 생태계
      • 수많은 오픈 라이브러리와 프레임워크(Express, Nest.js 등)를 쉽게 활용 가능
      • 생산성이 매우 높음
    5. 실시간 서비스에 강함
      • 웹소캣 기반의 실시간 채팅, 게임서버, 라이브 스트리밍 등에 많이 사용 
    6. 확장성
      • 마이크로서비스 아키텍처나 서버리스 환경에도 잘 동작함

 

Node.js 강점 VS 약점(사용하기 좋은 분야 VS 피해야 할 분야)

구분 사용하기 좋은 분야 피해야 할 분야
특징 비동기 I/O, 실시간, 네트워크 중심 CPU 집약적 연산, 멀티스레드 필요
웹 서비스 실시간 채팅, 라이브 스트리밍, 알림 시스템 대규모 이미지/영상 렌더링
API 서버 REST API, GraphQL API 복잡한 연산이 많은 API
게임 실시간 멀티플레이어 게임 서버 고사양 그래픽 처리 게임 엔진
자동화 파일 처리, 스크립트, 빌드 도구 머신러닝 학습, 빅데이터 연산
기타 IoT, 마이크로서비스, 서버리스 고부하 CPU 연산 작업

 

 

비동기 I/O란?

  • I/O(Input/Output): 파일 읽기/쓰기, DB 쿼리, 네트워크 요청 등 외부작업을 뜻함
  • 비동기: 어떤 작업을 요청 시, 그 작업이 끝나기 까지 기다리지 않고 다른 일도 동시에 할 수 있는 방식
즉 요청을 보내고 결과가 오면 알림을 받는 형식

 

동기 vs 비동기 예시

동기 방식(Synchronous)

  • 친구에게 전화
    • 내가 친구에게 전화함
    • 친구가 받을 때까지 전화기를 귀에대고 계속 기다림
    • 친구가 받으면 대화 시작

비동기 방식(Asynchronous)

  • 친구에게 카톡
    • 내가 친구에게 카톡 보냄
    • 답장이 올 때까지 다른 일 함
    • 친구가 답장하면 알림 

참고:
본 내용은 「초보자를 위한 Node.js 200제」(김경록님, 정지현님)를 기반으로 하였으며,
본 글은 개인 공부용으로 작성되었으며 상업적 사용은 불가합니다.