웹은 기본적으로 HTTP라는 프로토콜을 사용하여 서버간 통신을 한다.
웹서버는 HTTP 프로토콜을 기반으로 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 받아들이고 HTML, 이미지파일, CSS 같은 문서 또는 리소스 데이터(정적 컨텐츠)를 반환하는 역할을 하는 프로그램이다.
대표적인 웹서버는 IIS, Apache, Nginx, GWS 등이 있다.
정적인 컨텐츠를 제공할때는 WAS를 거치지 않고 바로 자원을 제공한다.
동적인 컨텐츠 제공을 위해서는 WAS 에 Request를 보내고 결과를 클라이언트에게 Response 한다.
WAS = Web Server + Web Container
WAS는 웹 애플리케이션을 실행하여 동적으로 서버 콘텐츠를 생성하는 역할을 담당하는 미들웨어이다.
WAS 에는 아파치 톰캣, 웹로직, 제이보스 등이 있다.
웹서버가 정적인 리소스를 전달하는 역할을 한다면, WAS는 동적으로 동작하며, DB와 연동되고 비즈니스 로직을 포함한다.
JSP, ASP, PHP 등이 모두 WAS에서 동작한다.
웹 컨테이너 혹은 서블릿 컨테이너라고도 불린다.
주로 DB서버와 같이 수행되며 분산 환경에서 사용된다.
주요 기능
1) 프로그램 실행 환경과 DB 접속 기능 제공
2) 여러개의 트랜잭션(논리적인 작업 단위) 관리 기능
3) 업무를 처리하는 비즈니스 로직 수행
기능을 분리하여 서버 부하 방지(페이지 노출 시간이 늘어나게 됨)
물리적으로 분리하여 보안 강화
여러대의 WAS를 연결 가능
Load Balancing을 위해서 Web Server를 사용한다.
특히 여러개의 서버를 사용하는 대용량 웹 어플리케이션의 경우 기능 분리를 통해 무중단 운영을 위한 장애 극복을 쉽게 처리 할 수 있다.
여러 웹 어플리케이션 서비스 가능
자원 이용의 효율성 및 장애 극복, 배포, 유지보수의 편의성을 위해 Web Server와 WAS를 분리한다.
톰캣(WAS)는 외장 톰캣이다.
기본적으로 웹서비스를 구축하려면 톰캣도 설치해야하고, JSP 프로젝트를 톰캣에 연동해야한다.
하지만 내가 공부중인 스프링부트를 사용하면 외장 톰캣 없이 임베디드 톰캣 기반으로 바로 실행 , 독립 실행 할 수 있는 환경을 구축 할 수 있다.