오늘은 계속해서 사용하고 있지만 자세히 알지 못하는 웹 서버와 웹 어플리케이션 서버에 대해서 정리해보려고 한다. 웹 서버와 웹 어플리케이션 서버의 차이를 알기전에 정적페이지(정적인 컨텐츠)와 동적페이지(동적인 컨텐츠)에 대해서 먼저 정리하고 가자
1. 정적인 페이지와 동적인 페이지
1) 정적 페이지(Static pages)
- image, html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들을 의미
- 웹 서버에서 요청에 알맞은 파일을 반환하며, 항상 동일한 페이지를 반환. 말 그대로 정적인 컨텐츠
- 웹 서버에서 제공
2) 동적 페이지(Dynamic pages)
- 들어온 요청에 맞게 동적으로 만들어진 컨텐츠를 의미
- 데이터베이스, 서버 내 로직 등을 활용해 만들어진 컨텐츠를 반환
- 웹 어플리케이션 서버에서 제공
2. 웹 서버(Web Server)와 웹 어플리케이션 서버(WAS : Web Application Server)


1) 웹 서버(Web Server) : HTTP 요청을 받아 Static contents(정적 컨텐츠)를 제공하는 서버, 프로그램
- HTTP 프로토콜을 기반으로하여 클라이언트의 요청을 서비스하는 기능을 담당

- 종류 : Apache Server, Nignx
- 기능
(1) 정적인 컨텐츠 제공
- WAS를 거치지 않고 바로 요청한 컨텐츠를 제공할 수 있음
(2) 동적인 컨텐츠 제공을 위한 요청 전달(WAS로)
- 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달
2) 웹 어플리케이션 서버(WAS : Web Application Server) : 다양한 서버 내 알고리즘, 비즈니스 로직, DB 조회 등 클라이언트 요청에 따라 동적인 컨텐츠를 제공하는 서버, 프로그램
- HTTP 프로토콜을 기반으로하여 클라이언트의 요청에 따라 구현된 비즈니스 로직을 통해 동적으로 만들어진 컨텐츠를 반환

- 종류 : Apache Tomcat, JBoss, Jeus, Jetty, Resin 등
- 기능
(1) 프로그램 실행 환경과 데이터베이스 접속 기능 제공
(2) 여러 개의 트랜잭션을 관리
(3) 업무를 처리하는 비즈니스 로직 수행
* 참고
> 사실 WAS의 의미가 조금 다양하다.
WAS = Web server + Web container라는 곳도 있고, WAS = Web server와 APP 간의 미들웨어라고 하는 곳도 있고, WAS = WAS + APP 라고 해서 한번에 모든 기능을 한다고 말하는 곳도 있다.
대부분의 경우, Web server + Web container 설명하고 있으니 그렇게 이해하자.
> 그렇다면 여기서 말하는 컨테이너(container)는 무엇일까?
간단하게 정리하면 웹 서버가 보낸 JSP, PHP, ASP.net 등의 파일들을 실행하고 수행결과를 다시 웹 서버로 보내주는 역할을 한다. 결국, 웹 어플리케이션 서버는 웹 서버에서 요청을 받고, 이를 웹 컨테이너로 보내 로직(알고리즘, DB 연결 등)을 수행하고 그 결과를 다시 웹 서버로 보내 최종적으로 클라이언트에게 보내주는 것이다.
3. WAS가 Web Server의 모든 기능을 수행하지 않고 분리하는 이유는?
1) 기능을 분리하여 서버 부하를 방지
- WAS는 DB 조회, 다양한 로직을 수행하기 바쁘기 때문에 단순한 정적 컨텐츠는 Web Server에서 빠르게 클라이언트에게 제공하는 것이 좋음
- 정적 컨텐츠 요청까지 WAS에서 수행하게되면 부하가 커지게 되고, 동적 컨텐츠 처리가 지연됨에 따라 수행속도가 느려진다.
2) 물리적으로 분리하여 보안을 강화
- SSL에 대한 암복호화 처리에 Web Server 사용
3) 여러 대의 WAS를 연결해 로드밸런싱 용도로 사용
- Fail over, Fail back 처리에 유리
- 대용량 웹 어플리케이션의 경우, Web Server와 WAS를 분리하여 오류가 발생한 WAS를 사용하지 않고, 다른 WAS를 사용하게 만듦으로써 무중단 운영을 가능하게 함
4) 여러 언어의 웹 어플리케이션 서비스 가능
- 하나의 서버에서 PHP Application, Java Application를 함께 사용하는 등과 같이 여러 웹 어플리케이션의 활용이 가능해짐
- 톰캣은 Java 언어만 해석이 가능. JSP 경우는 처리가 가능하지만 PHP는 실행이 불가능 -> Web Server로 아파치를 사용해 PHP를 사용할 수 있게 만들 수 있음
결론적으로, 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server, WAS를 각기 사용한다!
참고
https://binux.tistory.com/32
https://studium-anywhere.tistory.com/19
https://rrhh234cm.tistory.com/456
'TIL > CS' 카테고리의 다른 글
[TIL/CS] 도메인과 아키텍처 (0) | 2023.03.09 |
---|---|
[TIL/CS] OSI 7 계층 (0) | 2022.12.07 |
[TIL/CS] 로드밸런싱(Load Balancing)과 로드밸런서(Load Balancer)이란? (0) | 2022.10.07 |
[TIL/CS] 외부망, DMZ, 내부망이란? (0) | 2022.10.07 |