웹 서버 vs 웹 어플리케이션 서버

pudding·2023년 2월 21일
0

일반적으로 서버는 웹 어플리케이션 서버(WAS)와 웹 서버(WS)로 나눠지고, 이는 효율성 때문에 나누어져 사용된다.

** 자주 등장하는 Apache는 오픈 소스 프로젝트를 운영하는 비영리 단체의 이름이다. 굉장히 많은 프로젝트를 운영하고 있고 ws, was 뿐 아니라 요즘 많이 사용되는 Kafka, Hadoop 등도 Apache 재단에서 운영하는 프로젝트이다.

웹 어플리케이션 서버(WAS)

  • 주로 동적(Dynamic)인 컨텐츠를 처리
  • APACHE Tomcat, 제우스, 제티(Jetty), 레진(Resin) 등이 있다.
  • 주로 동적 페이지 생성을 위한 프로그램 실행과 데이터베이스 연동 기능을 처리한다.
  • 누가, 언제, 어떻게 요구하느냐에 따라 다른 내용을 반환하는 페이지를 말한다. 예를 들면, 현재 시각을 보여주는 페이지나 각 사용자에 따른 장바구니 페이지 등이 있다.
  • 동적인 컨텐츠는 상호작용을 통한 데이터 처리가 필요한 경우 동적인 페이지라 한다. 대표적으로 데이터베이스의 처리가 필요한 경우 '동적'이라는 말이 붙는다. (서버가 사용자의 '요청(Request)'에 따라 데이터를 가공처리한 뒤에 생성되어진 웹 페이지를 보여주는 것이다.)

웹 서버로부터 오는 동적인 요청을 처리하는 서버를 웹 어플리케이션 서버라 하고 일반적으로 WAS라 부른다. 웹서버 + 컨테이너로 이루어진 서버라고 이해할 수 있다.

  • 프로그램 실행 환경과 데이터베이스 접속 기능을 제공
  • 여러 개의 트랜잭션을 관리
  • 업무를 처리하는 비즈니스 로직 수행

등의 기능을 수행한다.

웹 서버(WS)

  • 주로 정적(Static)인 컨텐츠를 처리
  • NGINX, APACHE httpd 등이 있다.
  • 주로 정적 페이지인 HTML, 이미지, CSS, JS 파일을 웹 클라이언트에 제공할 때 웹 서버를 사용하고 동적인 처리가 필요할 땐 WAS로 요청을 넘긴다.
  • 누가, 언제 접속해도 항상 같은 페이지를 보여주는 것을 정적 사이트라 한다.
  • 요청한 파일이 없거나 문제가 발생하면 404 페이지와 같이 특정한 코드 값을 전달해준다.
  • 데이터베이스 쿼리문 처리와 같이 동적인 요청이 들어오면 이 요청을 웹 서버에서는 처리가 불가능하므로(웹 서버는 정적처리만 하기 때문에) 동적 처리를 위해서 WAS로 요청을보낸다. (WAS로 요청을 보내지만 실질적으로는 WAS안의 컨테이너(Container)에서 요청을 처리한다.)

여기서 Container란 서블릿의 생명주기를 관리하고 JSP를 서블릿으로 변환하는 기능을 가진 프로그램이다.

참고하면 좋을 자료: https://makemethink.tistory.com/169

웹 서버와 웹 어플리케이션 서버를 위 그림과 같이 한 HW 박스에서 가동하면 서비스 운용 관리 측면에서는 좀 더 간편하지만, 메모리 효율을 높이기 위해서는 다른 HW 박스에 각각 배치하는 것이 더 좋다. 다만 이를 위해서는 해당 웹사이트의 트래픽 중 정적 페이지와 동적 페이지의 요청 건수 비율을 분석해서 박스간의 메모리 사이즈 비율을 조절해야 한다.

profile
영차 영차 개발 공부 기록 하기

0개의 댓글