본문 바로가기
더이상 하지 않는 Backend - NodeJS/Node-Express 개론(완)

[O'REILLY] Node & Express - 1장 : EXPRESS에 대하여

by VictorMeredith 2023. 3. 6.

2021.05.01. 발행된 오라일리 노드&익스프레스 교과서를 핵심정리하고 복습하기 위한 포스팅이다.

1. 익스프레스 소개와 특징

- 익스프레스는 '웹과 모바일 앱에 빈틈없는 기능을 제공하는, 최소화되고 유연한 노드 웹 어플리케이션 프레임워크' 이다.

- 자바스크립트(언어)를 기반으로하는 V8엔진(런타임)을 기반으로하는 NodeJS(서버용런타임)를 기반으로하는 프레임워크가 Express이다.

- 특징

 1) 최소화 : 유용한 기능을 제공하되, 최소한의 프레임워크를 제공하고, 익스프레스의 기능 중 필요한 것만 추가하고 필요하지 않다면 제거할 수 있도록 도와준다.

 2) 유연성 : HTTP요청을 받고, HTTP응답을 반환하는 서버의 궁극적이고 근본적인 역할에 충실한다. 

 3) 웹 앱 프레임워크 : 익스프레스는 웹 앱 프레임워크의 서버부분이라고 표현하는 것이 맞다. 

 4) 속도 : 트래픽이 많은 웹사이트에서 최고의 성능을 발휘한다.

 5) 겸손 : 극도로 유연한 미들웨어 시스템을 통해 '내장' 컴포넌트 대신 외부 미들웨어를 사용하는 일이 많다.

 

2. 서버사이드 앱과 클라이언트사이드 앱

- ServerSideRendering(SSR) : 서버에서 HTML, CSS, JS, 이미지, 멀티미디어 자원 등을 결합, 렌더링해서 클라이언트로 전송하는 것

- ClientSideRendering(CSR) : 브라우저가 초기 HTML을 받으면, 자바스크립트를 사용해 DOM을 동적으로 수정하며, 새 페이지 표시할 때 서버에 의존하지 않는다. SinglePageApplication(SPA)라고 많이 지칭한다.

- SEO를 위해 결합하여 사용하는 경우도 있다.(NextJS, NuxtJS) 

 

3. 노드

- 노드와 기존 웹서버 차이 :

 1) 노드는 싱글 스레드이다. 이는 웹 앱을 만드는 작업을 단순화하며, 앱에서 멀티 스레드 성능이 필요하다면 노드 인스턴스를 늘려 해결할 수 있다. IIS와 아파치의 경우, 강력한 하드웨어에서도 성능을 끝까지 쥐어 짤 수 있는 능력을 가지고 있지만, 고급 인력이 필요하고 복잡하며, 러닝커브가 매우 높다.

 2) 컴파일 과정이 포함되지 않아 유지 보수와 배포 과정이 단순해진다.

 3) 노드는 플랫폼 독립적이다. 맥과 windows 에서 자유롭게 사용이 가능하다.

 

4. 노드 생태계 

- 자바스크립트 생태계 구축에 큰 역할을 한 NodeJS와 Express 프레임워크

- MEAN(MongoDB-Express-Angular-Node) 스택을 시작으로, MERN/MEVN/MESN (리액트/뷰/스벨트) 등의 프레임워크 떡칠 생태계가 등장하였다.

- 라이선스도 주의해야한다. 노드생태계의 장점은 다양한 서드파티 패키지를 가져다 쓸 수 있다는 것이지만, 라이선스 정책이 제 각기 다르므로 주의하여 사용해야 한다. npm에서 nlf나 license-report를 검색해보면 자세히 알 수 있다.

 

댓글