Jay's Cookbook
Menu
  • Tags
  • Categories
  • Projects
Computer Science
OS
Network
Data Structure
Algorithm
Language
Code Architecture
Python
Javascript
Typescript
Java
Backend
Backend Theory
TypeORM
Node.js
NestJS
FastAPI
Frontend
HTML/CSS
React
Next.js
Data Engineering
DE Theory
MySQL
MongoDB
Elastic
Redis
Kafka
Spark
Airflow
AI
Basic
Pytorch
NLP
Computer Vision
Data Analytics
Statistics
Pandas
Matplotlib
DevOps
Git
Docker
Kubernetes
AWS
[Node.js] Intro
backend
nodejs

[Node.js] Intro

Jay Kim
Jay Kim 22 Jan 2024
시작 [Node.js] 모듈

Table of Contents

  • 노드란
  • 노드의 장단점
  • 노드 구조
  • 노드의 특징
    • 이벤트 기반
    • 싱글 스레드 논블로킹I/O

노드란

  • 2009년, 라이언 달이 만든 V8 엔진으로 빌드된 자바스크립트 런타임 환경
  • 비동기 이벤트 기반 자바스크립트 런타임

  • Node.js가 없던 시절에는 자바스크립트를 실행하려면, HTML 안에 <script>태그로 전달해줘야만 브라우저의 자바스크립트 엔진에서 실행 가능했다
  • Node.js의 등장으로 브라우저 이외의 환경에서도 자바스크립트를 실행할 수 있게 되었다
  • Node.js는 브라우저의 런타임과 다르게, 하드웨어의 파일 시스템에 접근할 수 있는 런타임 제공한다

노드의 장단점

  • 장점
    • 프론트엔드에서 사용하는 javascript 언어를 이용해 백엔드 서버 개발이 가능해졌다
    • 훌륭한 패키지 매니저(npm), 커뮤니티, 프레임워크 성숙도
    • 비동기 이벤트 기반 I/O를 사용해 동시에 여러 요청을 다룰 수 있다
    • V8 엔진의 JIT 컴파일러 특성 때문에 서버 기동이 빠르다
  • 단점
    • 싱글 스레드이기 때문에 CPU 코어를 하나만 사용한다
    • 그래서 CPU 작업이 많은 경우에는 사용하기 적절하지 않을 수 있다

노드 구조

노드의 특징

이벤트 기반

  • 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 말한다
  • 이벤트의 예: 클릭, 네트워크 요청, 타이머 등
  • 이벤트 리스너: 이벤트를 등록하는 함수
  • 콜백 함수: 이벤트가 발생했을 때 실행될 함수

Node.js 교과서 책, 조현영 저자 참조

싱글 스레드 논블로킹I/O

  • 노드는 멀티 스레드 지원하지만 기본적으로 싱글 스레드 방식이다
    • (멀티 스레드 코드는 프로그래밍 난이도도 높고, 제대로 작성하지 않으면 컴퓨팅 자원이 낭비된다. 그래서 멀티 스레드에 숙련된 개발자들끼리 일할 때 유용하다)
  • 시간이 오래 걸리면서, 다른 곳에서 할 수 있는 작업들은 논 블로킹으로 백그라운드에서 병렬로 실행시킨다
    • (ex. I/O 작업(파일 시스템 접근, 네트워크 요청), 압축, 암호화 등 )
    • (나머지 코드는 블로킹 방식으로 실행된다)
  • 결론은 Node.js는 싱글 스레드로 프로그래밍 난이도는 낮추고, 논블로킹 I/O로 처리 성능을 높였다
시작 [Node.js] 모듈

You may also like

See all nodejs
24 Feb 2024 [Node.js] 버퍼와 스트림
backend
nodejs

[Node.js] 버퍼와 스트림

23 Feb 2024 [Node.js] 내부 들여다 보기
backend
nodejs

[Node.js] 내부 들여다 보기

22 Feb 2024 [Node.js] NPM
backend
nodejs

[Node.js] NPM

Jay Kim

Jay Kim

Web development, data engineering for human for the Earth. I share posts, free resources and inspiration.

Rest
Lifestyle
Hobby
Hobby
Hobby
Hobby
2025 © Jay's Cookbook. Crafted & Designed by Artem Sheludko.