Apache(아파치) 와 Tomcat(톰캣) 비교 / 서로 연동하는 이유?
Apache와 Tomcat 비교
아파치는 웹서버, 톰캣은 WAS(Web Applcation Server)
연결되는 포트는 아파치는 기본 80포트, 톰캣은 기본 8080포트
정적인 페이지는 아파치가 적합하고, 동적인 페이지는 톰캣이 적합하다(같은 성능에서 HTML이나 단순 이미지 파일은 톰캣도
처리할 수 있지만 아파치가 성능이 좀 더 낫다는 것이고, 동적인 페이지(DB 연동이나 데이터 조작)는 단연 톰캣이 적합하다고
할 수 있다)
컨테이너 유무로 아파치와 톰캣을 구별할 수도 있다(톰캣은 컨테이너가 있음)
그러므로 서로가 탄생한 목적이 다르므로 둘을 같이 써주면 시너지효과? 를 볼 수 있을 것
아파치와 톰캣을 연동한다는 의미
아파치와 톰캣을 연동한다는 것은 동일한 포트로 운영한다는 의미로 보통의 이미지나 HTML요소는 아파치에서 처리하고
사용자 데이터 처리와 같은 동적인 업무는 톰캣에서 처리하도록 하는 것이다
사용자의 요청이 오면 단순 HTML 문서만이 필요한 작업인 경우 웹 서버가 처리하고, jsp를 이용한 데이터 조작 등이 필요한
작업인 경우 웹서버가 Application Server로 작업을 보내 처리하게 한 뒤 다시 받아서 클라이언트에게 보여준다
아파치와 톰캣이 연동하기 위해 AJP로 통신하여야 한다
AJP는 아파치가 웹서버와 외부서비스(톰캣)을 연동하기 위해 정한 규약(Protocol)
아파치는 이를 사용해 포트 80으로 들어오는 요청은 자신이 받고 이 요청 중 서블릿을 필요로 하는 요청은 톰캣에 넘겨 처리
아파치, 톰캣 연동을 위해 mod_jk라는 모듈을 사용->AJP Protocol을 사용하여 톰캣과 연동하기 위해 만들어진 모듈
1. 아파치 웹서버의 httpd.conf에 톰캣 연동을 위한 설정을 추가
2. 사용자의 브라우저는 아파치 웹서버(기본 포트 80)에 접속해 요청
3. 아파치 웹서버는 사용자의 요청이 톰캣에서 처리하도록 지정된 요청인지 확인하여 톰캣에서 처리해야하는 경우 아파치 웹
서버는 톰캣의 AJP포트(기본 8009 포트)에 접속해 요청을 전달
4. 톰캣은 아파치 웹서버로부터 요청을 받아 처리 후 처리 결과를 아파치 웹서버에 되돌려 준다
5. 아파치 웹서버는 톰캣으로부터 받은 처리 결과를 사용자에게 전송
아파치와 톰캣의 연동 이유
아파치는 이미지나 단순 HTML 파일 같은 정적인 데이터 처리
호환성이 높고 다양한 모듈이 많아 압도적인 점유율
그러나 아파치를 비롯 IIS나 Nginx같은 웹서버는 JSP나 PHP같은 응용 프로그래밍 언어를 해석할 수 없으므로
아파치 소프트웨어 재단에서 Java기반 서버 사이드 언어를 처리할 수 있는 엔진 개발 -> WAS(Web Application Server) Tomcat 탄생
톰캣은 자바코드를 이용해 HTML페이지를 동적으로 생성해주는 프로그램
WAS는 웹서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현하여 클라이언트의 요청이 있을 때 내부의 프로그램
을 통해 결과를 만들어내고 이것을 다시 클라이언트에게 전달해주는 역할
그러나 톰캣은 버전이 올라가면서 이제는 톰캣만 설치하여도 어느정도의 웹서버 역할을 해주기는 한다
하지만 많은 JSP를 사용하는 웹 프로그래머들은 아파치+톰캣을 병행해서 사용함
그 이유로는 정적 데이터를 처리할 때 아파치의 성능이 더 좋다->image나 css같은 정적 데이터는 아파치에서 처리하고 톰캣
은 동적 페이지 생성에 주력하는게 효율면에서 좋다
다른 언어 도입을 할 때 아파치 사용이 불가피하다->톰캣만 사용한다면 JSP개발자만 활용할 수 있으나 아파치+톰캣 구조에서
는 PHP를 설치하고 아파치에 연결하면 여러 서버 사이드 언어로 작성이 가능해진다
개발시에는 톰캣만으로도 웹서버 역할을 하는데 충분하지만 운영 시에는 아파치+톰캣을 연동해주는 것이 성능에 더 유리하
다(HTML 파일/이미지 파일과 JSP 파일의 처리 분산)
물론 이제는 톰캣 단독만으로도 Web Server 기능이 아파치에 밀리지 않을 만큼의 역할을 수행한다고 하지만
아파치 내에서만 설정할 수 있는 부분이나 아파치에서 제공하는 유용한 모듈을 사용하기 위해서라도 연동을 한다
결론: 단순 개발 시에는 톰캣만 가지고 Web Server와 WAS를 겸해도 상관없지만
실제 운영 시에는 HTML 파일이나 이미지 파일의 처리는 Web Server인 Apache가 하도록하고
DB 연동이나 데이터 조작과 같은 JSP 파일 처리는 WAS인 톰캣에게 넘겨 유연하게 처리하도록 할 수 있다
'IT > Server' 카테고리의 다른 글
Tomcat(톰캣) 설치 (0) | 2017.11.06 |
---|---|
Apache 2.4 (아파치) 설치 방법 (0) | 2017.11.06 |
APM (Apache + PHP + MySql) 이란? (0) | 2017.11.06 |
Web server / WAS 종류 (0) | 2017.11.06 |
Apache (아파치)와 Tomcat (톰캣) 설명 (0) | 2017.11.06 |