Studying/JavaScript & Frameworks

[Node.js 떠먹여 주는 남자] Node.js 는 무엇인가?

국장 지킴이 앨런 2022. 3. 4. 21:36
반응형

Node.js 가 뭔가요? 대체 왜 개발자들은 Node.js 에 열광하나요?

이번 포스트에서는 Node.js 를 찍먹(?) 해보려고 합니다.

Node.js

최근 이직을 해야겠다 결심을 하였고, 연습 삼아 몇 군데의 회사에 지원해 보았는데, 운이 좋게도 한 곳에서 연락이 와서 기술 면접을 볼 수 있었습니다. 비록 IoT 솔루션 스타트업에서 근무를 하다 보니 온전히 Node.js 웹서버 쪽에만 집중을 할 수는 없었지만 (핑계 스택 +1), 그래도 나름 지속적으로 써왔기에 어느 정도는 알고 있다고 생각했으나, 결과는 처참했습니다.
면접관님들께서 여쭤보시는 질문에 거의 하나도 제대로 대답을 할 수가 없었습니다...

실력에 자신만만 하지는 않았으나, 무엇 하나 자신 있게 대답하지 못하는 제 자신에 대하여 큰 실망과 좌절을 했지만

.

.

.

.

.

.

극~뽁  ⭐️ 아주 자~알 극복해냈어

 

흔들리는 멘탈을 부여잡고, 면접관님들께서 여쭤보신 질문들을 하나 하나 곱씹어 보았습니다. 사실 당연히 알았어야 하는 부분임에도 불구하고 귀찮음 (핑계 스택 +1), 코로나 블루 (핑계 스택 +1) 등등 내실을 다지지 않았던 결과가 이렇게 나타났던 거죠. 하지만 인정할 건 빠르게 인정하고 다음에 다시 이런 질문을 받았을 때 잘 대답하면 된다고 생각을 하기에.. 서론이 너무 길었지만 본격적으로 Node.js 가 무엇인지 알아보고자 합니다.

 

 

스탠포드 대학교 웹 포럼에서는 Node.js 를 이렇게 설명하고 있습니다.

Node.js is a software package consisting of a JavaScript engine and a number asynchronous input / output (I/O) libraries. It allows you to run JavaScript on the command line, outside of your browser.

The JavaScript engine used is the V8 JavaScript engine, which also powers the Chrome Browser. The I/O libraries allow Node.js to interface with files or network devices in an asynchronous manner. This allows Node.js to be used as a fast, lightweight, event-based web server.

출처: 스탠포드 대학교 웹 포럼

 

정신을 부여잡고.. 저게 무슨 말인가 보니 이렇다고 합니다.

  • Node.js 는 자바스크립트 엔진과 다양한 비동기식 인풋 아웃풋 라이브러리들로 구성이 된 소프트웨어 패키지이며, 브라우저 밖에서 자바스크립트 파일을 실행시킬 수 있게 해준다.
  • Node.js 에는 V8 자바스크립트 엔진이 탑재되었는데, 이 V8 엔진은 크롬 브라우저를 작동시키는 엔진이다. 인풋/아웃풋 라이브러리들이 Node.js 가 파일이나 네트워크 기기들과 비동기식으로 소통할 수 있도록 도와주는 역할을 한다. 이것들이 Node.js 를 빠르고, 가벼우며, 이벤트 기반의 웹서버로 사용될 수 있게 해준다.

우리가 일반적으로 아는 자바스크립트는 브라우저 내에서만 실행할 수 있는 형태입니다. 하지만 Node.js 는 크롬의 V8 자바스크립트 엔진이 탑재 된 서버 사이드 자바스크립트 기술이라고 할 수 있을 것 같습니다. 무슨 말인고 하니, 자바스크립트 파일들이 있으면 브라우저 실행 없이 내 컴퓨터에서 직접 자바스크립트 파일들을 실행 시킬 수 있다는 이야기입니다.

그래서 Node.js 를 왜 쓰나요?

라고 물어보신다면 음.. 많은 Use cases 가 있겠지만, 저도 공부 목적으로 검색을 하던 중 아주 좋은 설명이 있는 것 같아서 줍줍 해왔습니다.

- V8 - 스크립트 처리하는 인터프리터 중 성능이 좋은 편입니다. http://attractivechaos.github.com/plb/ 같은 것을 보면 (물론 실제 개발 시에는 언어 자체가 병목이 아닌 경우가 많습니다만) 일반 알고리즘 구현 시 V8 자체 퍼포먼스가 좋습니다. 성능이 어느정도 나오는 스크립트 언어라는 점은 확실히 장점이 되겠죠.
- 기본 처리가 비동기 방식이다 - 물론 twisted 등이 있지만, 기본 처리들이 다 비동기여서, I/O 나 DB 질의 수행되는 라이브러리쪽까지 비동기 처리가 되게 되죠. 자바 보다는 느려도 적은 비용으로 중간 성능을 낼 수 있다는 것은 장점이 됩니다.
- Java Script - 프론트엔드 개발자들이 직접 서버 개발을 하기 용이해졌습니다. 또한, 서버-클라이언트가 한 언어로 메인터넌스 된다는 것도 장점이 됩니다. 요새 실시간 업데이트가 필요한 웹 어플리케이션에서 node.js 이름 달고 나오는 것들의 수가 점점 늘어나고 있는 것이 느껴집니다.

출처: https://codingdojang.com/scode/265

 

위의 글 작성자 분께서 여러가지 장점들을 잘 말씀해 주신 것 같습니다. 요즘 프론트 엔드 JS 프레임워크들 특히 Vue.js 나 React.js 가 각광을 많이 받고 있는데, Node.js 와 궁합이 아주 잘 맞는 것 같습니다. 잡 오프닝에 보면 프론트엔드는 React, 그리고 웹서버 백엔드는 Node.js 개발자 분들을 많이 구하시는 것 같더라구요. 특히 스타트업 기업들이 많이 사용하는 것 같습니다. 수요가 점점 늘어나고 있는 만큼 취업을 준비하시거나 혹은 이직을 준비하시는 분들도 공부해 보시면 좋을 것 같습니다!

 

이 글은 제 첫 블로그 포스트입니다. 코로나 이후로 많이 무료함을 느껴서 뭔가 해보자라는 생각을 하게 되었고, 마침 이직 준비 + 공부 목적에 모티베이션을 주기 위해 시작하자고 마음을 먹었는데, 모쪼록 지속적으로 포스팅 해서 저도 공부가 되고, 이 글을 보시는 다른 분들도 도움을 얻으실 수 있으시면 좋겠습니다.

 

다음번엔 Node.js 찍먹편 (2) - express.js 로 돌아오겠습니다. 그럼
반응형