회사에서 사내 랜딩 페이지 백엔드를 구축해보라는 과제를 받아서 도전해본 것들을 블로그에 정리하며 개념을 학습하고자 한다.
사실 개발하면서 책과 각종 자료들을 참고하긴 했으나 개념 학습 없이 도입하고 따라친 것들이 많아서 이 참에 정리하고자 했다.
1. express 도입 이유
단순하게 내가 프론트엔드 개발자여서 JavaScript에 익숙했기 때문에 당연하게 express를 사용하고자 했다.
파이썬으로 하는 법도 있지만 (자바는 몰라서..) 익숙하지도 않고 이왕 하나의 언어로 한 번 프론트 , 백 모두 해보자라는 생각에서 출발하게 되었다.
2. About Node.js
Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다
* 런타임 : 특정 언어로 만든 프로그램들이 실행될 수 있는 환경을 의미
기존 JavaScript는 HTML에 종속되어 있는 언어라고 할 수있다. 즉, HTML을 조작하고 변경하는 용도로 사용하는 것이다.
그러나 브라우저에 들어 있는 JavaScript 해석 엔진이 있었고 브라우저 내에서만 JS 실행이 가능했다.
그러나 2008년 구글에서 V8 엔진을 통해 만든 크롬을 출시 하였고 이 성능이 너무나 좋아 이를 바탕으로 node.js(V8)이 생겨났다.
이젠 더이상 브라우저 내에서만 국한되는 것이 아닌 다른 환경에서도 JavaScript를 실행할 수 있게 되었다.
3. Node.js 장단점
먼저 Non-blocking I/O의 개념에 대해 이해를 해야 한다. Node.js는 모든 요청을 한 번에 받고 순서에 관계 없이 처리 속도가 빠른 것부터 결과를 보여준다. 즉 누군가 후순위를 요청을 해도 앞 요청이 끝나기 전까지 기다릴 필요가 없다는 점이다.
따라서 Node.js는 요청이 많은 서비스에 유리하다. 즉, SNS나 채팅 같이 엄청난 요청들이 계속 이루어지는 서비스들에 강점을 보인다.
또한 Spring을 공부해보진 않았지만 코드가 짧고 쉬워서 빠른 개발 스프린트가 가능하다는 것 또한 강점이다.
그리고 넷플릭스 같은 대기업들도 노드로 서버를 구축하고 있기 때문에 안정성과 보안 등에서도 다른 것들과 꿀리지 않을 것이란 생각이 든다.
그러나 Node.js는 하나의 스레드 즉 단일 스레드에서 실행이 된다. 그렇기 때문에 CPU 연산이 많이 요구되는 작업들은 감당하기 버거워 한다. 물론 멀티 스레드처럼 보이게 하는 방식도 있지만 단일 스레드란 한계는 명확하기 때문에 CPU 용량이 많이 사용되는 작업들은 다른 언어를 사용하여 구축하는 것을 추천한다.
4. Express
Express는 Node.js를 사용하여 쉽게 서버를 구성할 수 있게 만든 클래스와 라이브러리의 집합체 즉 , 웹 애플리케이션 프레임워크이다.
또한 프레임워크이기 때문에 각종 라이브러리와 미들웨어 등이 내장되어 있어 개발에 용이하다.
사용 방법
1) 설치
npm install express --save
2) 사용 예시
const http = require("http");
const express = require("express");
const app = express();
const server = http.createServer(app);
server.listen(3000);
'BackEnd Skils' 카테고리의 다른 글
백엔드 입문 (1) - Node.js로 백엔드 시작해보기 (1) | 2024.11.27 |
---|---|
백엔드 사전 지식 (3) - 자바스크립트 생태계 (1) | 2024.11.26 |
백엔드 사전 지식 (2) - 백엔드 배포 방법부터 클라우드 서비스까지 (0) | 2024.11.26 |
백엔드 사전 지식 (1) - DNS 부터 테스트 그리고 배포까지 살펴보기 (1) | 2024.11.25 |
Node.js + express 로 백엔드 구축 도전기 (2) - 프로젝트 셋팅 (4) | 2024.09.06 |