출처: https://ithub.tistory.com/101
위 출처의 내용을 쓰면서 더 잘 이해하기 위해 내용을 그대로 적습니다.
Apache란?
- 아파치 재단에서 만든 소프트웨어 입니다.
- 정적인 데이터를 처리하는 웹서버 입니다.
- 웹 서버는 클라이언트가 GET, POST 등의 메소드를 이용채 요청을 하면 그에 대한 결과를 돌려주는 기능을 합니다.
- 정적인 HTML이나 이미지를 제공하는 서버를 웹 서버라고 합니다.
- 웹서버로 가장 많이 쓰이는 프로그램으로는 Apache가 있고, MS의 IIS가 있다.
톰캣이란?
- 아파치 재단에서 만든 소프트웹어 입니다.
- 동적인 데이터를 처리하는 웹서버 입니다.
- 동적인 처리를 담당하는 서버를 WAS(Web Application Server)라 하며, 대표적인 WAS가 톰캣입니다.
- Was라고 불리며, 웹서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행할 수 있는 서버 입니다.
WAS의 구성
- 사용자 요청(브라우저) -> 웹서버 -> WAS -> 웹서버 -> 사용자 응답 메세지(브라우저)
웹서버란?
- 클라인언트의 요청을 받아 HTML이나 오브젝트를 HTTP프로토콜을 이용해 전송하는 일
- 사용자가 요청한 것들 중 웹서버 자체적으로 처리할 수 없는 것들을 톰캣과 같은 컨테이너에게 넘겨 처리 결과를 받아와서 클라인언트에게 넘겨주는 역할도 수행합니다.
- 웹 서버만 구축된 서버는 웹페이지, 이미지 등 정적인 컨텐츠만 제공 가능합니다.
- 컨테이너가 탑재되어있는 WAS의 경우 동적인 컨텐츠도 제공이 가능합니다.
느낀점
대부분의 서버는 WAS 기능이 있어야 하고 톰캣을 사용한다. 문제는 동적으로 처리하기 위한 환경이 여러가지 라는 점인데
요즘은 React와 같은 프론트 템플릿 엔진 프로젝트가 많아 @RestController로 JSON객체만 잘 리턴하면 되지 않을까..?
예전에 교수님이 servlet 컨테이너 개념도 잘 알아야 훌륭한 프로그래머가 될 수 있다는데 아직까진 아리송한 부분이 많다.