한줄 요약
웹서버와 WAS는 클라이언트로부터 온 요청을 처리하는 데서 서로 다른 역할을 한다. 웹서버와 WAS를 분리하면 자원 이용의 효율성 및 장애 극복, 배포 및 유지 보수의 편의성 등의 장점이 있다.
웹서버
- 하드웨어: 웹 서버의 소프트웨어와 웹사이트의 컴포넌트 파일(html, css, javascript, 이미지)을 저장하는 컴퓨터
- 소프트웨어: 클라이언트로부터 http 요청을 받아 정적인 컨텐츠를 제공하는 컴퓨터 프로그램
➡️ 웹 서버의 종류: 아파치, NginX 등
WAS(Web Application Server)
WAS는 웹서버와 웹 컨테이너가 합쳐진 개념이다. 정적인 컨텐츠 외에 DB 조회와 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해서 만들어졌다. http 프로토콜을 기반으로 컴퓨터나 장치에 애플리케이션을 수행하게 해 주는 미들웨어라고 할 수 있다.
➡️ WAS의 종류: 톰캣 등
웹서버와 WAS의 동작 순서
. 웹 브라우저가 웹 서버에 페이지를 요청한다.
. 해당 웹 서버는 웹 브라우저의 요청을 받아서 요청된 페이지의 logic 및 데이터베이스와의 연동을 위해 WAS에 처리를 요청한다.
. WAS는 데이터베이스와의 연동이 필요하면 데이터베이스와 데이터의 처리를 수행한다 .
. WAS가 logic 및 데이터베이스 작업의 처리 결과를 웹 서버에 보낸다.
. 웹 서버는 결과를 다시 웹 브라우저에 응답한다.
웹서버와 WAS를 분리하는 이유
- 기능 분리
- 단순 정적 컨텐츠는 웹서버가 빠르게 클라이언트에게 제공하고 WAS가 DB 조회, 로직 처리를 맡는다.
- 보안 강화
- 웹서버와 WAS 사이에 방화벽을 두어 보안을 강화할 수 있다.
- 분산 처리
- 여러 대의 WAS를 연결해 로드밸런싱을 할 수 있다.
- 장애 대응 시에도 오류가 발생한 WAS 대신 다른 WAS가 분산 처리를 함으로써 무중단 운영을 할 수 있다.
리버스 프록시
웹서버와 WAS를 분리하는 이유는 웹서버를 리버스 프록시로 이용할 수 있다는 점도 있다. 리버스 프록시는 클라이언트의 정보를 감추는 포워드 프록시와 반대로 서버 내부의 정보를 감춘다. 서버 내부적으로 파일이 어느 폴더에 들어 있는지, 서비스가 몇 번 포트로 돌고 있는지 등을 감출 수 있다.
참고 자료
https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
'CS' 카테고리의 다른 글
[OS] 메모리 공간, 스택 영역, 힙 영역 (0) | 2023.09.02 |
---|---|
[OS] 프로세스, 스레드 (0) | 2023.08.28 |
[Network] CORS 정책과 CORS 오류 해결법 (0) | 2023.08.23 |
[Network] HTTP, HTTPS (0) | 2023.08.16 |
네트워크 기초 이론 무지성 정리 2 (4) | 2023.04.20 |