WS (Web Server) 와 WAS (Web Application Server) 는 웹 개발에서 서로 다른 역할을 수행하는 두 가지 서버 유형이다.
각각의 특징을 알아보자.
WS란?
WS (Web Server) 란,
웹 브라우저(클라이언트)로 부터 HTTP 요청을 받아 HTML 문서와 같은 정적 컨텐츠를 제공하는 프로그램이다.
클라이언트가 요청을 하면 웹서버는 요청을 해석하고 해당 파일을 찾아 응답한다.
정적 컨텐츠란,
요청 인자값에 상관없이 달라지지 않는 컨텐츠.
즉, 어느 사용자에게든 동일한 컨텐츠를 보여준다. (HTML, CSS, Image 등)
APACHE, Microsoft IIS, Nginx 등이 있다.
WAS란?
WAS의 등장 배경
1990년대 후반, 인터넷이 보급되며 웹 브라우저를 사용한 전자상거래의 요구가 생기기 시작했다.
웹 브라우저를 주로 사용하는 시스템은 사용자가 불특정 다수이기 때문에 시스템의 변경에 따라 사용자의 화면을 수정하는 것이 거의 불가능했고 이후 WAS (Web Application Server)가 생겨났다.
- 위키백과 : WAS
WAS (Web Application Server) 란,
DB조회나 다양한 로직처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 프로그램으로 웹에서 실행되는 응용 프로그램이다.
주로 JAVA, PHP, Python, Ruby, Node.js 등 다양한 언어와 프레임워크를 사용하여 구축된다.
또한 대부분의 WAS는 WS를 내장하고 있기 때문에 HTTP 요청을 받을 수 있다.
동적 콘텐츠란,
요청 인자에 따라 바뀔 수 있는 컨텐츠를 말한다.
정적 콘텐츠와 달리 매번 다른 내용 혹은 데이터를 포함하며, 실시간으로 업데이트되거나 변경될 수 있다.
예를들어, SNS 상에서 로그인한 사용자의 친구 목록, 게시글, 덧글 등이 동적으로 생성되는 것을 볼 수 있다.
다른 예로 네이버 홈에서 오른쪽 부분에 날씨가 실시간으로 업데이트 되는 것을 볼 수 있는데 이것도 동적 컨텐츠이다.
Tomcat, Jeus 등이 있다.
WS가 필요한 이유
'WAS란?' 에서 '또한 대부분의 WAS는 WS를 내장하고 있기 때문에 HTTP 요청을 받을 수 있다.' 라는 단락이 있는데
그렇다면 WS를 쓰는 이유가 뭘까? 라는 의문이 들 수 있다.
1. 역할 분리와 서버 부하 방지
Web Server와 Web Application Server 을 분리하면 역할이 명확해진다.
웹 서버는 정적 콘텐츠 제공과 로드 밸런싱과 같은 기능에 중점을 둘 수 있고,
웹 애플리케이션 서버는 동적인 로직과 DB상호 작용에 집중할 수 있다.
만약 WAS로만 이 모든 것을 다 하려고 한다면 WAS는 동적 콘텐츠 뿐만 아니라 정적 콘텐츠까지 수행하느라 부하가 커지게 되고 수행속도가 늘어나게 될 것이다.
2. 여러 대의 WAS 로드밸런싱
WAS가 처리해야하는 요청을 여러 WAS로 나누어서 처리할 수 있도록 웹 서버에서 관리할 수 있다.
(이러한 이유로 웹서버가 앞단에, 웹 애플리케이션 서버가 뒤에 위치한다.)
Health Check
Health Check란 서버의 상태와 가용성을 모니터링하고 평가하기 위해 수행되는 프로세스이며,
서버가 정상적으로 작동하고 있는지, Web Server에서 HTTP요청을 보내 서버 상태를 확인한다.
만약, 200 응답이 온다면 정상적으로 작동하고 있다는 의미이지만 그 외의 번호로 온다면 해당 WAS로 사용자의 요청이 가지 않도록 조절한다.
interver : 서버 상태를 확인하는 요청 주기 설정
fails : n회 연속 실패하면 비정상이라고 인지
passes : 서버가 다시 복구되어 요청이 n번 연속 성공하면 정상으로 인지
3.보안
웹서버는 리버스 프록시 역할을 수행하여 클라이언트와 웹 애플리케이션 사이에서 중개역할을 한다.
이를 통해 실제 서버를 외부에 노출하지 않을 수 있다.
'CS공부' 카테고리의 다른 글
로드밸런싱 (Load Balancing) 이란 (0) | 2023.08.22 |
---|---|
서블릿(Servlet)이란? (0) | 2023.08.21 |
JWT(JSON Web Token) 이란? (0) | 2023.07.24 |
쿠키(Cookie)와 세션(Session)의 차이 (0) | 2023.07.21 |
동기와 비동기 / 블록과 논-블록 (0) | 2023.07.20 |