Search
Duplicate
📘

The Internals

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Node.js
Scrap
태그
9 more properties
Spacemates프로젝트를 진행하게 되면서 개발 공부를 시작하였다. Flutter부터 공부를 시작하면서 차근차근 필요한 내용들을 배우고 있던 중 개발에 대한 전반적인 지식을 먼저 쌓아보고 싶었다. 프론트와 백엔드의 관계와 통신이 필요한 어플리케이션의 흐름 등 하나의 코드가 아닌 전체적인 흐름이 궁금하였다.
이렇게 전체적인 통신흐름을 알고나니 Node.js와 DataBase의 기본적인 개념에 대해 더 깊이 공부해 보고 싶었다. 이번 페이지에서는 Node.js에 대한 지식과 Node.js의 내부 동작들에 대해 알아보려고 한다.

Node.js

Node.js란?

Node.js 공식 사이트에서 내린 Node.js의 정의
일단 시작부터 모르는 단어가 우수수 쏟아졌다. 대체 V8, 엔진, 런타임은 뭘까?
JavaScript 런타임?
런타임이란 프로그래밍 언어가 구동되는 환경을 말한다. 원래 JavaScript는 크롬 등 여러 브라우저에서 구동된다. 여기서 크롬, 브라우저들이 JavaScript의 런타임인 것이다.
Node.js도 JavaScript의 런타임 이라고 한다. Node.js도 크롬, 브라우저들과 같이 JavaScript가 구동이 가능한 환경이라고 생각하면 된다.
뒤의 어려운 말들은 이제부터 차근차근 알아보도록 하자. 혹시 중간 중간 모르는 단어가 나온다면 신경쓰지말고 그냥 넘어가도록 하자. 뒷부분에 조금씩 내용이 나올 것이다.

Node.js의 장점

Node.js는 확장성 있는 네트워크 어플리케이션 개발을 위해 설계되었다고 한다. 즉, 서버를 위해 설계된 플랫폼이라는 것이다. Node.js의 가장 큰 장점은 위에서 나왔듯이 이벤트 기반, Non-Blocking I/O라고 할 수 있다.

단일쓰레드 이벤트 루프 기반 비동기방식(Non-Blocking I/O)

하나의 쓰레드가 request를 받으면 바로 다음 처리에 요청을 보내놓고 다른 작업을 처리하다가 먼저 요청한 작업이 끝나면 이벤트를 받아서 응답을 보낸다.
동시 request가 오더라도 처리가 완료될때까지 기다리지 않아도 되기 때문에 서버 부하가 적다.
반대되는 개념으로는 쓰레드 기반 동기 방식이 있다.
쓰레드 기반 동기방식 (Blocking I/O)
하나의 쓰레드가 request를 받으면 모든 처리가 완료될때까지 기다리다가 처리결과가 완료되면 다시 응답을 보냄
기존 업무 처리가 완료되기 전에 또다른 request가 있으면 새로운 쓰레드가 업무를 처리함.
동시 request가 많은 경우 많은 쓰레드가 필요하게 되어 서버 과부하

추가적인 Node.js의 장점

V8엔진의 좋은 성능
웹 프론트 개발자가 비교적 쉽게 백엔드 개발까지 할 수 있다.(JavaScript 언어 사용)
JSON 지원
JSON은 오늘날 데이터 표현을 위한 실질적 표준이다.

Node.js로 할 수 있는 것들?

그래서 우리는 Node.js로 어떤 것들을 할 수 있을까?

The Internals of Node.js

출처

Node.js란?

Node.js의 장점과 특징

Node.js의 내부 동작