자바스크립트와 Node.js 그리고 express.js

자바스크립트를 중심으로 UI 작업을 해오던 웹개발 입문자의 입장에서 백엔드는 생소합니다. 프론트엔드만으로는 충분하지 않은 상태에서, 자바스크립트로 백엔드 입문 과정에서 많이 언급되는 Node.js와 Express.js 의 특징에 대해 간략하게 정리했습니다.

자바스크립트와 Node.js 그리고 express.js
Photo by Gabriel Heinzer / Unsplash

UIUser Interface를 제어하는 목적으로 자바스크립트javascript 위주로 작업을 해오다보니 백엔드Backend를 경험하기가 어려운 부분이 많습니다.

그래서 저도 공부한 내용들을 정리할 겸 작성한 내용입니다.

자바스크립트가 어떤 변화를 겪었고, 그로 인해 어떤 일을 할 수 있게 되었는지 - 그 중에서도 백엔드와 연관된 이야기입니다.

Node.js(노드.js)

일단 백엔드Backend에서의 자바스크립트를 이야기하면 가장 대표적으로 나오는 프레임워크 - 익스프레스JSexpress.js를 이야기를 하게 됩니다.

그런데 Express는 Node.js라는 런타임환경에서 작동하기 때문에, 그 밑바탕이되는 노드JSnode.js부터 이야기해야겠습니다.


Daffodils on a computer desk
Photo by Firmbee.com / Unsplash-

보통 웹사이트를 처음 만드는 사람들은 HTML, CSS를 배웁니다.

화면에 레이아웃을 구성하고 디자인 요소를 구현하는걸 익히고 나면, 사용자와 상호작용할 수 있는 자바스크립트를 익힙니다.  

클릭하거나 스크롤 하는 동안 벌어지는 일들을 javascript로 제어할 수 있습니다.

💡
기본적으로 javascript는 웹브라우저에서만 작동했습니다.

Node.js는 이런 자바스크립트를 웹브라우저에서 벗어나서도 작동할 수 있게 만들어줍니다.

그럼 어떻게 사용하려고 node.js를 쓰는것인가?

웹 개발을 처음 접하는 사람 입장에서는 웹브라우저에서만 돌아가던 언어가 이제 다른 곳에서도 돌아가게 됐다는 이야기가 무슨 의미인지 이해하기 어렵습니다.

도대체 어디서 작동하게 하겠다는 이야기냐? 라는 원초적인 질문이 생기기 마련인데요.

node.js를 설치하면 맥이건 리눅스건 윈도우건 어디서든지 자바스크립트를 실행시킬 수 있습니다. 브라우저를 벗어나서 작동할 수 있다는 이야기죠.

node.js가 나오기 이전에는 웹사이트를 만들기 위해서 서버를 구축하는데 php, java, c#와 같은 다른 언어를 이용해야 했습니다.

서버가 있어야 사용해야 데이터베이스에도 접근하고, 사용자 인증도 하고, 파일 업로드도 받을 수 있기 때문이죠.

그런데 서버에서는 자바스크립트가 돌아가지 않았습니다. 그래서 자바스크립트 이외의 언어가 필요했습니다.

💡
javascript는 웹브라우저에서만 작동하는데, 일반적으로 서버에서는 웹브라우저가 돌아가지 않습니다.
My desk setup
Photo by Firosnv. Photography / Unsplash

통상적으로 웹브라우저라는 것은 사용자에게 그래픽적인 요소들을 보여줘서 마우스로 클릭하며 쉽게 쓸 수 있는 GUIGraphic User Interface 에서 작동하는 어플리케이션입니다.


"sudo" stands for "superuser do". With sudo, commands are executed with superuser privileges.

Linux (Ubuntu) bash terminal in Windows subsystem for Linux (WSL).
Photo by Gabriel Heinzer / Unsplash

하지만 서버는 통상적으로 그래픽 요소가 없이 텍스트만 나열되는 CLICommand Line Interface 입니다. 마우스를 쓸 일 없이 그냥 키보드로 모든것을 제어합니다.

그런데 node.js가 이제 CLI 에서도 자바스크립트를 작동하게 만들어주었습니다.

node.js를 사용함으로써 얻는 이익

node.js를 설치하면 어디서든지 javascript가 돌아간다고 했죠? 보통 서버로 많이 사용하는 OS가 리눅스입니다.

맞습니다.

이제 node.js를 리눅스에 설치함으로써 javascript를 이용해서 데이터베이스도 접근하고, 사용자 인증, 파일 업로드 같은 일도 할 수 있게 된 겁니다.

웹사이트를 만들기 위해서 html,css, javascript, 백엔드용 언어(java, php, c# 기타등등)을 익혀야했던것과 달리 이제는 javascript 하나면 다 할 수 있게 된거죠.

브라우저에서만 작동하던 - 한정적으로 사용되던 언어의 활용 폭을 넓혀주는 혁신적인 변화입니다.  

그 밖에도 node.js가 가진 장단점들이 많지만, 일단은 언어를 추가적으로 배우지 않아되는 점을 제일 강점으로 꼽고 싶습니다.

학습에 드는 노력과 비용을 줄여준다는 측면에서도 꽤 이익이 큽니다.


익스프레스(Express.js) - 웹 어플리케이션 프레임워크

이제 자바스크립트로 서버를 만들 수 있는 - Express에 대해서 간단하게 소개하겠습니다.

Express는 node.js 환경에서 작동하는 웹 어플리케이션 프레임워크입니다.  

프레임워크는 여러가지 도구를 모아놓은 것들을 이야기합니다. 프레임워크 없이 작업하려면 선행해서 준비해야할 일들이 많습니다.

이를테면 가구라도 만들려면 온갖 공구가 필요하죠?

망치, 드릴, 톱 등 여러가지가 필요합니다.
만약에 우리가 직접 망치도 만들고 톱도 만들어야한다면 준비과정이 험란하겠죠?

프레임워크는 이런식으로 도구들을 잘 준비해서 마련해놓은 공구상자 같은 역할을 합니다.

그 공구들을 만드는 과정은 생략하고 이제 그것들을 어떻게 쓰는지만 배우면 되는거죠.

Express는 자체적으로 지원하는 기능도 많지만, 별도의 라이브러리들을 추가로 설치할 수 있습니다.

기능의 추가, 확장이 용이하기 때문에 많은 곳에서 사용됩니다. 간단한 API서버를 구축하기에도 용이한 편입니다.

API서버를 구축해두면 웹사이트 뿐 아니라 REST API 방식으로 통신할 수 있는 다양한 디바이스 - 모바일 앱, 키오스크 등등 여러 곳에서도 활용할 수 있습니다.

그래서 다양한 분야에서 Express가 사랑받고 있습니다.