일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 파이썬
- ios
- 스타듀밸리
- paas
- reactjs
- MacOD
- 정적분석
- Python
- 악성앱
- 오늘의게임
- 악성코드
- 7layer
- CPPG
- 드라이브바이다운로드
- 프론트앤드
- 안드로이드
- 네트워크
- anaconda
- 메타데이터
- 웹크롤링
- IaaS
- 블록체인
- pyqt
- 파일리스
- 공급망공격
- 메일헤더
- 악성스크립트
- 준비과정
- 더위쳐
- objectiveC
- Today
- Total
취보특개
[용어] Tomcat과 Apache 본문
웹에 대해 심도있게 모르다보니 보안성 검토를 공부할 때, WEB과 WAS의 차이가 어려웠다.
학창시절 배우기로 WAS는 WEB과 DB사이의 중재자 역할을 하고
때문에 보안적인 측면으로 DMZ영역에 DB에 접속할 수 있는 WAS를 두지 않기 위해 WEB이 있어야한다-고만 배웠었는데 말이다.
왜 WAS에서 직접 각종 인증서버 API로 접근해야하고.. 크롤링사이트로도 접근해야하고 관리자페이지도 WAS에 올려야할까.
지금은 그냥 그런갑다.. 하고 경험에만 기대어 하지만 언젠가 누군가 물어보면 잘 설명해주기 위해 정리해보자.
정리를 위해 회사에 있는 웹 개발자 친구에게 물어보았다.
"WEB WAS가 뭐가다른거야!?"
"톰캣이랑 아파치의 차이를 공부해봐!"
라고 해서 TOMCAT과 APACHE라는 제목부터 시작해본다.
Apache란?
아파치란것은 소프트웨어 단체 이름이다.
그리고 아파치서버라는 것은 이 제단에서 후원하는 오픈소스프로젝트커뮤니티에서 만든 http 웹서버를 지칭하는 말이다.
http 웹서버는 http 요청을 처리할 수 있는 웹서버로서,
클라이언트가 GET, POST, DELETE 등의 메소드를 이용해 요청을 하면 이 프로그램이 어떤 결과를 돌려주는 기능을 한다.
이때 리턴되는 결과 데이터는 정적인 데이터(html, css, 이미지 등)로 한정된다.
즉, 아파치는 웹서버이다.
(wellkown port: 80)
Tomcat이란?
톰캣은 흔히 WAS(Web Application Server)라고 말한다.
WAS는 웹서버와 웹컨테이너*의 결합으로 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행할 수 있는 서버를 말한다.
* 클라이언트의 요청이 있을때 내부의 프로그램을 통해 결과를 만들어내고 이것을 다시 클라이언트에 전달해주는 역할을 하는 것
(wellkown port: 8080)
아파치(WEB)와 톰캣(WAS)의 차이는 웹컨테이너 기능이 가능하냐의 차이가 가장크다.
WAS도 웹서버 역할을 수행할 수 있다. (ApacheTomcat - 아파치톰캣)
그래서 관리자페이지를 WEB서버에서 포트만으로 구분하는게아니라 서버로 분리하라고 WAS에 올리라 지적한다.
그럼 WAS만 쓰면 되지 왜 웹서버를 따로 쓸까?
그이유는 목적이 다르기 때문이다.
웹서버는 정적인 데이터를 처리하는 서버이고, WAS는 동적인 데이터를 처리하는 서버이다.
DB와 연결되어 데이터를주고받거나 프로그램으로 데이터 조작이 필요한 경우에는 WAS를 활용해야한다.
정리하면 아래와 같은 과정으로 사용자의 요청이 처리된다.
① HTTP 웹서버가 외부요청을 받음
② 정적으로 처리해야할 데이터를 제외한 JSP, ASP, PHP 등 자바애플리케이션만 톰캣에게 전달
(+) 톰캣과 Httpd 개발자에 따르면 톰캣만 사용한다고해서 정적처리에대한 성능이 떨어지지는 않는다고 한다.
톰캣 5.5부터 Httpd의 native 모듈을 사용해서 스태틱파일을 처리하는 기능을 제공하기 때문에, 성능에서 차이가 날 이유가 없고 실제 테스트에도 순수하게 아파치 httpd만 사용하는 것과 비교해서 성능이 전혀 떨어지지 않는다.
따라서, 단지 정적 팡리 처리의 성능만을 위한 것이라면 굳이 톰캣 앞에 Apache Htppd를 두는 것은 불필요하다.
오히려 메모리만 많이 먹고 관리부담은 커지고, 불필요한 부하만 걸릴 뿐이다.
물론 Httpd의 다른 기능이나 모듈을 사용해야할 필요가 있다면 그때는 Httpd를 앞에두고 사용해야한다.
(e.x.) 하나의 서버에서 PHP 애플리케이션과 자바 애플리케이션을 함께 사용해야 하는 경우
(e.x.) Httpd 서버를 간단한 로드밸런싱을 위해서 사용해야 하는 경우
여전한 의문.
보안적으로 아직도 의문인게 있다.
WAS >> 외부로 나가는건 인정할 수 있다.
그런데 외부 >> WAS로 들어와야한다며 방화벽 신청서가 올때가있다.
그럼 나는 혼란에 빠진다.
외부인입을 DMZ존이 아닌 WAS로 할 수 있다고?
물론 그 외부가 사용자가아닌 API기능을 사용하기 위해서 이긴하다.
그리고 어디에나 그렇듯 보안팀은 을이기 때문에 사업팀에서 빼에액 하면 들어줘야한다.
안된다고 하면 그놈의 근기를 가지고 오라며 난동부리는데.
찾아봐도 명확히 나오는 곳이없다.
그래서 들어는 줬지만.. 외부에서 WAS로 들어오게하는건 괜찮은건가. 여전한 의문이다.
누가 가르쳐줄 사람도 없다. 휴.
참고.
sungbine.github.io/tech/post/2015/02/15/tomcat%EA%B3%BC%20apache%EC%9D%98%20%EC%97%B0%EB%8F%99.htm
'Boan > 용어' 카테고리의 다른 글
클라우드(CLOUD) (0) | 2021.02.20 |
---|---|
[용어] 블록체인(BlockChain) (0) | 2020.05.05 |
[용어] 공급망 공격(Supply Chain Attack) (0) | 2020.05.02 |
[용어] 드라이브 바이 다운로드(Drive-by-Downloads) (0) | 2020.05.02 |
[용어] 파일리스(Fileless) 악성코드 (0) | 2020.05.02 |