웹 서버
- 컴퓨터를 웹 사이트를 제공하는 서버로 동작하게하는 소프트웨어
- 예를 들면 아파치, nginx 등
- 성능과 가벼움의 nginx
- 안정적이고 검증된 기능의 아파치
- 서버가 경로를 열어두고 접근하면 html css javascript 등 스태틱 파일을 가져갈 수 있도록 하는게 기본적인 역할
- ajax호출을 하는 동적인 사이트도 아파치나 nginx의 모듈로 직접 데이터 전송 기능 제공도 가능
- 서비스가 고도화 되면 직접 기능 제공안하고 좀더 전문적인 동적 웹 서비스를 위한 Web Application Server와 클라이언트 사이 매니저의 역할을 한다
WAS
- 동적인 사이트의 요청을 좀더 고도화시켜서 대응하는 서버
- 예를 들면 톰캣, jetty, undertow 등
- 스프링 부트안에 톰캣이 내장 되어있다
- 스프링 코드와 스태틱 파일을 톰캣 안에 넣어 명령어를 실행하거나 톰캣이 들어있는 스프링 코드와 스태익 파일을 배포하면 WAS가 동작한다
- WAS 스스로 웹 서버가 없어도 요청 받고 응답 하고 동작 가능 하지만,
- 보안적인 측면에서 웹 서버를 두고 proxy를 하도록 한다
- 로드밸런싱 측면에서도 웹 서버를 두는 게 좋다
- 웹 서버가 WAS 업데이트 진행 중 일때 WAS 상태 확인하고 업데이트 진행 중인 서버는 로드 배제해서 이용 중인 사용자에게 불편함이 없게 한다
- 웹 서버는 proxy를 이용해서 캐싱도 가능하다
정리
- 클라이언트가 주문을 하면 WAS 라는 전문 요리사가 요리를 하고 웹 서버가 중간에서 주문받고 서빙도 하고 한다
- WAS가 직접 주문을 받을 수 도 있지만 신분 노출 및 로드 밸런싱을 이용한 사용자 편의들을 고려해서 웹 서버가 대신 하도록 한다