티스토리 뷰

시리즈/Web

웹 서버 종류와 WAS

빅또리 2021. 2. 15. 23:28

Web Server vs Application Server 

 

 

참고 : https://www.educative.io/edpresso/web-server-vs-application-server

 

 

 

 

 

 

 

Web Server

 

출처 : netcraft

 

웹서버 점유율 그래프이다. 이 중 nginx나 아파치는 대표적인 오픈소스 웹 서버다.

 

 

 

Apache

예전에 생활코딩에서 아파치로 간단한 웹 호스팅 따라 하기 해봤을 때 이렇게 했다.

 

설치 : bitnami WAMP라는 프로그램 설치 (윈도우 Apache, Mysql, PHP 통합 설치 프로그램)

 

서버 실행

요런 프로그램에서 start 버튼 누르면 웹 서버 실행됨.

파일 제공 : 브라우저 요청에 따라서 htdocs 디렉토리에 있는 파일 가지고 응답 보냄.

               (C:\Program Files (x86)\wampstack\apache2\htdocs)

               URL의 path에 적힌 파일을 보내거나 / (root) 면 기본적으로 index.html

 

 

 

 

 

 

 

 

 

WAS

Web Application Server

(참고로 이름이 비슷한 AWS는 아마존 웹 서비스 약자로 배포할 때 나오는 거다)

 

 

WAS의 대표 격인 톰캣을 통해 알아보자

 

Apache Tomcat

 

아파치 소프트웨어 재단에서 개발. 웹 서버와 연동하여 (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

위에 있는 그림 2개 출처 : Robert Zhu

참고 : https://hackernoon.com/from-mvc-to-modern-web-frameworks-8067ec9dee65

 

 

 

( 👌 다시 본론으로 )

 


 

 

 

 

기타 서버 사이드 프레임워크들

 

맨 처음에 살펴본 것처럼 Web server의 핵심 기능은 HTTP 요청을 기다리고 HTTP 응답 (+정적 파일)을 해주는 것이고

Application server의 역할은 동적인 데이터를 생산해 낼 수 있게 특정 언어의 실행 환경을 제공한다는 것 같음.

 

(더 넓게 보자면 Http 뿐만 아니라 ws 등 다른 프로토콜도 처리할 수 있다던가 다른 측면도 있는 것 같지만 이건 차치하고..)

 

그런데 대부분의 서버 사이드 웹 프레임워크들이 자체 웹서버도 내장하고 있어서 용어 같은 것들이 혼동되기 쉬운 것 같다.

이렇게 정리한 게 진짜 맞는가 앞으로 새로운 프레임워크 경험해볼 때 위의 두 가지 역할에 초점을 맞춰서 써봐야겠다.

 

 

 

node.js / Django

node (javascript)                                            Django (python)

 

'시리즈 > 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
댓글
공지사항
최근에 올라온 글