node.js가 무엇인지. 그리고 그 쓰임새는 어떠한지. 또한 웹서버란 무엇인지 정확히 알고 인지하기 위해서 해당 글을 작성하였습니다. 

 

 

 

1. node.js


 

Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다.’ 라고 소개되어있다.

 

여기서 종종하는 오해가 Node.js를 웹서버로 생각하는 것인데 Node.js는 '런타임'이고 그 중에서 '웹서버기능'을 가지고 있을 뿐이다.

 

웹애플리케이션을 개발할 때 JavaScript를 사용하게 되는데

모든 브라우저가 JavaScript 코드를 해석하기 위한 JavaScript Engine을 내장하고 있다.

그중에서 대표적으로 Chrome은 V8, Firefox는 SpiderMonkey, Safari는 Webkit 등등이 있다.

 

Node.js는 Chrome의 V8엔진을 이용하여 브라우저에서 JavaScript를 해석하듯이 서버에서 JavaScript를 동작할 수 있도록 하는 환경(플랫폼) 이라고 생각하면 된다.

 

말그대로 환경(플랫폼)이기 때문에 Node.js 자체로는 아무것도 못한다.

그래서 서버도 직접 구현해 주어야 하는데 Node.js 자체 모듈인 http모듈을 import하여 서버를 생성해 주어야 한다.

 

ex) w3schools에 있는 http server를 만드는 예제 코드

ex2) 우리가 React에서 주로 사용하는 npm create-react-app 역시 자동으로 서버를 구현해주는 것이다.

 

 

 

 

2. 웹서버


 

웹서버 - 클라이언트의 요청에 의해 정적 파일을 제공하는 서버. Apache, NginX, IIS등의 종류가 있으며, 정적파일만 제공할 수 있다.

 

WAS(Web Application Server) - 웹 서버와 웹 컨테이너를 포함한 개념. 웹 서버에서는 정적 파일만 제공하므로, 동적으로 DB와 연결하여 여러 데이터를 활용해 Php, Jsp, Asp로 표현된 페이지를 해석할 수 있어야 하는데 이 역할을 웹 컨테이너가 제공한다

 

리버스 프록시 - 내부 어플리케이션과 외부 클라이언트 사이에 자리잡아서 클라이언트의 요청을 적절한 서버로 보내주는 역할을 한다. 많은 어플리케이션들이 자체적으로 가지지 못한 로드 밸런싱, 보안, 가속화 기능 등 기능을 갖고 있다

 

 

 

왜 웹 서버와 WAS를 분리했을까?

 

1.두개를 분리하면 웹 서버를 한번 거치기에 보안상의 이점 존재.

2. 웹 서버에서 고장난 WAS로 보내지 않고, 그 시간동안 이를 복구시킨다면 사용자는 끊김없이 서버에서 서비스를 제공받을 수 있다 (=fail over, fail back).

(톰캣에서는 웹서버와 WAS의 역할을 모두 하기도 한다.)

 

Node.js는 Apache, 톰캣과 같은 개념과 무엇이 다른가?

 

 Node.js 는 정적 파일 제공과 WAS기능(=언어 해석) 모두 담당한다. Express.js를 통해 정적 파일을 제공하고 나머지가 언어해석, DB연결등을 담당하는 큰 그림으로 볼 수 있지만 나누는 것이 크게의미가 있나 싶다. 그렇다고 Node.js를 사용하면 NginX와 같은 웹 서버를 사용하지 않는 것은 아니다. 기업에서는 NginX나 Apache등의 그동안 쌓인 기술들을 활용하여 이를 리버스 프록시 서버로 활용하여 보안상의 이점과 캐싱등을 통해 속도상의 이점을 갖는다.

 

 

# Express.js란?  node.js 프레임워크로 NodeJS를 사용하여 쉽게 서버를 구성할 수 있게 만든 클래스와 라이브러리의 집합체

 

 

#리버스 프록시

 

 

 

 

3.웹서버와 서버측 프로그래밍 언어


 

서버: 아파치, 톰캣, Node.js

 

서버 측 프로그래밍 언어: Python, PHP, JSP, Node.js(JavaScript 기반)

 

아파치나 톰캣은 Python,PHP,JSP 등과 같이 서버와 그 서버를 프로그래밍하기 위한 언어가 따로 나뉘지만 

Node.js는 JavaScript를 기반으로하여 서버와 언어의 역할을 혼자서 수행한다.

 

 

 

 

 

학습자료


정말 잘 정리된 자료. 꼭 읽어보자.

 

웹 서버와 WAS, 컨테이너의 개념 알아보기 - Easy is Perfect

웹서버와 WAS에 대한 개념이 잘 잡혀있지 않아서 구글링을 하면서 정보를 찾아보다가 좋은 포스팅이 있어서 해당 포스팅을 참조하면서 포스팅해보겠습니다. 포스팅 출처는 아래에 남기겠습니다

melonicedlatte.com

 

 

 

[Web] 웹 서버와 WAS의 차이를 쉽게 알아보자

서버 개발에 있어서 가장 기초적인 개념인 '웹 서버'와 'WAS(Web Application Servier)'의 차이점을 다뤄보려고 한다. 💡 웹 서버 사전적 정의 "웹 브라우저 클라이언트로부터 HTTP 요청을 받아들이고 HTML

codechasseur.tistory.com

 

Reference:

 

웹서버 클라이언트(생활코딩)

https://opentutorials.org/course/3084/18890

 

Node.js란?

https://medium.com/@su_bak/node-js-node-js%EB%9E%80-410ae3749c56

https://www.newiki.net/wiki/Node.js

 

웹서버와 Node.js

https://rltmqj.tistory.com/entry/Nodejs%EB%8A%94-Apache-%ED%86%B0%EC%BA%A3%EA%B3%BC-%EA%B0%99%EC%9D%80-%EA%B0%9C%EB%85%90%EA%B3%BC-%EB%AC%B4%EC%97%87%EC%9D%B4-%EB%8B%A4%EB%A5%B8%EA%B0%80

 

Node.js와 Apache,Nginx를 사용한 리버스 프록시

https://uhou.tistory.com/96

 

Express.js란?

https://velog.io/@madpotato1713/JAVASCRIPT-express%EB%9E%80

 

웹서버와 서버 측 프로그래밍 언어

https://lovestudycom.tistory.com/entry/%EC%95%84%ED%8C%8C%EC%B9%98-%ED%86%B0%EC%BA%A3-Nodejs-%EC%B0%A8%EC%9D%B4

 

 

 

 

'CS > 자료' 카테고리의 다른 글

[CS] 쿠키, 세션스토리지, 로컬스토리지  (0) 2021.12.15
정적파일, 동적파일, 미디어파일  (0) 2021.11.11
CSR , SSR에 대해 알아보자  (0) 2021.11.05
인증 & 인가  (0) 2021.06.29
콘솔, 터미널, 쉘 차이점  (0) 2021.06.20

+ Recent posts