WAS란?, 웹서버란?...-Apache TomCat

SaGo_MunGcci·2022년 8월 11일
0

스프링

목록 보기
18/31

Definition Access

  • 웹서버 : 클라이언트로부터 직접 요청을 받아 처리하고 저용량의 정적파일들을 제공한다.

  • 동적 서비스를 제공하거나 웹 서버와 데이터 베이스 서버 또는 웹 서버와 파일 서버사이에서 인터페이스 역할을 수행함.



Mechanism

  • 스프링프레임워크는 MVC패턴을 지향한다.
    즉 클라이언트가 요청한 데이터를 컨트롤러에서 받아서 실질적으로는 서비스에서 처리하게해서 JPA를 통해서 DB에 데이터가 담긴다.

  • HTTP 통신방식은 원래 비연결 비상태가 원칙이다. 따라서 Client 에서는 미리 정해진 HTTP 규격에 맞게 요청을 보내게 되고 서버는 요청을 해석하여 Client 가 원하는 데이터를 보내주어야 한다. 즉, HTTP메서드를 통해 클라이언트의 요청을 해석하고, 그에 맞는 데이터 형식으로 보내주는 것이다. 즉 정적으로 요청-응답을 하는 것이다.

  • 그런데 클라이언트의 요청이 1이라는 정적데이터를 요청하는 것이 아닌 1+2와 같은 변환된 데이터를 요구하면 어떻게 할까?

  • 각 정적페이지에 1~100까지 만들어서 db에 저장한다음 클라이언트의 요청에 해당하는 정적페이지를 꺼내서 응답해주어야 할까?

  • 이렇게 되면 불필요한 데이터가 DB에 저장되어 공간이 낭비된다.

  • 유동적으로 1+2를 간단하게 계산해서 클라이언트에 응답해주면 된다.

1.Web Server

  • Web Server는 클라이언트의 요청을 db의 데이터와 매칭을 하고, 이를 HTTP메서드를 통해 서버에 해당 파일이 있으면 맞게 돌려주면 되기 때문에 Static(정적) 인 웹서버라고 한다.
    • 대표적인 정적파일을 만드는 언어는 HTML,CSS가 있다.
    • 별도의 프로그램 없이 Web Server 만으로도 URL 과 대응하여 HTML 을 반환하여 블로그를 만들 수도 있다.

2.WAS(Web Application Server)

  • 위에서 살펴보았듯이 Web Server는 정적으로 통신하기 때문에 유동적인 데이터 처리를 하지 못한다.

  • 예를들면 어제 웹페이지 방문객이 1명이었는데 오늘 2명이 들어와서 총방문객수를 3명을 표현해야 되는데 Web Server에서는 이걸 처리할 방법이 없다. 오로지 이에 해당하는 정적파일을 꺼내서 사용할 수 밖에 없는데 이러면 경우의 수가 무수히 많아져서 1+2에 해당하는 파일을 찾기위해 서버에 엄청난 부담을 줄 수 밖에 없다.

    • 단순히 1+2의 숫자계산인데 컴퓨터의 원래의 취지에 맞지도 않고 너무 비효율 적이다.
  • 따라서 이 정적 파일의 데이터만 계산해서 넣어주는 프로그램과 같은 역할이 바로 WAS인 것이다. 대표적인 예가 바로 PHP와 톰캣 서블릿, js가 있겠다.

    • 참고 : 아파치서버 + PHP + MySQL을 합하여 APM이라고 한다.

  • 위 이미지를 보면 원래 Web Sever에서 DB로 가는 흐름에서 중간에 WAS가 처리를 해줌에따라서 사용자의 요청에 따른 데이터만 가공해서 클라이언트에 응답해주고 있다.

  • 이렇게 통신을 하게되면 서버의 부담을 줄이는 동시에 효과적으로 사용자의 요청 혹은 서비스를 제공할 수 있다.

  • 이렇게 데이터를 가공한 후에 Client 에게 반환해주는 작업을 Dynamic(동적) 인 웹처리라고 한다.

  • 우리가 스프링프레임워크를 사용하면서 이런 WebSever나 WAS와 같은 것을 따로 설치하지 않아도 원하는 것을 출력할 수 있는 이유가 바로 Apache Tomcat이 내장이 되어있기 때문이다. Apache Tomcat은 Apache HTTP Server가 개발된 같은 Apache 재단에서 개발이 되었다.

3.Spring TomCat

Apache Tomcat은 Servlet Container

  • Servlet Container 개념으로 개발이 되었으며 데이터의 동적인 처리를 할 수 있다. 이때, 외부 요청을 처리하는 Web Server 의 기능을 일부 내장하고 있기 때문에 WAS 로 간주하기도 한다.

  • TomCat = Web Sever + Servlet Container

참고 :
-Spring에서 Servlet의 동작방식

출처 : 스파르타 코딩클럽 스프링 심화 1주차 강의자료

  • Spring Boot 에서는 Servlet 을 단위로 하여 Client의 요청을 처리하게 되는데 Servlet은 Java 에서 Thread 기반으로 Client 요청에 대해서 Dynamic 하게 작동하는 구성요소다.

  • 이때, Interface 인 Servlet 을 구현한 추상 객체를 상속받아 구현되어있는데, 요청에 따라서 각기 다른 Servlet 이 실행이 된다. Servlet 을 요청에 연결하고, 수명 관리를 해주는 것이 바로 Servlet Container인것이다.

  • Apache Tomcat은 기본적으로는 Servlet Container 이나 자체적으로 Web Server 가 내장이 되어있다. 이 때문에 외부의 HTTP 요청을 받을 수 있어서 Apache Tomcat 은 WAS 기능을 일부 가지고 있는 Servlet Container 라고 볼 수가 있는 것이다.

참고 : https://tecoble.techcourse.co.kr/post/2021-05-24-apache-tomcat/



Retrospection

  • 매일 보고있던 스프링 실행 콘솔창의 내용중 일부분

  • 공부하지 않았으면 그냥 실행되는 부분이겠거니라고 넘겼을텐데

  • 이걸 공부하고 보니까 미생의 한 명대사가 떠올랐다.

  • 승부에서 이겼을때는 바둑알 하나 하나가 살아줘서 고맙다 - 장그래

  • 나 또한 매일 서버를 시작할때 이게 작동되어서 내가 개발을 할 수있음에 이 스프링프레임워크가 고맙고 이 TomCat이 작동되어서 너무 고맙고 또 고맙다.

  • 톰캣아! 내가 스프링프레임워크를 사용하는 동안 수고해줘서 고마워!.


profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글