Apache와 Tomcat은 자주 같이 쓰이는 단이이면서도 다른 단어이다. 이 둘의 차이점과 각각이 하는 역할을 확실히 기억해 두기 위해 이 글을 작성한다.
1. 아파치(Apache)
우리가 흔히 아파치라고 부르는 것은 Apache HTTP Server를 의미하는 데 이는 오픈 소스 소프트웨어 그룹인 아파치 소프트웨어 재단(Apache Software Foundation, ASF)에서 만든 웹 서버 프로그램이다.
1998년 6월에 처음 세상에 공개가 되었고, 오픈 소스를 통해 많은 개발자들에 의해 개발이 이루어졌으며, 이루어져가고 있는 상태이다.
웹 서버(http server)란?
웹 서버는 하드웨어와 소프트웨어 두 분야에서 다른 의미로 부른다.
1. 하드웨어
웹 서버 소프트웨어와 웹 사이트의 구성 요소 파일을 저장하는 컴퓨터를 의미한다.
( ex) HTML 문서, 이미지, CSS 스타일 시트 및 JavaScript 파일)
2. 소프트웨어
보통 HTTP 서버를 의미한다.
HTTP 서버는 URL(웹 주소) 및 HTTP(프로토콜 주소)를 이해하는 소프트웨어이다.
HTTP 서버는 저장하는 웹 사이트의 도메인 이름을 통해 엑세스 할 수 있으며 이러한 호스팅 된 웹 사이트의 콘텐츠를 최종 사용자의 장치로 전달한다.
브라우저는 웹 서버에서 호스팅 되는 파일이 필요할 때마다 HTTP를 통해 브라우저에 파일을 요청한다.
요청이 올바른 웹 서버(하드웨어)에 도달하면 HTTP서버(소프트웨어)가 요청을 수락하고 요청된 문서를 찾은 다음에 HTTP를 통해 브라우저로 다시 보낸다. (서버가 요청된 문서를 찾지 못하면 대신 404 응답을 반환하게 된다.)
그래서 아파치 서버는 무엇인가?
결국 아파치 서버란 클라이언트에서 요청하는 HTTP 요청을 처리하는 웹 서버를 의미한다.
이는 정적타입(HTML, CSS, 이미지 등)의 데이터만을 처리하기 때문에 톰캣이란 것이 등장하게 된다.
2. 톰캣(Tomcat)
톰캣 WAS(Web Application Server) (컨테이너, 웹 컨테이너, 서블릿 컨테이너로도 불림)
- 톰캣 또한 아파치 소프트웨어 재단에서 후원을 하고 있으며, 오픈 소스로 개발이 되고 있다.
- JAVA EE 기반으로 만들어졌으며, JSP와 Servlet을 구동하기 위한 서블릿 컨테이너 역할을 수행한다.
- 아파치 서버와는 다르게 DB 연결, 다른 응용프로그램과 상호 작용 등 동적인 기능들을 사용할 수 있다.
컨테이너(Container)
- 동적인 데이터들을 가공하여 정적인 파일로 만들어주는 모듈
서블릿(Servlet)
- 클라이언트의 요청을 받고 요청을 처리하여 결과를 클라이언트에게 제공하는 자바 인터페이스.
- java.servlet.package에 정의된 인터페이스로서 서블릿의 라이프 사이클을 위한 세 가지 필수적인 메서드들을 정의한다.
- init()
- service()
- destroy()
서블릿 컨테이너(Servlet Container)
- 서블릿들을 모아 관리
- 새로운 요청이 들어올 때마다 새로운 스레드를 생성
- 작업이 끝난 서블릿 스레드 자동 제거
서블릿에 대해 자세히 알고 싶다면 아래 포스팅을 참고 바란다.
2024.08.14 - [WEB] - [WEB] Servlet과 JSP 이해하기
[WEB] Servlet과 JSP 이해하기
1. Servlet 이란? 서블릿(servlet)은 서버에서 웹페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바로 작성된 프로그램이다. java 코드 안에 HTML 태그가 삽입되며 자바 언어로 되어
blogimadetosee.tistory.com
WAS(Web Application Server)
- DB 처리, 로직 처리를 요구하는 동적 타입을 제공하는 소프트웨어 프레임워크를 의미한다.
- 기본적으로 사용되는 기능 3가지는 아래와 같다.
- 프로그램 실행 환경과 데이터베이스 접속 기능을 제공한다.
- 여러 개의 트랜잭션을 관리한다.
- 업무를 처리하는 비즈니스 로직을 수행한다.
3. 아파치 톰캣으로 부르는 이유
기본적으로 위처럼 아파치와 톰캣의 기능은 나뉘어져 있지만, 톰캣 안에 있는 컨테이너를 통해 일부 아파치의 기능을 발휘하기 때문에 보통 아파치 톰캣으로 합쳐서 부르곤 한다.
요약
- 아파치 : 아파치 소프트웨어 단체
- 아파치 서버 : 정적인 파일 처리해 주는 웹 서버 (80 포트)
- 톰캣 : DB 처리와 같은 동적인 기능들을 제공하여 HTML 파일로 만들어 클라이언트에게 제공 (8080 포트)
출처 / 참고
톰캣(was) vs 아파치(Apache) 의미와 차이점
웹페이지는 아파치와 톰캣으로 이루어져 있다. 리눅스 서버를 만들거나 웹서버를 만들다 보면 아파치 톰캣을 설치하라고 한다. 때문에 아파치, 톰캣 각각의 의미와 차이를 아는 것이 중요하다.
growthjournal.tistory.com
Apache? Tomcat?? 둘이 무슨 차이지?
학교에서 php를 하고, 회사에서 spring boot + jsp를 사용하면서아파치 톰캣을 자연스럽게 사용하게 되었다.하지만, 사용하는 동안 이게 도대체 무엇이길래 웹을 할 때 많은 곳에서 사용하는지?이게
velog.io
'WEB' 카테고리의 다른 글
[WEB] 쿠키(Cookie)와 세션(Session) 이해하기 (1) | 2024.08.20 |
---|---|
[WEB] Forward와 Redirect의 차이 이해하기 (0) | 2024.08.14 |
[WEB] Servlet과 JSP 이해하기 (0) | 2024.08.14 |