이번글은 WEB 서버와 WAS에 대한 개념적 이해와 차이점에 대해 정리해 보려고 합니다.
- WEB 서버
WEB 서버는 클라이언트와 직접적으로 통신하는 역할을 담당한다. 여기서 클라이언트는 웹 브라우저등을 말하는데 우리가 자주 사용하는 크롬, 사파리, 엣지 등을 말하는 것이다.
예를 들어 크롬을 통해 네이버에 접속하는 간단한 상황을 생각해 보자
크롬을 통해 네이버에 접속하게 되면 미리 WEB 서버에 저장된 HTML, CSS, JS, IMG 파일들이 서버의 요청에 응답을 보내고 네이버에 접속한 누구든지 동일하게 결과값을 보여주게 됩니다.
여기서 말하는 html, css, js, .png, .jpg 는 '정적 컨텐츠' 라고 부르는데, 이는 별다른 데이터의 처리 없이 항상 똑같이 전달되는 웹 페이지의 구성 요소들을 통칭하는 말이라고 할 수 있습니다.
웹 브라우저가 특정 URL을 요청하고 그 결과로 정적 컨텐츠만 전달한다면 WEB 서버내에서 일을 끝내고 결과를 웹 브라우저로 전송할 것입니다.
WEB 서버의 종류에는 Apache, Nginx, NodeJS ... 등등이 있다.
- WAS (Web Application Server)
WAS는 WEB과 반대로 '동적 컨텐츠'를 처리하는 서버입니다. 동적 컨텐츠는, 누가 / 언제 / 어떻게 서버에 요청했는지에 따라 결과값을 다루게 보내주는 형식으로 사용자에게 맞춤형 컨텐츠를 제공하는 것을 말합니다. 때문에 WAS는 별도의 데이터 처리 과정이 필요 합니다.
예를 들어 인스타그램에 접속했을때 실시간으로 최근에 올라온 게시물들이나 스토리들을 계속 업데이트 해주는 데 이는 WAS 에서 데이터들을 동적으로 전달 해주는 경우라고 할 수 있습니다.
WAS는 WEB과 다르게 DB에 직접적으로 통신합니다. 데이터를 가공하고 클라이언트가 요청한 데이터를 보여줘야 하기 때문에 알맞는 데이터를 DB로 부터 받아와 받아온 데이터를 처리하는 과정을 WAS에서 모두 담당하고 다시 웹 브라우저로 전송 하게 되는 것입니다.
WAS 의 종류에는 Tomcat, Web logic, WebSphere 등등이 있다.
- WEB 서버와 WAS의 차이점
어떤 타입의 컨텐츠를 제공하는가?
WEB 서버의 경우는 정적 컨텐츠를 처리하는 서버로 이미지나 html, css 파일과 같은 리소스를 제공하는 역할을 담당하고 WAS는 동적 컨텐츠를 처리하는 서버로 DB와 연결되어 데이터를 주고 받거나 프로그램으로 데이터 조작이 필요한 경우에 사용한다.
- WEB 서버와 WAS를 분리하는 이유
두가지를 구분해서 사용하는 이유에 대해 알기 전에 WEB Server와 WAS가 필요한 이유에 대해 정리하겠습니다.
- WEB Server가 필요한 이유
이미지 파일과 같은 정적인 파일들은 html이 클라이언트로 보내질때 함께 가는것이 아니라 클라이언트가 html 문서를 먼저 받고 그에 맞게 필요한 이미지 파일들을 다시 서버로 요청하면 그때 이미지 파일을 받아 옵니다.
WEB Server를 통해 정적인 파일들을 WAS까지 가지 않고 앞단에서 빠르게 보내줄 수 있게 되고 WEB 서버에서 정적 컨텐츠만 처리하도록 기능을 분배해 서버의 부담을 줄여 주는 것이죠.
- WAS 가 필요한 이유
웹 페이지는 정적 컨텐츠와 동적 컨텐츠가 모두 존재하는데 사용자의 요청에 맞게 적절한 동적 컨텐츠를 만들어서 제공 해야 합니다.
예를 들어 인스타그램에서 마이 페이지에 접속 하는 경우 로그인한 유저에 따라 달리 보여주는 정보는 동적 컨텐츠이고 마이페이지의 레이아웃이나 공통된 이미지등은 정적 컨텐츠가 되는 것이죠
이때 WEB Server만 사용한다면 원하는 정보에 대한 결과값을 모두 미리 만들어 놓고 서비스를 해야 하는데, 이말인 즉슨 SNS를 다루는 프로그램일 경우 유저가 한명 접속 할때마다 한 사람에 대한 html을 만들어야 한다는 것을 의미하는데 그런 프로그램 구현은 리소스의 낭비가 심하고 실용성도 떨어 질 것입니다.
따라서 WAS틀 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 상황에 맞게 결과를 만들어서 제공함으로 써 자원을 효율적으로 사용하게 되는 것이죠
정리하자면 WEB 서버와 WAS 를 분리하는 이유는 다음과 같습니다.
1. WAS 서버의 부하를 줄이기 위해서
2. WEB 서버단위에서 처리할 수 있는 부분은 빠르게 처리 하기 위해서
3. 리소스의 낭비를 줄이기 위해서
'CS' 카테고리의 다른 글
유니코드의 개념과 사용 목적 (0) | 2022.01.12 |
---|---|
MIME 의 개념과 사용 목적 (1) | 2022.01.12 |
Base64 Encoding 이란? (1) | 2022.01.07 |
도메인이란? (0) | 2022.01.06 |
컴파일러와 인터프리터의 차이 (0) | 2022.01.04 |