가자미의 파닥파닥 프로그래밍
Web vs Web Server vs WAS(Web Application Server) 본문
Web 이란?
Web은 월드 와이드 웹(World Wide Web, WWW, W3)을 말합니다. 그러면 월드 와이드 웹이란 무엇일까요?
월드 와이드 웹이란 인터넷에 연결된 사용자들이 서로의 정보를 공유할 수 있는 공간을 의미합니다. 인터넷과 같은 의미로 쓰이고
있지만, 사실은 다른 개념입니다. 정확히 말하면 Web은 인터넷의 서비스 중 가장 인기 있는 서비스 중 하나일 뿐입니다.
우리는 구글과 네이버 같은 사이트를 이용하면서 web 서비스를 사용하는 것이라고 할 수 있습니다.
그럼 구글과 네이버 같은 서비스는 어떤 방식으로 우리에게 제공을 하고 있는 걸까요?
그러면 먼저 클라이언트와 서버에 대해서 알아야 합니다. 클라이언트는 쉽게 말해 사용자 또는 소비자라고 생각하면
쉽습니다. 예를 들면 지금 tistory 블로그에 글을 쓰는 서비스를 이용하고 있는 저와 같은 사용자라고 할 수 있습니다.
서버는 클라이언트가 요청한 요청을 받아서 응답을 전달해 주는 역할을 합니다. 클라이언트가 고깃집의 손님이라고 한다면, 고기를 제공해 주는 고깃집 사장님이 서버가 될 수 있습니다. 실제 웹 서비스를 예로 들면, tistory 블로그에 글을
쓰고 나서 완료 버튼을 누르게 되면, 글의 내용을 저장해 달라는 클라이언트의 요청이 서버에 전달이 됩니다.
서버는 클라이언트로부터 받은 요청을 바탕으로 글의 내용을 DB의 저장하는 등의 작업을 처리한 후 정상 처리가 되었다는 응답을 해주게 됩니다.
그럼 서버는 어떤 종류의 요청을 처리할까요? 이것은 Web Server와 WAS를 통해 알 수 있습니다.
Web Server
웹 브라우저 클라이언트로부터 요청을 받아 정적인 컨텐츠(html,. JPEG,. css 등)를 제공하는 컴퓨터 프로그램을
Web Server라고 합니다. Web Server의 가장 큰 특징은 정적인 컨텐츠를 제공하는 역할을 하는 것이 가장 큰 특징입니다.
위의 Web에서 예를 든 것처럼 고깃집을 예로 들면 클라이언트인 손님이 삼겹살을 달라고 하면 삼겹살을 주고, 소고기 안심을 달라고 하면 소고기 안심을 주는 항상 동일한 것을 제공합니다. 여기서 삼겹살, 소고기 안심이 정적인 컨텐츠가 되는 것이지요.
Web Server가 정적인 컨텐츠만 제공한다면 현재 구글이나 네이버처럼 작동되는 서비스를 구현할 수가 없습니다. 왜냐하면 정적인
컨텐츠는 항상 같은 결과만을 내보내기 때문이죠, 즉 검색과 같은 서비스가 작동하지 않고 하나의 페이지 또는 하나의 이미지만
나타나게 될 것입니다. 이러한 문제를 해결한 것이 WAS (Web Appllication Server)입니다.
WAS(Web Application Server)
웹 브라우저 클라이언트로 부터 요청을 받아 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server를 WAS라고 합니다.
WAS는 웹 컨테이너 또는 서블릿 컨테이너라고도 블립니다. 여기서 컨테이너는 JSP 또는 Servlet을 실행시킬 수 있는 소프트웨어를 말합니다. 다시 한번 고깃집을 예로 들어 보겠습니다. 소고기를 주문할 때 우리는 굽기를 선택할 수 있습니다.
레어, 미디엄 레어, 미디엄, 웰던 등과 같이 말입니다. 선택한 굽기에 따라 우리는 서로다른 소고기를 받게 됩니다. 여기서 굽기에 따른 소고기가 동적인 컨텐츠가 되는 것입니다.
그럼 WAS만 가지고 서버를 구축하면 우리가 흔히 사용하는 구글과 네이버처럼 동작을 할까요? 이에 대한 대답은 어느 정도는
맞다라고 할 수 있습니다. 하지만 WAS 만을 사용하면 여러 불편한 점이 생길 수 있습니다. WAS에서는 동적인 컨텐츠를 만들어 내기 위해 여러 가지 작업을 하게 됩니다. 그런데 여기에 정적인 컨텐츠 까지 다룬다고 하면 WAS의 부담이 커집니다. 만약 클라이언트가
몰리게 된다면, 처리하는 속도가 느려지게 되고 클라이언트가 받는 서비스가 느려지게 되는 문제가 발생할 수 있습니다. 그래서
Web Server와 WAS를 같이 두게 됩니다. Web Server에서 정적인 컨텐츠를 빠르게 전달해 주고, 동적인 컨텐츠는 WAS에서
처리하게 하면 위의 문제를 해결할 수가 있습니다.
Web Service Architecture
그러면 우리는 Web Server와 WAS를 가지고 Web Service Architecture를 구성할 수 있습니다. Architecture는 정해진 것은 없고 다양하게 가질 수 있습니다. 예를 들면 클라이언트 - Web server - DB의 구조, 클라이언트 - WAS - DB구조,
클라이언트 - Web server - WAS - DB 구조 등과 같이 말이지요.
그러면 Web Service는 위의 구조를 통해서 어떻게 동작 할까요? 클라이언트 - Web server - WAS - DB의 구조일 때
동작 과정입니다.
- Web Server는 웹 브라우저 클라이언트로 부터 HTTP 요청을 받는다.
- 만약 요청이 정적인 컨텐츠에 대한 요청이라면 Web Server는 요청에 대한 응답을 바로 클라이언트에 보냅니다.
- Web Server는 클라이언트의 요청을 WAS에 보낸다.
- WAS는 관련된 Servlet을 메모리에 올린다.
- Servlet은 Service를 실행한다.
- Service는 DB에 접근하여 원하는 데이터를 뽑아와 응답 객체를 만들어 낸다.
- 만들어진 응답을 Servlet이 WAS에 전달한다.
- WAS는 응답을 Web Server에 전달한다.
- Web Server는 클라이언트에 응답을 전달한다.
이상 Web과 Web Server 그리고 WAS에 대해 알아보고 실제 서비스의 구조까지 알아보았습니다.
Reference
https://www.tcpschool.com/webbasic/www
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html