카테고리 없음
Web Server와 Web Application Server의 차이를 알아보자
Dodledd
2024. 7. 9. 21:46
먼저 Web server와 Web Application Server를 이해하기 위해 알고가면 좋은 것들이 있다.
Static Pages와 Dynamic Pages
Static Pages
정적인 페이지, 즉 이미 만들어져 컴퓨터에 저장되어 있는 파일들이다.
파일 경로 + 파일 이름을 받아 일치하는 파일 contents를 반환한다.
예를들면 iamge, html, css, javascript 등등
GET/path/index.html
Dynamic Pages
동적인 페이지, 정적인 페이지의 반대로 우리가 어떠한 값(인자)를 주면 서버는 내용에 맞는 contents를 반환한다.
GET/src/getName.me?id="ABC"
Web Server
1. Web Server의 개념
소프트웨어와 하드웨어로 나눠진다.
Web Server가 설치되어 있는 컴퓨터가 하드웨어,
클라이언트(웹 브라우저)에게서 HTTP요청을 받아 정적인 컨텐츠(Static Pages)를 제공하는 프로그램이 소프트웨어이다.
2. Web Server의 기능
- WAS를 거치지않고 바로 정적인 컨텐츠 제공
- 동적인 컨텐츠 제공을 위해 클라이언트의 요청을 WAS에게 전달,
WAS가 처리한 결과를 다시 클라이언트에게 반환
3. Web Server의 예
- Apache Server
- Nginx
- IIS 등등..
Web Application Server
1. WAS의 개념
- 동적인 처리 즉, DB 조회나 다양한 서비스 로직 처리에 따른 값을 반환하기 위해 만들어진 Application Server이다.
- HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)이다.
- 다른 이름으로는 웹 컨테이너(Web Container), 서블릿 컨테이너(Servlet Container)이라고 불린다.
- WAS는 JSP, Servlet 구동 환경을 제공한다.
- Container은 JSP, Servlet을 실행시킬 수 있는 소프트웨어이다.
2. WAS의 역할
- WAS = Web Server + Web Container 이라고 생각한다.
- 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산 환경에서 사용된다.
- DB 서버와 단짝이라 거의 같이 실행된다.
- 또한 현재 Web Server가 하는 일을 WAS에게 시켜도 성능의 차이가 별로 없다.
3. WAS의 예
- Tomcat
- JBoss
- Jeus 등등..
그럼 왜 Web Server와 WAS가 따로따로 필요할까?
Web Server가 필요한 이유
먼저 Web Server의 하는 일 하나만 생각해보자.
- 클라이언트가 요청한 페이지를 반환하는 도중 이미지가 있다고 생각해보자.
이미지가 반환 되려면 먼저 HTML 파일이 클라이언트로 반환되고 반환된 HTML파일에서 이미지파일을 다시 요청하면
그제서야 서버로부터 이미지파일을 받아온다. - Web Server가 있다면 정적인 파일을 Application Server까지 가지 않고 빠르게 보내줄 수 있다.
그러므로 정적인 컨텐츠만을 담당하고 처리하고도록 기능분배가 되어 서버의 부담을 줄일 수 있다.
WAS가 필요한 이유
웹 페이지에는 정적인 컨텐츠 + 동적인 컨텐츠로 이루어져있다.
만약 Web Server만 사용해서 웹 페이지를 제공한다면 동적인 컨텐츠를 모두 처리해서 한 번에 반환할 수 있을 때까지
클라이언트의 요청에 의한 응답이 느려지게 된다.
또한 Web Server만으로 수행하기에는 자원이 부족하다.
하지만 WAS가 있다면 정적인 페이지는 빠르게 보내주고 그 때 그 때 상황에 맞는 데이터를 DB에 가져와서 제공하므로 자원을 효과적으로 사용할 수 있다.
기능 분리의 장점
- 서버의 부하를 방지할 수 있다.
만약 정적인 컨텐츠도 WAS가 처리하게 된다면 그만큼 할게 많아지게 되고 늦어짐에 따라 클라이언트가 봐야 할 페이지의 반환이 느려지게 된다. - 물리적인 보안 강화 효과
SSL에 대한 암복호화 처리에 Web Server를 사용해서 보안이 강화된다. - 멀티 WAS 서버 운용 가능
Load Balancing을 위해서 Web Server를 사용하고 대용량 웹 어플리케이션일수록 Web Server와 WAS 를 분리하여
무중단 운영이 가능하게 된다.
ex) 1번 WAS서버가 다운 됐을 시 이용을 못하게 막고 2번 WAS서버가 받아준다. 그 사이에 1번 WAS서버의 오류를 해결하고 재부팅하여 장애 극복
결국 자원 이용의 효율성과 장애 극복, 배포 및 유지 보수성을 위해 분리한다.