[JVM/Java] Apache & Tomcat을 알아보자

권성현·2023년 4월 11일
1

업무

목록 보기
8/22
post-custom-banner

아파치(Apache)

우리가 흔히 아파치라고 부르는 것은 Apache HTTP Server를 의미하는 데
이는 오픈 소스 소프트웨어 그룹인 아파치 소프트웨어 재단(Apache Software Foundation, ASF)에서
만든 웹서버 프로그램이다.
1998년 6월에 처음 세상에 공개가 되었고, 오픈소스를 통해 많은 개발자들에 의해 개발이 이루어졌으며, 이루어져가고 있는 상태이다.

  • 그러면 웹서버(http server)는 무엇인가에 대해 궁금해질 것이다.

💻웹서버

웹서버는 하드웨어와 소프트웨어 두 분야에서 다른 의미로 부른다

1. 하드웨어

웹 서버 소프트웨어와 웹 사이트의 구성 요소 파일을 저장하는 컴퓨터를 의미한다.
(예 : HTML 문서, 이미지, CSS 스타일 시트 및 JavaScript파일)

2. 소프트웨어

보통 HTTP 서버를 의미한다.
HTTP 서버는 URL(웹주소) 및 HTTP(프로토콜 주소)를 이해하는 소프트웨어이다.
HTTP 서버는 저장하는 웹 사이트의 도메인 이름을 통해 액세스 할 수 있으며 이러한 호스팅 된 웹 사이트의 콘텐츠를 최종 사용자의 장치로 전달한다.

브라우저에 웹 서버에서 호스팅되는 파일이 필요할 때마다 브라우저는 HTTP를 통해 파일을 요청한다.
요청이 올바른 웹서버(하드웨어)에 도달하면 HTTP서버(소프트웨어)가 요청을 수락하고 요청된 문서를 찾은 다음에 HTTP를 통해 브라우저로 다시 보낸다.
(서버가 요청된 문서를 찾지 못하면 대신 404 응답을 반환하게 된다.)

아파치 서버

결국 아파치서버란 클라이언트에서 요청하는 HTTP요청을 처리하는 웹서버를 의미한다.
이는 📌정적타입(HTML, CSS, 이미지 등)의 데이터만을 처리하기 때문에 톰캣이란 것이 등장한 것 같다.

톰캣(Tomcat)


톰캣 WAS(web application server) (컨테이너, 웹 컨테이너, 서블릿 컨테이너로도 불림)

톰캣 또한 아파치 소프트웨어 재단에서 후원을 하고 있으며, 오픈소스로 개발이 되고 있다.
JAVA EE 기반으로 만들어졌으며, JSP와 Servlet을 구동하기 위한 서블릿 컨테이너 역할을 수행한다.
아파치서버와는 다르게 DB연결, 다른 응용프로그램과 상호 작용 등 📌동적인 기능들을 사용할 수 있다.

컨테이너(container)

동적인 데이터들을 가공하여 정적인 파일로 만들어주는 모듈

서블릿(servlet)

클라이언트의 요청을 받고 요청을 처리하여 결과를 클라이언트에게 제공하는 자바 인터페이스.
java.servlet.package에 정의된 인터페이스로서 서블릿의 라이프 사이클을 위한
세 가지 필수적인 메소드들을 정의한다.

  • init()
  • service()
  • destory()

서블릿 컨테이너(servlet container)

  • 서블릿들을 모아 관리
  • 새로운 요청이 들어올 때마다 새로운 스레드를 생성
  • 작업이 끝난 서블릿 스레드 자동 제거

WAS(wab application server)

DB 처리, 로직 처리를 요구하는 동적타입을 제공하는 소프트웨어 프레임워크를 의미한다.
기본적으로 사용되는 기능 3가지는 아래와 같다.

  • 프로그램 실행 환경과 데이터베이스 접속 기능을 제공한다.
  • 여러 개의 트랜잭션을 관리한다.
  • 업무를 처리하는 비즈니스 로직을 수행한다.

🤔아파치 톰캣으로 부르는 이유?

기본적으로 위처럼 아파치와 톰캣의 기능은 나뉘어져 있지만,
톰캣 안에 있는 컨테이너를 통해 일부 아파치의 기능을 발휘하기 때문에
보통 아파치 톰캣으로 합쳐서 부르곤 한다.

요약

아파치

  • 아파치 소프트웨어 단체

아파치 서버

  • 정적인 파일 처리해주는 웹 서버 (80 포트)

톰캣

  • DB처리와 같은 동적인 기능들을 가공하여 HTML파일로 만들어 클라이언트에게 제공(8080 포트)

profile
개발일지
post-custom-banner

0개의 댓글