티스토리 뷰

백엔드/Nodejs

[Nodejs] 노드 시작하기

uijin-j 2021. 11. 10. 22:06

고급웹프로그래밍 수업에서 진행하는 프로젝트에서 서버 개발을 맡게되어서 2주간 'Node.js 교과서 개정 2판'이라는 책으로 Nodejs를 공부할 예정이다🔥 저번 학기 소프트웨어공학 수업에서 쇼핑몰 개발할 때 우연히 발견했는데 정말 한줄기 빛같은 책이다*。+

 


1장 노드 시작하기

 

 

📌 Nodejs?

→ Nodejs는 Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임 (즉, 자바스크립트 실행기)

 

📌 Nodejs의 특성

 

1️⃣ 이벤트 기반(event-driven)

→ 이벤트(클릭, 네트워크 요청)가 발생할 때 미리 지정해둔 작업(콜백 함수)을 수행하는 방식 (이벤트리스너에 콜백함수를 등록)

→ 여러 이벤트가 동시에 발생했을 때 어떤 순서로 콜백 함수를 호출할지를 이벤트 루프가 판단

→ 이벤트 루프를 잘 활용하면 오래 걸리는 작업을 효율적으로 처리 가능

 

잠깐, 이벤트 루프 ❓

: 함수가 호출되면 호출 스택에 쌓임 → 만약 해당 함수에 콜백 함수가 있으면 콜백 함수를 백그라운드로 보냄 → 백그라운드에 맡겨진 작업이 완료되면 콜백 함수는 태스크 큐로 들어감 → 호출스택이 비워지면 이벤트 루프가 태스크 큐의 콜백을 호출 스택으로 올림

 

2️⃣ 논 블로킹 I/O

→ 논 블로킹이란 이전 작업이 완료될 때까지 대기하지 않고 다음 작업을 수행는 것 (단, 모든 작업들이 모두 동시에 처리될 수 있다고 가정)

→ 노드는 I/O 작업을 백그라운드로 넘겨 동시에 처리 (동시에 처리될 수 있는 작업들을 최대한 묶어서 백그라운드로 넘겨야 효율적!)

→ 동시에 처리될 수 있는 I/O 작업이라도 논 블로킹 방식으로 코딩하지 않으면 의미 X (setTimeout(콜백, 0), setImediate()를 활용!)

→ I/O 작업이 없더라도 논 블로킹을 통해 실행 순서를 바꿔줌으로써 간단한 작업들이 대기하는 상황을 막을 수 있음

 

3️⃣ 싱글 스레드

→ 싱글 스레드란 스레드(프로세스 내에서 실행되는 흐름의 단위)가 하나뿐인 것

→ 사실, 노드를 싱행하면 여러 스레드들이 생성되는데 그중에서 우리가 제어할 수 있는 스레드가 하나뿐!

멀티 스레딩 멀티 프로세싱
하나의 프로세스 안에서 여러 개의 스레드 사용 여러 개의 프로세스 사용
CPU 작업이 많을 때 사용 I/O 요청이 많을 때 사용
프로그래밍이 어려움 프로그래밍이 비교적 쉬움

 

📌 서버로서의 노드

 

🙆🏻 장점

→ I/O 작업이 많은 서버로 적합

→ 멀티 스레드 방식에 비해 적은 컴퓨팅 자원 사용

→ 멀티 스레드 방식보다 쉬움

→ 웹 서버가 내장되어 있음 (but 규모가 커지면 결국 nginx 등의 웹서버를 연결)

→ 자바스크립트를 사용

→ JSON 형식과 쉽게 호환

 

🙅🏻‍♀️ 단점

→ CPU 작업이 많은 서버로 부적합 (이미지 또는 비디오 처리, 대규모 데이터 처리)

→ 기본적으로 싱글 스레드라서 CPU 코어를 하나만 사용

→ 하나뿐인 스레드가 멈추지 않도록 관리가 필요

→ 서버 규모가 커졌을 때 서버를 관리하기 어려움

→ 어중간한 성능

 


참고) 노드 공식 사이트

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함