[CS] 웹 서버와 WAS의 관계

무지성개발자·2023년 8월 21일

웹 서버(Web Sever)

클라이언트로 부터 받은 요청을 정적콘텐츠(.html, .jpeg, .css 등)으로 제공하는 서버.

Apache Server, Nginx가 대표적임.

기능

  • HTTP 프로토콜을 기반으로 클라이언트의 요청을 서비스 한다.

    • 정적인 컨텐츠 제공(WAS를 거치지 않음)

    • 동적인 컨텐츠를 제공하기 위해 WAS로 요청을 보내고, WAS에서 처리된 결과를 다시 클라이언트 한테 전달.

WAS(Web Application Server)

DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위한 서버.
웹 컨테이너, 서플릿 컨테이너 라고 불리기도 함.

Tomcat, JBoss, Jeus가 대표적임.

기능

  • 웹 서버의 기능도 할 수 있음.

  • 프로그램 실행 환경과 DB 커넥션을 제공.

  • 여러 개의 트랜젝션 관리.

  • 비지니스 로직 수행.


정적인 컨텐츠 동적인 컨텐츠란?
정적인 컨텐츠는 변하는게 없이 정해져있는 컨텐츠를 말함. 일반적으로 변할게 없는 html페이지(요즘엔 잘 없는듯), 이미지 파일 같은걸 뜻함.
동적인 컨텐츠는 사용자의 행동에 맞춰 변하는 컨텐츠를 말함. 요즘 인터넷 페이지만 봐도 클릭하면 페이지 전체가 바뀌는게 아니라 일부분만 동적으로 바뀌는 모습임. 이런걸 처리하는게 WAS라고 보면 된다.


왜 구분해서 사용할까?

WAS는 웹 서버의 기능도 포함하고 있어서 WAS만 써도 상관은 없다. 하지만 웹 서버를 WAS의 앞에 두고서 사용하면 WAS의 부담을 줄일 수 있고 클라이언트 입장에서도 효율이 좋다.

  • 기능을 분리하여 서버 부하 방지

    • WAS는 제 1목적은 동적인 컨텐츠 제공이다.

    • WAS는 DB처리, 비지니스로직 처리 등 바쁜일을 하기 때문에 단순한 정적인 컨텐츠는 웹 서버에서 처리하는게 클라이언트 입장에서도 빠르고 좋다.

    • 웹 서버가 정적인 컨텐츠를 분담을 안해주면 WAS의 부하는 커지게 된다. 이는 동적 컨텐츠의 처리 수행 속도가 느려질 수 밖에 없다.

  • 물리적으로 분리하여 보안 강화

    • SSL 암복호화 처리에 웹 서버 사용
  • 여러대의 WAS를 사용가능.

    • 웹 서버 하나에 여러 WAS를 연결하여 여유가 있는 WAS에 요청을 보낼 수 있음. 이걸 로드벨런싱이라함.

    • 여러 WAS중 오류가 있는 WAS가 있다면 웹 서버가 해당 WAS에는 요청을 보내지 않도록 하고 해당 WAS를 재시작 할 수 있음.

즉, 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 웹 서버와 WAS를 분리한다. 웹 서버를 WAS 앞에 두고 필요한 WAS들을 웹 서버에 플러그인 형태로 설정하면 더욱 효율적인 분산 처리가 가능.


한 줄평 : 대용량 처리를 위해서는 반드시 웹 서버를 로드벨런서로 사용해서 서버의 분산을 줄여주는게 좋다.

참고 -
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

profile
no-intelli 개발자 입니다. 그래도 intellij는 씁니다.

0개의 댓글