본문 바로가기
개인공부/Node.js

Node.js

by BTSBRINGMEHERE 2023. 11. 20.

서론

사실 이력서에 Node.js에 대한 내용이 하나도 없는 것 같아서 간단하게 배우고 진행해본 Node.js와 express에 대해 작성해보겠습니다.

 

본론

Node.js® is an open-source, cross-platform JavaScript runtime environment.

 

-Node.js 공식 홈페이지에 나온 글귀 입니다.

즉. 노드를 통해 다양한 자바스크립트 어플리케이션을 실행 할 수 있으며, 서버를 실행하는 데에 제일 많이 사용됩니다.

Javascript를 활용하며, Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 갖고 있습니다.

 

내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도 소프트웨어 없이 동작하는 것이 가능하며, 이를 통한 웹 서버의 동작에 있어 더 많은 통제에서 벗어나 여러 가지 기능을 가능하게 합니다.

 

즉, Node.js를 통해 웹어플리케이션이 더욱 발전하게 되었으며, 정적인 홈페이지 뿐만 아니라 쇼핑몰, 티켓 예매사이트, 블로그 등 데이터가 변해가는 사이트를 만들 수 있으며, 여러 개발자가 만든 프로그램과 게임을 웹상에서 구동시켜 안드로이드폰, 아이폰, 윈도우PC, 맥 등 플랫폼의 제약에서 벗어나 어디든 상관없이 실행 가능하게 해줍니다.

 

물론 단순히 웹에서 실행 가능한 게임을 만들려면 JavaScript 만으로도 가능하지만 좀 더 진화 된 프로그램으로 실시간 온라인 채팅, 실시간 온라인 게임 등 실시간 기능을 넣거나, 로그인 기능을 넣어 유저를 관리하고 점수를 관리하는 데이터베이스 기능을 Node.js를 통해 만들 수가 있습니다.

 

간단한 예시

 

 

 

정리

노드는 기본적으로 싱글 스레드, 논 블로킹 모델을 채용하므로 I/O 요청이 많이 발생하면 노드를 서버로 사용하는 것이 좋습니다. 하지만 노드는 CPU 부하가 큰 작업에는 적합하지 않습니다.

 

우리가 작성하는 코드는 모두 스레드 하나에서 처리되기 때문에 코드가 CPU 연산을 많이 요구하면 스레드 하나가 혼자서 감당하기 어려워집니다.

 

즉, 개수는 많지만 크기는 작은 데이터를 실시간으로 주고받는데 노드는 적합니다. 예를 들어 네트워트나 데이터베이스, 디스크 작업 같은 I/O에 특화되었습니다. 실시간 채팅 애플리케이션, 주식 차트도 포함됩니다.

 

결론적으로 노드의 장점은 첫 째, 멀티 스레드 방식에 비해 적은 컴퓨터 자원을 사용합니다.

둘 째, I/O 작업이 많은 서버로 적합니다.

셋 째, 웹 서버가 내장되어 있어 별도의 웹서버를 설치할 필요가 없습니다.

넷 째, 자바스크립트를 사용하기 때문에 JSON 형식과 쉽게 호환됩니다.