작은 프로젝트를 두번, 개인 프로젝트를 한번 진행하면서 모두 Apache-Tomcat 서버를 사용하였다.
기존에 알고 있는 바로는 다음과 같다.
1. Apache : WEB Server / Tomcat : WAS / Apache-Tomcat : WAS를 포함한 웹 서버
2. 웹 서버 : 정적 컨텐츠 처리 / WAS : 동적 컨텐츠 처리 / 각각 수행을 위해 분할
3. WAS에는 웹 컨테이너 혹은 서블릿 컨테이너 불리는서블릿 생명주기를 관리하는 컨테이너가 존재해서 Servlet객체를 생성하지 않아도 자동으로 생성해서 사용하고 소멸시킨다 (프레임워크같네)
사용했던 것을 설명할 수 없다는 것이 어불성설이라고 생각하기에 정리 해 두고 공부해보고자 한다.
WEB Server
웹 서버
웹 브라우저와 같은 클라이언트로부터 HTTP 요청을 받아들이고, HTML 문서와 같은 웹 페이지를 반환하는 컴퓨터 프로그램
웹 서버란 클라이언트(사용자)가 웹 브라우저에서 요청을 하면 웹 서버에서 정적인 컨텐츠를 제공하는 서버이다. 정적 컨텐츠란 HTML, CSS, JS와 이미지, 파일 등 즉시 응답 가능한 컨텐츠다. 웹 서버는 동적 컨텐츠를 요청 받았을 때, WAS에 해당 요청을 넘겨주고, WAS에서 처리한 결과를 클라이언트에게 전달해주는 역할을 수행한다.
WAS : 웹 애플리케이션 (Web Application Server)
WAS
웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크이다.
인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어(소프트웨어 엔진)로 볼 수 있다. 웹 애플리케이션 서버는 동적 서버 콘텐츠를 수행하는 것으로 일반적인 웹 서버와 구별이 되며, 주로 데이터베이스 서버와 같이 수행이 된다.
WAS는 웹 서버와 웹 컨테이너가 합쳐진 형태로 웹 서버 단독으로 처리할 수 없는 데이터베이스의 조회나 다양한 로직 처리가 필요한 동적 컨텐츠를 제공한다.
웹 컨테이너란 JSP, Servlet의 실행환경을 제공해 주는 SW로 서블릿 컨테이너라고도 불린다.
웹 서버에서 JSP를 요청하면 톰캣에서는 JSP파일을 서블릿으로 변환하여 컴파일을 수행하고, 서블릿 수행결과를 웹 서버에 전달하게 된다.
JSP 컨테이너가 탑재되어 있는 WAS는 JSP 페이지를 컴파일 해 동적인 페이지를 생성한다.
Servlet 컨테이너, JSP 컨테이너, EJB 컨테이너 등의 종류가 있다고 한다.
WAS는 웹 서버의 기능들을 구조적으로 분리하여 처리하고자 하는 목적으로 제시되었다. 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산환경에서 사용된다.
Apache? Tomcat?
그럼 이제 내가 세번이나 사용했던 아파치 톰캣에 대해 알아볼 차례인 것 같다.
apache server
apache 재단에서 후원하는 오픈소스 프로젝트 커뮤니티에서 만든 http 웹서버
http 웹서버
http 요청을 처리할 수 있는 웹 서버로, 클라이언트가 GET, POST, PUT, DELETE 등의 메서드를 이용해 요청을 하면 이 프로그램이 어떤 결과를 돌려주는 기능을 한다.
tomcat
WAS의 한 종류로, 8080포트로 처리한다.(default)
왜 Apache-Tomcat인가?
Tomcat이 Apache의 기능을 포함하고 있기 때문에 Apache Tomcat이라 부른다.
WAS는 웹 서버와 웹 컨테이너가 합쳐진 형태지만, 웹 서버와 WAS를 분리해서 사용해야 한다. 그 이유는 다음과 같다.
1. 서버 부하 방지
- 정적인 컨텐츠까지 WAS가 처리한다면 부하가 커지고 수행 속도가 느려질 것이다.
2. 보안 강화
- SSL에 대한 암호화, 복호화 처리에 웹 서버를 사용 가능하다.
3. 여러 대의 WAS 연결 가능
- 로드 밸런싱을 위해 웹 서버를 사용할 수 있다. 여러 개의 서버를 사용하는 대용랑 웹 어플리케이션의 경우 WAS를 분리하여 뭄중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.
4. 여러 WEB APP 서비스 가능
- 하나의 서버에서 PHP, JAVA 애플리케이션을 함께 사용할 수 있다.
참조
https://codechasseur.tistory.com/25
https://helloworld-88.tistory.com/71
https://code-lab1.tistory.com/199
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!