웹 서버를 돌리고, JSP/Servlet을 운영하기 위해서
한 번쯤은 Apache와 Tomcat이란 용어를 듣게 됩니다.
오늘은 이 아파치와 톰캣이 무엇인지 간단하게 알아보고자 합니다.
우선 웹 서버(Web Server)에 대해서 간단히 알아보겠습니다.
웹 서버
- 컴퓨터를 웹사이트를 제공할 수 있게 서버로 만들어주는 서비스
- 대표적으로 아파치, NginX, IIS 등
웹 서버의 기본적인 역할
- 웹 서버가 운영하는 웹사이트를 방문한 클라이언트가, HTML, CSS, JSP 등의 파일을 볼 수 있도록 디렉토리를 개방
- 클라이언트가 특정 주소 입력 시 원하는 화면을 브라우저에서 출력하게 도와줌
- 기본적으로 정적인 웹 사이트를 제공
위의 설명 중 웹 서버는 기본적으로 정적인 웹 사이트를 제공한다고 말씀드렸는데,
그렇다면 동적인 웹 사이트는 웹 서버로 제공할 수 없을까요?
답은, NO입니다.
아파치나 NginX의 모듈을 이용해 동적인 웹사이트를 제공할 수 있습니다.
예를 들어, 아파치랑 PHP, MySQL을 연동해 PHP 웹사이트를 제공할 수 있고,
이러한 방식을 APM 방식(Apache, PHP, MySQL)이라고 합니다.
그렇다면 톰캣은 무엇일까요?
톰캣을 이해하기 위해 우선 WAS에 대해서 간단히 설명하겠습니다.
WAS
- Web Application Server의 약자
- 자바, JSP 등으로 만든 웹 또는 API 애플리케이션을 실행할 때 사용
- 웹과 서버 사이의 어플리케이션
- 동적인 웹 사이트를 제공할 때 사용
위의 설명에서 WAS는 동적인 웹 사이트를 제공할 때 사용한다 하였고,
이것이 WAS의 핵심적인 역할입니다.
애플리케이션이라는 단어처럼, 웹과 서버 사이에서 동적으로 작동하는 프로그램을 WAS라고 합니다.
이러한 WAS의 역할을 하는 프로그램 중 하나가 바로 '톰캣'입니다.
톰캣은 완벽하게 WAS는 아니지만 WAS와 비슷한 역할을 수행합니다.
그렇다면, 왜 아파치와 톰캣이 자주 묶여서 언급되는 걸까요?
이는 동적 사이트를 제공할 때 아파치와 톰캣이 같이 사용되기 때문입니다.
클라이언트에 요청에 대한 응답 프로세스는 보통 다음과 같습니다.
클라이언트가 사이트에 동적인 요청을 하면
👇
WAS를 통해 동적인 요청을 처리하고
👇
아파치와 같은 웹서버가 처리된 요청을 제공
그렇다면, 꼭 톰캣과 같은 WAS와 아파치와 같은 웹 서버는 함께 동작해야 할까요?
결론부터 말씀드리자면 NO입니다.
톰캣과 같은 WAS 프로그램은 단독으로 정적인 리소스나 동적인 요청에 대한 처리가 가능합니다.
앞서 말씀드렸듯이, 웹 서버 역시 정적 페이지뿐만 아니라 동적인 페이지의 처리도 가능합니다.
하지만, WAS와 웹 서버가 단독으로 사용 가능함에도, 보통 웹 서버와 WAS를 같이 사용합니다.
이는 웹 서버의 몇 가지 기능들 때문입니다.
이 기능들을 정리하면 다음과 같습니다.
1. Reverse Proxy
- 프록시는 자신의 아이피(ip) 주소를 숨기는 행위
- 서버와 클라이언트 사이에 프록시를 두고 프록시를 통해 데이터를 주고받음
- Forward Proxy는 서버에 방문하는 클라이언트의 주소를 감춤
- Reverse Proxy는 클라이언트에게 서버의 주소를 감춤
- Reverse Proxy를 사용하는 것은 서버가 보안의 이유로 서버 내부 구조를 감추기 위함
- 이러한 Reverse Proxy를 웹 서버가 담당
2. 로드 밸런싱
- 클라이언트의 요청에 따른 처리를 동작 중인 여러 WAS에게 적절히 분배하는 것
- 톰캣과 같은 WAS 서비스를 하나만 운영하면 WAS 프로그램이 다운되거나,
업데이트되는 등 WAS 프로그램의 사용이 불가할 때 문제가 발생 - 이러한 문제를 방지하기 위해 여러 개의 WAS 프로그램으로 서버를 운영
- 이러한 로드 밸런싱, 즉 WAS의 자원 분배는 웹 서버가 담당
3. 캐싱
- Reverse Proxy의 캐시를 의미
- 서버로 찾아오는 클라이언트들이 자주, 반복적으로 요청하는 리소스들을 프록시 서버에 저장하고 제공하는 것
- 이러한 캐싱을 웹 서버가 담당
4. 주기적인 체크
- 웹 서버에 존재하는 수많은 모듈을 사용해 WAS 서비스가 정상적으로 동작하고 있는지 체크함
위와 같은 웹 서버의 기능들 때문에
WAS로만 운영할 수 있는 동적 페이지를 웹 서버와 함께 사용해 제공하는 것입니다.
오늘은 아파치와 톰캣, 웹 서버와 WAS에 대해
간략히 알아보았습니다.
내용에 대해 문제가 있거나 이해가 안 가는 부분이 있으면 댓글 부탁드립니다.
'내가 공부하려고 올리는 > web' 카테고리의 다른 글
Web - REST API (0) | 2021.11.22 |
---|---|
Web - 동기 vs 비동기 프로그래밍(자바스크립트) (0) | 2021.11.22 |
브라우저 동작 원리(쉽게 알아보기) - CSS 파싱/렌더 트리/스타일 계산(7) (0) | 2021.11.07 |
브라우저 동작 원리(쉽게 알아보기) - 정규 표현식/BNF/파서의 종류/HTML 파싱(6) (0) | 2021.10.05 |
브라우저 동작 원리(쉽게 알아보기) - 파서/렉서/Translation(5) (0) | 2021.09.30 |
댓글