톰캣이 다운돼서...아파치가.. 노드가...
서버 관련하여 용어를 듣다보면 많이 듣게 되는 것들이다.

  • Apache, Nginx
  • Tomcat
  • Django, Spring
  • Node.js

우선 서버에 관련해서 종류를 먼저 나눠야할 필요가 있다.

A. Server

1. 웹 서버 (Web Server)

📌 HTTP 요청을 받아 static content(ex: HTML, 그림, 소리, 파일 등)를 제공하는 서버, 프로그램

ex) Apache, Nginx

 

2. 웹 애플리케이션 서버 (WAS : Web Application Server)

📌 서버 내 알고리즘이나 DB 조회 등 동적 요청을 처리하는 서버, 프로그램
실무에서 자주 듣던 용어중 하나.(??? : WAS 서버 ip가 어떻게 되나요?)

ex) Tomcat, JBoss

  • static content : 사용자에 관계없이 동일한 결과를 보여주는 컨텐츠
  • dynamic content : 사용자에 따라 달라지는 컨텐츠


그렇다면 굳이 Web Server를 따로 둘 필요가 있나?그냥 WAS 하나로 돌려버리지?
라는 생각을 할 수도 있지만, 위에서 적은 것처럼 WAS는 동적 요청을 처리한다. 한마디로 더 복잡한 작업이다.

 

즉, 정적 요청보다 많은 리소스가 필요하게 된다. 

 

만약 WAS를 혹사시키게 되면 나중엔 WAS가 죽어버릴 수도 있다(...)
그렇기 때문에 정적 요청과 동적 요청을 받는 서버를 분리함으로써 부하를 줄인다. (Web Server + WAS)

 

3. 데이터베이스 서버 (Database Server)

📌 말 그대로 DB를 저장하는 서버.

 

용량이나 보안적 측면에서 WAS와 나누어 DB server를 따로 개설하는 경우가 있다. 
그래서 나의 경우에는 실무에서 보통 WAS 서버와 DB 서버에 관련한 얘기를 많이 듣게 된다. 

 

그렇다면 Node.js나 Spring boot는 어디서 나오는 용어인가 싶을 수도 있다.
걔네들은 웹 서비스 개발을 위한 프레임 워크다.


 

 

B. Web Framework

 

위에는 서버에 대한 종류를 다뤄봤다.

근데 결국 서버에서 내가 원하는 대로 동작을 하고, 그것이 제대로 작동이 되어야한다.(웹 서비스)
(쇼핑몰에 접속은 되는데, 로그인이 안된다던지 구매가 안된다던지 .. )

 

여기서 웹 프레임워크를 쓰게 되면 미리 작성된 코드를 제공하기 때문에 웹 애플리케이션 및 웹 사이트 개발에 쓰인다.

꼭 써야하나요? -> 안 써서 굳이 노가다할 필요는 없습니다.

 

📌 동적인 웹 페이지나, 웹 애플리케이션, 웹 서비스 개발 보조용으로 만들어지는 애플리케이션 프레임워크의 일종

ex) Spring, Django, Express.js, Nest.js

 


 

 

C. Node.js는 웹 서버인가?

이러면 얼추 자주 듣게된 용어들이 어떤 종류이고, 무슨 역할을 하는지 감을 잡게 된다.
근데 Node.js가 빠져있는데? Node.js는 웹프레임워크인가, WAS인가, 웹서버인가?

 

정의된 내용으로 서술하자면,
📌 Node.js는 V8으로 빌드된 자바스크립트(JavaScript) Runtime(실행환경)이라고 한다.

 

자바스크립트는 웹 브라우저가 없으면 사용할 수 없는 언어다.
근데 Node.js를 사용한다면? 브라우저 없이도 사용할 수가 있다.

또한 원래 같았으면 서버를 구축할 땐 언어를 다른 언어를 써야하는 경우가 있는데,
Node.js 는 뒤에 확장자를 보다시피 자바스크립트를 쓰고있으므로 한 가지 언어로 웹 페이지를 만들 수 있다는 장점이 있다. 


📌 Node.js는 웹서버 기능을 가지고 있는거지 서버라고 할 수 없다.