본문 바로가기
etc

웹서버 VS WAS

by 스르나 2020. 9. 5.

이번글에서는 웹서버와 was의 차이점을 구분하면서 2가지의 정의를 살펴볼것이다.

 

웹서버

우선 웹서버는 간단하게 설명하면 2가지 기능이 있는데 우선 첫번째 기능으로는 사용자의 요청이 정적인 컨텐츠일때 정적 컨텐츠를 응답해주는 것이다.

 

예를들어 사용자가 웹브라우저롤  jpg파일을 요청했을때 이 jpg파일은 분명 정적 컨텐츠이다. 즉, jpg파일을 보내주는 것 이외에 별도의 액션이 필요하지 않은 요청을 받은 것이다.

 

이럴때 서버는 요청을 확인하고 jpg파일을 보내주기만 하면된다.

 

두번째 기능은 사용자의 적인 컨텐츠 요청을 받았을때 이 요청을 was로 보내주고 was에서의 결과를 받아 사용자에서 보내주는 것이다.

 

웹 서버의 대표적인 예로는 Apache가 있다(추후 설명하겠지만 Apache와 Apache Tomcat은 다른 것이다.)

 

 

WAS

 

was는 사용자의 동적인 컨텐츠 요청이 왔을때 이 동적인 부분을 처리하고 그 결과물을 만들어주는 역할을 한다.

 

우선 이 동적인 요청이 무엇인가 설명하기 위해 한가지 예를 들어보자.

 

우리가 영화관 예약 홈페이지를 만든다고 생각을 해보자. 분명 영화관에서 상영되는 영화는 주기적으로 영화가 바뀐다. 즉, 해당 날짜마다 보내줘야할 영화가 다르고, 날짜마다 상영시간 또한 다르다. 이때 이 영화와 영화 상영시간이 다른 페이지를 일일이 html을 이용해서 만든다음 서버에 올려서 반응한다면 이것은 굉장히 힘든일이다.

 

즉, 동적인 요청이란 특정 시간, 상황에 따라 페이지에 나타날 정보가 다른 요청을 의미한다.

 

그래서 이런 동적인 요청을 받았을때 영화와 상영시간을 DB같은 것에서 불러와서 그때마다 다른 페이지를 만느는 was가 필요한것이다. 아래의 이미지를 보면 좀 더 이해하기 쉬울 것이다.

 

출처: https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

 

was의 대표적인 예로는 Apache Tomcat이 있다.

웹 서버, was를 왜 따로 두는가?

여기 까지 봤다면 이런 생각이 들 수 있다.

 

"아니 그럼 was로 정적은 요청도 처리하게 해서 was하나로 모든것을 처리 할 수 있잖아??"

 

물론 틀린것은 아니다. 하지만 이 둘을 따로 분리하는것이 이점이 있다.

 

  • was는 다양한 로직을 처리하기 바쁘다. 동적인 컨텐츠까지 처리하게 모든일을 시키기에는 서버에 부하를 줄 수 있다.
  • was와 웹서버를 따로 두면 장애 대응에 유리하다.예를 들어 오류가 발생했을때 웹서버가 was의 이용을 막고 에러페이지(정적 컨텐츠)를 보내준 사이 was를 재시작하면 사용자는 시스템에 큰 문제가 생긴것을 모른다.

 

 

결론

결론은 웹서버와 was모두 현재 사용되고 있는 것이다. 둘다 각각의 이점이 있고 함께사용할 때 이점이 더욱 좋아진다.