Spring을 배우다보면 WAS, Dispatcher Servlet ... 등등 영어로 된 기괴한 용어들이 저희를 힘들게 합니다. 그 중 가장 처음에 등장하는 WAS와 Servlet의 개념에 대해 정리하려고 합니다.

 

1. WAS란?

WAS는 Web Application Server의 줄임말입니다. Application은 '응용'이란 뜻을 갖고 있습니다. 따라서, Web Application Server란 '웹(Web) 상에서 요청에 따라 동적(Application)으로 리소스를 제공(Server)하는 주체' 입니다. WAS의 종류에는 Tomcat, Jetty 등이 있고 Spring의 대표적인 WAS는 Tomcat입니다.

그렇다면 Spring의 WAS인 Tomcat을 이용해서 요청에 따라 다른 응답을 하는 '로직'을 작성할 수 있다는 건데,  Tomcat은 어떻게 우리가 이 로직을 잘 작성할 수 있도록 도와주는 걸까요?

 

2. Tomcat 없다면?

클라이언트와 서버는 HTTP 위에서 HTTP 메시지로 데이터를 주고 받습니다. 그리고, 이러한 HTTP 메시지는 예를 들어 아래와 같은 모양을 하고 있습니다.

자료 : Spring MVC 1편(김영한)

우리는 서버의 입장에서 클라이언트로부터 위와 같은 HTTP 메시지를 받았다고 가정하겠습니다. Tomcat이 없는 우리가 가장 먼저 해야하는 일은 위 메시지에서 의미있는 문자를 뽑아내는 것입니다. 예를 들어 어떤 HTTP 메소드인지(get, post ..), 어떤 url인지(/save), 메시지 바디는 어떻게 되어있는지 등이 있습니다.

서버는 의미있는 비즈니스 로직을 짜는 일이 더 중요한데, 그것보다 HTTP 메시지를 파싱하는 일이 더 커져버리는 배보다 배꼽이 더 큰 상황이 벌어졌습니다.

 

3. Tomcat 하는 일

이러한 불편함을 해소시켜주는 것이 바로 Tomcat(WAS)입니다.

Tomcat은 클라이언트로부터 받은 HTTP 메시지를 잘 파싱해서 Request 객체로 만들어줍니다. 또한, 우리가 클라이언트에게 보내줘야할 응답인 Response 객체도 만들어주어서 응답 HTTP 메시지를 보다 쉽게 만들 수 있도록 도와줍니다. 

출처 : Spring MVC 1편(김영한)

 

4. Servlet 이란?

우리는 WAS를 이용해서 HTTP 메시지를 손쉽게 다룰 수 있게 되었습니다. 그럼 이제 요청에 따라 응답을 동적으로 만들 '로직'이 필요합니다. 

이러한 '로직'이 있는 곳이 Servlet 입니다. Servlet에서 WAS로 부터 받은 Request 객체를 이용해서 동적인 Response 객체를 생성하고, 이를 다시 WAS에게 전달합니다. WAS는 받은 Response 객체를 응답 HTTP 메시지로 만들고 클라이언트에게 전달합니다.

따라서, Servlet은 'WAS로 부터 Request 객체를 전달받고 이를 통해 동적인 Response를 만드는 공간' 입니다.


이해하기 쉽게 대략적으로 작성한 내용이 많이 부실합니다. 큰 그림으로 WAS와 Servlet에 대해 이해하는데 도움이 되셨으면 좋겠습니다~

'Spring' 카테고리의 다른 글

AOP (2)  (1) 2023.08.28
AOP (1)  (0) 2023.08.25
IOC(Inversion Of Control), DI(Dependency Injection)  (0) 2023.08.24

+ Recent posts