보통 우리는 컴퓨터를 사용할 때 웹 페이지를 띄워서 정보를 검색하고 다양한 콘텐츠를 즐긴다.
예를 들어 내가 유투브에서 동영상이 보고 싶다면, 웹 브라우저(크롬, 파이어폭스, IE)에서 유투브의
URL(www.youtube.com)을 쳐서 해당 페이지에 접속을 한다.
그러면 해당 페이지에서는 사용자가 원하는 화면을 보여주고 정보를 제공한다.
바로 이것이 클라이언트(사용자)와 서버(유투브 서버)의 상호 작용이다.
클라이언트와 서버를 통신을 가능하게 하는 것이 브라우저이며, 브라우저는 클라이언트는 원하는 것을
요청(request)하고 서버에서는 사용자가 원하는 것에 응답(response) 한다.
아파치 (Apache)
- 아파치 : 아파치 소프트웨어 재단
- 아파치 서버 : 'open source' 라이선스에 따라 배포되어 마음대로 쓸 수 있는 Http 웹 서버
이곳 오픈 소스 커뮤니티에서 만든 서버를 통 틀어 아파치 서버로 불리운다.
(톰캣 이외에 다양한 웹 컨테이너 존재)
(웹 컨테이너와 애플리케이션 서버의 차이?)
- 웹 서버 : 클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할을 한다.
이때 데이터는 정적인 데이터(html, css, 이미지등)로 한정된다.
톰캣 (Tomcat)
- 아파치 톰캣 : 현재 가장 일반적이고 많이 사용되는 WAS(웹 애플리케이션 서버)
- WAS (web application server) (컨테이너, 웹 컨테이너, 서블릿 컨테이너라고도 부름) :
웹 서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행한다.
웹 컨테이너는 클라이언트의 요청이 있을 때 내부 프로그램을 통해 결과를 만들어내고 이것을 다시
클라이언트에게 돌려주는 역할을 한다. (JSP와 서블릿 처리, 서블릿의 수명 주기 관리, 요청 URL을 서블릿
코드로 매핑, HTTP 요청 수신 및 응답, 필터 체인 관리 등)
아파치와 톰캣의 차이점
=> 웹서버와 웹애플리케이션의 차이
WAS(톰캣)만 쓰지 않고 아파치를 쓰는 이유는? 목적이 다르다. (웹 컨테이너의 유무)
웹서버는 정적인 데이터를 처리하는 서버. 이미지나 단순 HTML을 처리하는 서버라면 웹 서버가
적당하며 빠르고 안정적이다.
WAS는 동적인 데이터를 처리하는 서버. DB연결, 데이터 조작등과 같은 처리는 WAS를 활용해야 한다.
아파치(80 포트) , 톰캣(8080 포트)
그렇다면 왜 톰캣을 아파치 톰캣이라고 부르나? 아파치 톰캣 = 아파치 + 톰캣 ?
톰캣을 그냥 톰캣이라고 하면되지, 왜 헷갈리게 아파치 톰캣이라고 하느냐?
톰캣에서 아파치의 기능(웹서비스데몬, Httpd)를 포함하고 있기 때문이다.
그렇지만 톰캣이 아파치의 모든 기능을 포함하고 있는 것은 아니다.
보통 현업에서는 톰캣 앞에 아파치를 놓는다 그 이유는? (by 토비)
많은 개발자들이 애플리케이션 서버로 톰캣을 사용하는 경우에 스태틱 파일(css, js, html, 이미지)은
톰캣 앞에 아파치 웹 서버(Httped)를 두어서 처리하게 하는 것이 좋다고 생각한다.
외부 요청은 일단 Apache Httpd가 받고, 톰캣 내에서 처리할 자바 애플리케이션만 톰캣으로 다시 전달해서
처리하고 그 외의 리소스는 Apache Httpd가 직접 처리하게 만들어야 성능이 좋다고 생각한다.
자바로 만든 서버인 톰캣은 스태틱 파일 처리에서 Apache Httpd만 못하다는 것이 그 이유이다.
하지만 톰캣과 Httped의 개발자에 따르면 이는 개발자들이 잘못 알고 있는 미신이다.
아직도 톰캣 3를 사용하고 있는 것이 아니라면 말이다.
톰캣은 5.5부터 Httpd의 native모듈을 사용해서 스태틱파일을 처리하는 기능을 제공한다.
이 경우 Httpd와 톰캣이 같은 모듈을 사용하는 셈이니 성능에서 차이가 날 이유가 없다.
실제 테스트 한 결과를 봐도 톰캣에서 아파치 Native 모듈을 사용하는 것이 순수하게 아파치 Httpd만
사용하는 것과 비교해서 성능이 전혀 떨어지지 않는다.
따라서 단지 스태틱 파일 처리의 성능만을 위해서라면 굳이 톰캣 앞에 Apache Httpd를 두는 것은 불필요하다.
오히려 메모리만 많이 먹고 관리부담은 커지고, 불필요한 부하만 걸릴 뿐이다.
물론 Httpd의 다른 기능이나 모듈을 사용해야 할 필요가 있다면 그때는 Httpd를 앞에 두고 사용해야겠지만.
예를 들어 하나의 서버에서 PHP애플리케이션과 자바 애플리케이션을 함께 사용하거나,
Httpd 서버를 간단한 로드밸런싱을 위해서 사용해야 하는 경우라면 Httpd를 앞에 두고 톰캣을
연결해서 사용하도록 하면 될 것이다.
※ 출처 :
http://sungbine.github.io/tech/post/2015/02/15/tomcat과%20apache의%20연동.html
http://limmmee.tistory.com/4
'Programming > Java & JSP & Spring' 카테고리의 다른 글
POJO 란? (0) | 2017.07.20 |
---|---|
JPA 사용법 (JpaRepository) (3) | 2017.07.20 |
JPA(Java Persistence API)란? (0) | 2017.07.14 |
[SpringBoot] 스프링 부트 시작하기 전에 (0) | 2017.07.12 |
[Spring] 기본 초기 셋팅 (0) | 2017.07.05 |