본문 바로가기
프로그래밍 언어/node.js

Node.js 개념 및 동작 원리 - 1 (역사)

by 감웅 2024. 1. 1.
반응형

최근에 Node.js 프로젝트를 사이드 프로젝트에서 사용하여 정리할 겸 쉽게 풀어 포스팅해보려 합니다^^

처음 접하시는 분들도 아주 쉽게 이해할 수 있도록 포스팅을 해보려 합니다.

 

그럼 시작합니다!

 

역사


어떤 프로그래밍 언어든지 역사를 알면 도움이 됩니다.

이름에서 보듯 끝에 js라는 키워드가 붙는데, 이는 흔히 알고 계시는 javascript 를 의미합니다.

 

javascript는 기본적으로 브라우저라는 프로그램에서 동작하는 프로그래밍 언어입니다.

브라우저는 화면상에 html 문서를 읽어서 출력해 주는데, javascript를 이용해서 alert 창을 띄운다거나 이벤트를 생성한다거나 하는 작업을 할 수 있게 되었죠.

 

node.js는 이런 javascript를 php나 python 같이 서버상에서 구동할 수 있도록 만들어 놓은 것입니다. (node.js는 인터프리터 언어라 컴파일 언어인 java 같은 언어와는 약간 동작 방식은 다릅니다.)

 

근데 여기서 한 가지 의문점이 있을 수가 있습니다. 이미 서버 프로그래밍 언어는 java, python, php 등 많이 나와있습니다.

근데 왜 새로운 프로그래밍 언어를 만든 것일까요?

 

결론부터 말씀드리면 node.js는 I/O 연산 처리를 비동기 방식으로 처리하여 전체적인 프로그램의 성능을 증가시켜 주는 강점이 있는 언어이기 때문입니다.

 

위의 내용이 다소 어려우신 분들도 있으실 겁니다. 

 

조금 더 풀어보면, 웹 서비스에서 데이터베이스에서 데이터를 가져온다거나 파일을 읽어 들인다거나 하는 경우에는 disk를 읽어야 합니다. 

 

근데, disk는 보통 메모리나 CPU와는 달리 전기신호가 아닌 물리적인 방식입니다. ssd라 해도 하드디스크보다는 빠르지만 RAM보다는 느립니다. 이러한 것들을 일반적으로 I/O 연산이라고 부릅니다.

 

때문에, 이런 I/O 과정에서 cpu의 처리속도보다 disk에서 데이터를 가져오는 속도가 현저히 느리기 때문에 데이터를 가져오는 구간에서 cpu는 disk를 기다리면서 놀고 있는 상태가 됩니다. 

 

node.js가 나오기 전에는 보통의 웹 서버 프로그래밍 언어 대표주자인 java와 php는 주로 disk에서 데이터를 가져올 때 cpu는 기다리는 방식이었습니다. 

 

하지만, node.js는 disk에서 데이터를 가져올 때 cpu가 그것을 기다리지 않고, 대신에 '데이터를 다 가져오면 나에게 알려줘'

라고 미리 말을 하고 다른 일을 하러 갑니다. 

 

이러한 원리로 node.js는 일반적으로 I/O 처리가 많은 프로그램에서 빠른 처리 속도를 보여주게 되는 것이죠.

 

일상생활에서는 식당 웨이팅을 예로 들 수 있습니다.

 

옛날에는 캐치 테이블이나 테이블링과 같은 앱이 없어서 무조건 식당 앞에서 줄을 서서 웨이팅을 해야 했습니다. 즉, 순서가 될 때까지 계속 기다리는 것이었죠. 이것이 전통적인 서버 사이드 언어의 I/O 처리 방식이었습니다.

 

하지만, 요즘은 원격 줄 서기나 식당 앞에 있는 태블릿에 전화번호만 등록하면 카카오톡으로 순번이 다가왔을 때 알림이 오게 됩니다. 알림이 오기 전까지에는 예약자는 마음대로 원하는 것들을 할 수가 있게 되죠.

 

Node.js는 이러한 방식을 이용해서 I/O 처리를 한다고 이해하시면 됩니다.

 

감이 좀 오시나요?

 

이번 포스팅에서는 역사에 대해서 가볍게 정리를 해보았습니다.

 

다음 포스팅에서는 동작원리에 대해서 쉽게 포스팅해 보도록 하겠습니다.

감사합니다^^

 

반응형

댓글