개요
Web Developoer로써 활동을 하고 있으면서 평소 당연하게 생각한 것들에 대해 다시 돌아보는 와중
WebServer와 WAS에 대해 설명할 수 있나 라는 생각이 들었습니다.
이에 기본기를 돌아보며 정리를 해보려 합니다.
WebServer란?
WebServer는 주로 HTTP통신을 처리하는 서버입니다.
클라이언트가 웹브라우저에서 URL를 통해 서버로 요청을 보내면, 서버는 해당 요청을 받아 일치하는 정적 콘텐츠( HTML, CSS, Javascript, image,... )를 제공하게 됩니다.
WebServer의 특징으로는 동일한 요청에 대해 동일한 파일을 반환합니다.
즉 WebServer는 웹 브라우저의 화면을 구성하는 요소들을 반환한다고 보면 좋을 것 같습니다.
주로 Apache Server, Nginx 등을 사용하고 있습니다.
WAS(Web Application Server)란?
WAS란 Web Server와 Web Container를 가지는 서버입니다.
주로 사용자의 요청을 받아 비즈니스 로직을 통해 처리하며, 데이터베이스 연동이 이뤄지는 작업이 있을 때 사용하는 서버로, 동적 콘텐츠를 제공받게 됩니다.
WebServer와 다르게 화면을 구성하는 요소들을 반환하는 것이 아닌,
화면을 구성하는데 필요한 데이터들을 연산, 데이터베이스 연동을 통한 CRUD 등의 작업들을 수행하고 반환하는 역할을 담당합니다.
주로 Tomcat 등을 사용하고 있습니다.
사용처
위에서 소개했듯이 용도에 따라 사용하는 서버가 다른데요,
페이지를 만들 때는 WebServer, 데이터를 필요로 할 때는 WAS를 사용하면 될 것으로 보입니다.
그럼 실제로는 어떻게 사용하고 있을 까요??
실제로는 두 개를 병합하여 사용하고 있습니다.
Tomcat의 경우 Apache Tomcat으로도 부르는데 이는 2008년부터 Tomcat에 Apache 즉 WebServer가 추가되어 있기 때문입니다.
그럼 Tomcat은 WAS이니 Tomcat만 쓰면 되겠네요???
제가 경험한 개발은 상황에 따라 다르게 사용하는 점이 많다는 것인데요.
Apache Tomcat만 사용해도 제작은 가능합니다.
하지만 Web Browser에서 WebServer로 요청을 보내고, WebServer에서 데이터를 얻기 위해 WAS에 요청을 보내게 됩니다.
이렇듯 서비스가 제대로 동작하려면 다수의 요청을 수용가능해야 하는데요,
WAS로 띄워버린다면 하나의 서버가 너무 많은 요청을 처리해야 하게 되는데 이는 좋지 않은 상황을 발생할 수 있습니다.
또한 WebServer는 요청에 대한 처리가 정적 콘텐츠를 제공하는 만큼 많은 자원을 필요로 하지는 않지만,
WAS의 경우 다양한 비즈니스로직 처리, DB와의 연동을 통해 데이터를 주고받으려면 어쩔 수 없이 많은 자원을 소모할 수밖에 없습니다.
그럼 많은 요청을 처리하기 위해서는 어떻게 해야 할까요??
만약 Apache Tomcat으로 모든 것을 처리할 경우 WAS만 여러 대 띄우게 될 것입니다.
이는 WebServer도 같이 여러 대 뜬다는 것인데요, 이는 불필요하게 서버 자원을 소모하는 요인으로 만약 이렇게 한다면 서버를 띄우는 컴퓨터 혹은 클라우드의 비용이 들게 됩니다.
그렇기에 WebServer와 WAS를 분리하여 가져가며 WebServer는 하나, WAS는 여러 개를 띄움으로써 많은 요청들을 효율적이게 처리하게 하는 방법을 현재 많이 사용하고 있습니다.
하지만 사용자가 많지 않고 WAS로 띄운 서버 성능도 별로 좋지 않아도 된다 하면,
Apache Tomcat에 한 번에 개발하는 것이 번거롭지 않고 편하겠죠.
즉 상황에 맞게 적용하시는 것이 좋을 것으로 보입니다.
References
https://developer.mozilla.org/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_web_server
https://www.ibm.com/topics/web-server-application-server
'Server' 카테고리의 다른 글
[ JPA ] OSIV가 뭐예요? (1) | 2024.11.12 |
---|---|
URL로 어떻게 사이트를 접속할 수 있을까? (9) | 2024.10.23 |
[VM] MAC OS에서 VM으로 Ubuntu 설치 및 실행하기 (3) | 2024.10.13 |
[ Test ] Concert 장애 분석 및 대응 문서 (0) | 2024.08.21 |
[Kafka] Kafka란?( 작성중... ) (0) | 2024.08.11 |