Apache & Tomcat

박상민·2024년 3월 18일
0

개념 정리!

목록 보기
8/18
post-thumbnail

⭐️Apache

Apache란 Apache 소프트웨어 재단에서 관리하는 HTTP 웹 서버입니다. Apache는 오픈 소스이기 때문에 누구든지 수정, 재배포가 가능하다. 게다가 Apache는 다양한 기능을 제공하고 다른 웹 서버들에 구축이 쉽다는 이유로 많이 사용된다.

📌 Web Server

  • 클라이언트가 GET, POST 등의 메소드를 이용해 전송한 요청을 받아 HTML이나 오브젝트를 HTTP 프로토콜을 이용해 전송하는 프로그램
  • 웹 서버는 웹페이지, 이미지 등의 정적인 컨텐츠만 제공할 수 있다.

이미지 출처: https://developer.mozilla.org/ko/docs/Learn/Common_questions/What_is_a_web_server

📌 Web Server는 왜 필요할까?

웹 프로그램은 클라이언트 - 서버 컴퓨터 사이의 데이터 교환을 목적으로 하기 때문에 네트워크 통신이 반드시 필요하다.
그러나 웹 프로그램마다 네트워크 통신 기능을 매번 직접 구현하는 것은 힘든 일이다. 그래서 네트워크 통신을 구현하기 위해 미리 만들어진 프로그램을 사용하는데 웹 서버와 웹 브라우저가 이에 해당된다.

⭐️ Tomcat

Tomcat이란 Apache 재단에서 만든 오픈 소스 WAS(Web Application Server)이다.
Tomcat은 Java Servlet과 JSP가 실행할 수 있는 환경을 제공하여 동적인 페이지를 생성한다.
그리고 DB 연결 및 데이터 조자그 다른 응용 프로그램들과 상호 작용이 가능하다.

이미지 출처: https://doitnow-man.tistory.com/109

📌 Tomcat의 구조

  • Coyote (HTTP Component) : Tomcat에 TCP를 통한 프로토콜 지원
  • Catalina (Servlet Container) : 자바 서블릿을 호스팅하는 환경
  • Jasper (JSP Engine) : 실제 JSP 페이지의 요청을 처리하는 Servlet

Tomcat의 동작

  • HTTP 요청을 Coyote에서 받아서 Catalina로 전달
  • Catalina에서 전달받은 HTTP 요청을 처리할 웹 어플리케이션을 찾고 WEB-INF/web.xml 파일 내용을 참조하여 요청을 전달
  • 요청된 Servlet을 통해 생성된 JSP 파일들이 호출될 때 Jasper가 Validation Check/Compile등을 수행

처리 순서

  • HTTP request > Catalina > Context > Servlet > Response

Tomcat은 JVM 위에서 동작
하나의 JVM에서 하나의 Tomcat Instance가 하나의 Process로 동작
하나의 Server에는 여러 개의 Service가 존재 가능, 각각의 Service는 1개의 Engine과 여러 개의 Connector로 구성
Engine은 Catalina Servlet Engine이라고도 불리며, 정의된 Connector로 들어온 요청을 하위에 있는 해당 Host에게 전달해주는 역할을 수행
하나의 Engine에는 여러 개의 Host가 존재 가능, Host는 가상호스트 이름을 나타내며, 호스트 이름이 곧 url에 매핑
Host에는 여러 개의 Context가 존재 가능, Context는 하나의 Web Application을 나타내며 주로 *.war 파일의 형태로 배포
Tomcat Server가 요청을 받으면, Catalina (Tomcat Engine)가 요청에 맞는 Context (Context path)를 찾고, Context는 자신이 설정된 어플리케이션의 deployment descriptor file (web.xml)을 기반으로 전달받은 요청을 서블릿에게 전달하여 처리

📌 WAS(Web Application Server)란?

WAS란 웹 서버와 웹 컨테이너의 결합으로 이루어진 소프트웨어이다.
웹 서버를 포함하고 있기 때문에 웹 서버처럼 사용할 수도 있다. DB와 연결되어 트랜잭션 처리를 하거나 다른 시스템과의 연동 기능 또한 포함하고 있다. 그리고 웹 서버와 달리 요청에 대해 동적인 페이지를 만들어 유연하게 응답할 수 있다.

📌 WAS의 필요성

웹 서버는 정적인 컨텐츠만 제공하기 때문에 클라이언트의 요구에 유연하게 대처할 수 없다.
다양한 클라이언트의 요구에 유연하게 대처하기 위해 DB와 연결해 데이터를 주고받거나 데이터 조작을 하여 동적인 페이지를 생성해 응답하기 위해 WAS를 사용하고 있다.


출처
https://velog.io/@hsk2454/Tomcat%EC%9D%B4%EB%9E%80
https://kchanguk.tistory.com/2

profile
스프링 백엔드를 공부중인 대학생입니다!

0개의 댓글