본문 바로가기
내가 공부하려고 올리는/web

Web - 아파치(Apache)/톰캣(Tomcat)이란?

by 결딴력 2021. 11. 22.
반응형

 

 

웹 서버를 돌리고, JSP/Servlet을 운영하기 위해서

한 번쯤은 ApacheTomcat이란 용어를 듣게 됩니다.

 

오늘은 이 아파치와 톰캣이 무엇인지 간단하게 알아보고자 합니다.

 

우선 웹 서버(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에 대해

간략히 알아보았습니다.

 

내용에 대해 문제가 있거나 이해가 안 가는 부분이 있으면 댓글 부탁드립니다.

 

 

 

반응형

댓글