웹 서버(Web Server)
- HTTP 기반으로 동작
- 정적 리소스 제공, 기타 부가 기능
- 정적 HTML, CSS, JS, Image, 영상
- 블로그, 회사의 소개 페이지
- e.g.) NGINX, APACHE


웹 애플리케이션 서버(Web Application Server, WAS)
- HTTP 기반으로 동작
- 웹 서버 기능을 포함함 (i.e. 정적 리소스 제공 할 수 있음)
- 프로그램 코드를 실행 시켜서 애플리케이션 로직 수행 특화
- 동적 HTML, HTML API (JSON)
- 서블릿, JSP (MVC) / 스프링 MVC
- 자바 진영에서는 서블릿, JSP를 실행하는 WAS 의 기능을
웹 컨테이너
혹은서블릿 컨테이너
라고 부름
- WAS 는 별도 프로세스, 웹 개발자는 WAR 로 패키징한 파일을 WAS 에 배포한다.
- 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크
- 웹 애플리케이션을 실행시켜 필요한 기능을 수행하고 그 결과를 웹 서버에게 전달.
- php,jsp,asp와 같은 언어들을 사용해 동적인 페이지를 생성할 수 있는 서버
- 프로그램 실행 환경과 데이터베이스 접속 기능 제공
- 비즈니스 로직 수행 가능
- 웹 서버 + 웹 컨테이너
- 컨테이너 : jsp, servlet을 실행 시킬 수 있는 소프트웨어
- e.g.) Tomcat, Jetty, Undertow


웹 시스템 구성 - Web Server + WAS + DB
- 정적 리소스는 웹 서버가 처리, 일종의 Proxy 기능
- 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임
- WAS는 그 뒤에서 중요한 애플리케이션 로직 처리 전담
- 효율적인 리소스 관리
- 정적 리소스가 많이 사용되면 Web 서버 증설
- App 리소스가 많이 사용되면 WAS 증설


웹 서버를 앞단에 둠으로 써 얻을 수 있는 장점
- Reverse Proxy
- 손님들에게 주방의 위치를 감춘다.
- 보안상 내부 구조(파일의 위치, 포트 번호 등등)를 감출 필요가 있다.
- 로드 밸런싱
- 톰캣이 여러개 돌고 있을때 발란스 맞춰주는거 잖아요
- 지속성을 위해서 필요하다!
- 성능 측면에서도 필요하다!
- 캐싱!
- 리버스 프록시의 캐시이다.
- 서버로 찾아오는 손님들이 자주, 반복적으로 찾을 만한 리소스들을 응접실에 쌓아뒀다가 바로 제공하는 것
- 여러 모듈
- 뒷단 WAS들이 정상작동하는가에 대한 헬스 체크
@) 참고
- 강의 - 김영한님
- [10분 테코톡] - 👩🦰희봉의 웹서버 vs WAS