Node.js 가 뭔가요? 대체 왜 개발자들은 Node.js 에 열광하나요?
이번 포스트에서는 Node.js 를 찍먹(?) 해보려고 합니다.
실력에 자신만만 하지는 않았으나, 무엇 하나 자신 있게 대답하지 못하는 제 자신에 대하여 큰 실망과 좌절을 했지만
.
.
.
.
.
.
극~뽁 ⭐️ 아주 자~알 극복해냈어
흔들리는 멘탈을 부여잡고, 면접관님들께서 여쭤보신 질문들을 하나 하나 곱씹어 보았습니다. 사실 당연히 알았어야 하는 부분임에도 불구하고 귀찮음 (핑계 스택 +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 개발자 분들을 많이 구하시는 것 같더라구요. 특히 스타트업 기업들이 많이 사용하는 것 같습니다. 수요가 점점 늘어나고 있는 만큼 취업을 준비하시거나 혹은 이직을 준비하시는 분들도 공부해 보시면 좋을 것 같습니다!
이 글은 제 첫 블로그 포스트입니다. 코로나 이후로 많이 무료함을 느껴서 뭔가 해보자라는 생각을 하게 되었고, 마침 이직 준비 + 공부 목적에 모티베이션을 주기 위해 시작하자고 마음을 먹었는데, 모쪼록 지속적으로 포스팅 해서 저도 공부가 되고, 이 글을 보시는 다른 분들도 도움을 얻으실 수 있으시면 좋겠습니다.
'Studying > JavaScript & Frameworks' 카테고리의 다른 글
[Node.js 떠먹여 주는 남자] Node.js 와 MongoDB 설치하기 (macOS) (0) | 2022.03.09 |
---|---|
[Node.js 떠먹여 주는 남자] 샘플 코드에 모델 추가와 MongoDB 연결하기 (0) | 2022.03.09 |
[Node.js 떠먹여 주는 남자] 컨트롤러, 서비스 를 이용한 샘플 코드 확장 (0) | 2022.03.08 |
[Node.js 떠먹여 주는 남자] Node.js, Express.js 를 이용한 샘플 코드 (0) | 2022.03.07 |
[Node.js 떠먹여 주는 남자] Express.js (2) | 2022.03.05 |