Web Server와 WAS

Evie·2024년 11월 25일
post-thumbnail

Web Server? WAS?

Web Server는 써있는 그대로 웹 서버입니다.
그리고 WASWeb Application Server의 약자죠.

그러면 WASWeb Server는 무엇이 다르죠?

Web Server

사용자와 웹 서버 간의 요청-응답

웹 서버는 두 가지의 의미를 갖습니다.

웹 서버는 정적인 데이터를 반환하는 서버입니다.
여기서 정적 데이터가 의미하는 것은 다음과 같습니다 :

  • HTML 문서
  • 이미지 파일 등의 오브젝트

정적 데이터는 즉시 응답 가능한 컨텐츠를 의미한다고 볼 수 있습니다.

웹 서버 소프트웨어를 구동하는 하드웨어도 웹 서버라고 부르지만,
일반적으로 WAS와 함께 언급되는 웹 서버는 정적 데이터를 처리하는 서버를 의미합니다.

웹 서버는 사용자에게서 요청이 들어왔을 때, 웹 서버는 정적 데이터를 처리하고 해당 요청에 대한 컨텐츠를 반환합니다.
동적 컨텐츠를 요청받을 경우 WAS에게 해당 요청을 넘기고, 그 결과를 받아 다시 사용자에게 전달하기도 합니다.

웹 서버는 대표적으로 Nginx, Apache 등이 있습니다.
둘 모두 유명한 웹 서버이기도 하고, 실무에서 많이 사용되기 때문에 나중에 따로 알아보도록 하겠습니다.

WAS

1번: 사용자 - 웹 서버 - WAS 순으로 이어지는 데이터 교환 / 2번: 사용자 - WAS 순으로 이어지는 데이터 교환
그렇다면 WAS는 어떨까요?

WAS는 Web Application Server의 약자로, 주로 동적인 요청을 받아 처리하는 서버입니다. DB 서버와 직접 통신하며 비즈니스 로직을 담당합니다.

일반적으로는 1번처럼 웹 서버에서 WAS로 요청을 넘기지만, WAS가 단독으로 요청을 받는 것도 가능합니다. WAS 역시 웹 서버처럼 HTTP 기반으로 동작하는 데다가 웹 서버에서 처리 가능한 대부분의 기능이 WAS에서도 처리할 수 있고, SSC(Server-Side Code)를 처리할 수 있기 때문에 동적 콘텐츠 전달이 가능합니다.
다만 그렇게 사용하는 경우가 거의 없을 뿐더러 WAS가 바로 요청을 받게 설계된 경우 서버 장애가 발생하기 쉬운 구조가 됩니다.
만약 WAS만으로 요청을 처리하려 하면 WAS는 서버 코드를 처리하면서 동시에 사용자에게 정적 콘텐츠를 전달하고, 요청을 새로 받는 등 다양한 작업을 한 번에 처리해야 하므로 효율이 상당히 떨어집니다. WAS 웹 서버를 앞단에 두고, WAS를 뒷단에 두어 WAS에서는 웹 서버가 처리하기 힘든 SSC만 수행하도록 하는 것이 이상적인 이유죠.

대표적인 WAS로는 Tomcat, Jeus 등이 있습니다.
Tomcat은 Apache를 다루며 같이 다루겠습니다.

마무리

결론적으로
1. 사용자가 요청을 보내면
2. 웹 서버에서 요청을 받고,
3. 이를 WAS에 위임해 세부적인 처리를 해서
4. 결과 반환 시 사용자가 응답을 받습니다.

다만 시간이 지날수록 WAS는 정의하기 나름으로 변하고 있습니다. 대표적 예시로는 Node.js의 express, Python의 Django 등이 있는데 결국 아키텍처의 역량에 달리지 않았나 싶습니다.

틀린 점이나 다른 견해에 대한 피드백은 댓글로 받겠습니다. 짧은 글이나마 읽어주셔서 감사합니다!

참고자료

profile
끄적그적

0개의 댓글