Server

Web Server와 WAS 의 차이는? (feat. Django의 WAS는?)

Jan. 13, 2023, 11:29 a.m.

 

안녕하세요?

오늘은 개발 면접에서 나오기 쉬운 질문 중 하나인

Web Server(웹서버)와 WAS 의 기능을 설명하고 그 차이점을 말해보라!

에 대해 포스팅 하고자 합니다.

웹서버와 WAS 의 차이를 이해하기에 앞서 먼저 정적 콘텐츠와 동적 콘텐츠에 대해 알아보겠습니다.

 

정적 콘텐츠(Static Contents)란?

- 서버(웹서버, Web Server)에 미리 저장된 파일(HTML 파일, 이미지, CSS, JavaScript 파일 등)이 그대로 전달되는 콘텐츠입니다.

- 서버는 사용자 요청(Request)에 해당하는 저장된 웹 페이지를 보냅니다.

- 사용자는 서버에 저장된 데이터가 변경되지 않는 한 고정된 웹 페이지를 보게됩니다.

- DB에 저장된 데이터를 보여주는 페이지가 아닌, HTML 파일에 박혀있는 내용만 보여주는 콘텐츠라 생각하면 됩니다!

장점

- 빠른 처리 : 요청에 대한 파일만 전송하면 되기 때문에 추가적인 작업이 없습니다.

- 단순한 구조 : 웹 서버만 구축하면 됩니다

단점

- 제한적 서비스 : DB에 저장되는 실시간 데이터가 아닌, HTML, 이미지 등으로 미리 저장해놓은 파일만 보여줄 수 있습니다.

- 불편한 유지보수성 : 추가/수정/삭제의 작업 모두 파일에 접근하여 직접 수정해야 합니다.

 

 

동적 콘텐츠(Dynamic Contents)란?

- 서버(웹 서버, Web Server)에 있는 데이터들을 처리한 후 생성되어 전달되는 콘텐츠

- 서버는 사용자의 요청(Request)에 따라 데이터를 처리하고 생성되는 웹 페이지를 보냅니다.

- DB 에 있는 실시간 데이터를 보여주거나 처리할 수 있고, 대부분의 웹 페이지는 동적 콘텐츠를 다루고 있다고 보면 됩니다.

장점

다양한 서비스  : 다양한 정보를 동적으로 생성하여 제공 가능합니다.

편한 유지보수성 : 웹 사이트 구조에 따라서 추가/수정/삭제 등의 관리 작업이 용이합니다.

단점

비교적 낮은 속도 : 웹 페이지를 전달하기 전 처리하는 시간이 소요되어 정적 콘텐츠에 비해 비교적 느립니다.

구조적인 추가 필요 : 웹 서버외에 추가적으로 처리를 위한 WAS(Webs Application Server)가 필요합니다.

 

 

여기까지만 보고서 이미 감을 잡은 분들도 계시겠지만, 아래와 같이 웹서버와 WAS 의 기능을 요약할 수 있습니다.

웹서버 : 정적 콘텐츠에 대한 요청을 처리(또는 WAS와 함께 쓰는 경우 동적 콘텐츠 요청을 WAS에 전달)

WAS : 동적 콘텐츠에 대한 요청을 처리

 

Web Server란?

웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html .jpeg .css 등)를 제공합니다.

 

요청에 따라 아래의 두 가지 기능중 적절하게 선택하여 수행합니다.

기능1)

- 정적인 콘텐츠 제공

- WAS를 거치지 않고 바로 자원을 제공

기능2)

- 동적인 콘텐츠 제공을 위한 요청을 WAS에 전달하고, WAS가 처리한 결과를 클라이언트에게 전달합니다.

 

Web Server의 예시로는 Apache Server, Nginx 등이 있습니다.

 

 

WAS(Web Application Server)란?

DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해서 만들어진 Application Server입니다.

"웹 컨테이너" 혹은 "서블릿 컨테이너"라고도 불립니다.(컨테이너란 JSP, Servlet을 실행시킬 수 있는 소프트웨어)

즉, WAS는 JSP, Servlet 구동 환경을 제공합니다.

 

WAS의 주요 기능

- 프로그램 실행 환경과 DB 접속 기능 제공

- 여러 개의 트랜잭션(논리적인 작업 단위) 관리 기능

- 업무를 처리하는 비즈니스 로직 수행

 

WAS의 예시로는 Tomcat, JBoss, Jeus, Web Shpere 등이 있습니다.

 

현재는 WAS가 가지고 있는 Web Server도 정적인 컨텐츠를 처리하는데 있어서 성능상 큰 차이가 없습니다.

그런데 왜 WAS와 웹서버를 나누냐 물어보신다면,

웹서버를 통해 정적인 콘텐츠들을 WAS까지 가지 않고 앞단에서 빠르게 보내줄 수 있어서 서버의 부담을 줄일 수 있기 때문입니다.

 

 

 

 

Django 에서 웹서버와 WAS 구조는?

제 블로그 포스트에서 Django를 이용한 블로그를 만들었는데,

Django에서 생각해보면 nginx라는 웹서버를 사용하였으나,

WAS 관련된 작업을 한 적이 없습니다.

그것은 Django 어플리케이션이 어떻게 보면 WAS처럼 동적 콘텐츠 요청을 처리하는 역할을 해주기 때문인데,

다만 Django 어플리케이션은 웹서버와 직접적으로 통신이 안되어서 아래와 같이 WSGI 서버를 필요로 합니다.

그래서 uWSGI 와 같은 것을 작업하였던 것입니다.

 

끝!

 

Reference

https://velog.io/@woo00oo/Web-Server%EC%99%80-WAS

https://m.cafe.daum.net/flowlife/RUrO/144


Comments


Related Posts