티스토리 뷰
Web Server vs Application Server
참고 : https://www.educative.io/edpresso/web-server-vs-application-server
Web Server
웹서버 점유율 그래프이다. 이 중 nginx나 아파치는 대표적인 오픈소스 웹 서버다.
Apache
예전에 생활코딩에서 아파치로 간단한 웹 호스팅 따라 하기 해봤을 때 이렇게 했다.
설치 : bitnami WAMP라는 프로그램 설치 (윈도우 Apache, Mysql, PHP 통합 설치 프로그램)
서버 실행 :
파일 제공 : 브라우저 요청에 따라서 htdocs 디렉토리에 있는 파일 가지고 응답 보냄.
(C:\Program Files (x86)\wampstack\apache2\htdocs)
URL의 path에 적힌 파일을 보내거나 / (root) 면 기본적으로 index.html
WAS
Web Application Server
(참고로 이름이 비슷한 AWS는 아마존 웹 서비스 약자로 배포할 때 나오는 거다)
WAS의 대표 격인 톰캣을 통해 알아보자
아파치 소프트웨어 재단에서 개발. 웹 서버와 연동하여 (1) 실행할 수 있는 자바 환경을 제공 (JSP와 자바 서블릿이 실행될 수 있는 환경 / 이 실행 환경을 웹 컨테이너라는 용어로 부름) (2) 관리 툴이나 XML 파일을 편집하여 설정을 변경할 수 있다. (3) HTTP 서버를 자체 내장하기도 한다. [위키피디아]
기본적으로 톰캣 기능의 핵심은 JSP, 서블릿의 실행환경을 제공한다는 것이다.
내장 Http서버가 아니라 자바를 실행시켜 동적인 데이터를 만들어 낼 수 있는 웹 컨테이너에 방점이 찍혀있는 것!
실제로도 웹 규모가 커지면 내장 서버를 이용할 것이 아니라,
apache나 nginx 같은 외부 웹 서버와 연동할 것을 권장한다고 한다.
그런데 이렇게 안 해도 (그냥 작은 웹을 운영할 거면) 내장 HTTP 서버가 있어서 그냥 톰캣만 깔면 웹서버 역할까지 다 해결된다.
참고 : https://www.youtube.com/watch?v=F_vBAbjj4Pk
( ✋ 잠깐 )
JSP (자바 서버 페이지) vs Servlet (자바로 쓰인 서버사이드 프로그램)
JSP : These web pages are developed by inserting Java codes into HTML pages by JSP tags
내부적으로 servlet으로 변환된 뒤 실행된다고 한다.
Servlets : the server-side programs written in Java
[ 참고 : upGrad.com JSP vs Servlet ]
보통 프레임워크의 MVC 패턴에서 Controller역할에 Servlet, View역할에 JSP가 쓰인다고 생각하면 되나 보다.
MVC to Modern Web FrameWork
참고 : https://hackernoon.com/from-mvc-to-modern-web-frameworks-8067ec9dee65
( 👌 다시 본론으로 )
기타 서버 사이드 프레임워크들
맨 처음에 살펴본 것처럼 Web server의 핵심 기능은 HTTP 요청을 기다리고 HTTP 응답 (+정적 파일)을 해주는 것이고
Application server의 역할은 동적인 데이터를 생산해 낼 수 있게 특정 언어의 실행 환경을 제공한다는 것 같음.
(더 넓게 보자면 Http 뿐만 아니라 ws 등 다른 프로토콜도 처리할 수 있다던가 다른 측면도 있는 것 같지만 이건 차치하고..)
그런데 대부분의 서버 사이드 웹 프레임워크들이 자체 웹서버도 내장하고 있어서 용어 같은 것들이 혼동되기 쉬운 것 같다.
이렇게 정리한 게 진짜 맞는가 앞으로 새로운 프레임워크 경험해볼 때 위의 두 가지 역할에 초점을 맞춰서 써봐야겠다.
node.js / Django
'시리즈 > Web' 카테고리의 다른 글
쿠키, 세션, passport.js (0) | 2021.04.30 |
---|---|
proxy와 CORS 2편 (0) | 2021.04.22 |
proxy와 CORS 1편 (1) | 2021.04.22 |
Real Time Web 선택지 비교 (0) | 2021.02.16 |
아주 간단한 웹으로 웹 기본 로직과 http 요청 메소드 이해해보기 (0) | 2021.01.23 |