Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags
more
Archives
Today
Total
관리 메뉴

거인의 코딩일지

[기술면접 대비] WebServer(웹서버) & WebApplicationServer(WAS) 차이 본문

기본이론

[기술면접 대비] WebServer(웹서버) & WebApplicationServer(WAS) 차이

코딩거인 2023. 7. 13. 14:58
728x90
웹 서버 (Web Server)

웹 서버란 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠한 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공하는 서버이다. 정적 컨텐츠란 단순 HTML 문서, CSS, 이미지 파일등 즉시 응답 가능한 컨텐즈이다.

이때 웹 서버가 정적 컨텐츠가 아닌 동적 컨텐츠를 요청 받으면 WAS 에게 해당 요청을 넘겨주고, WAS에서 처리한 결과를 클라이언트에게 전달하는 역할도 해준다.

이러한 웹 서버에는 Apache, NginX 등이 존재한다.

WAS (Web Application Server)

 WAS 란 DB 조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application 서버이다. HTTP프로토콜을 기반으로 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨이로서, 주로 데이터베이스 서버와 같이 수행된다.

WAS 는 JSP, Servlet 구동환경을 제공해주기 때문에 서블릿 컨테이너 혹은 웹 컨테이너 라고 불린다.

이러한 WAS 는 웹 서버의 기능들을 구조적으로 분리하여 처리하고자 하는 목적으로 제시되었다. 분산 트랜잭션, 보안, 메시징, 쓰레드 처리등의 기능을 처리하는 분산 환경에서 사용된다. WAS 는 프로그램 실행 환경과 DB 접속 기능을 제공하고, 여러개의 트랜잭션을 관리 가능하다. 또한 비즈니스 로직을 수행 할 수 있다.

이러한 WAS 에는 Tomcat, JBos, WebSphere 등이 있다.

웹 서버와 WAS

WAS 는 Web Server 와 Web Container 의 역할을 모두 할 수 있다. 여기서 컨테이너는 JSP, Servlet 을 실행시킬 수 있는 소프트 웨어를 말한다. 현재 WAS 의 웹 서버도 정적인 컨텐츠를 처리하는데 성능상 큰 차이가 없다.
!! 그렇다면 WAS가 웹서버의 기능까지 모두 수행하면 되는 것일까????

웹 서버와 WAS를 분리해야 한다. 그 이유는 다음과 같다.

1. 서버 부하 방지
    - WAS와 웹 서버는 분리하여 서버의 부하를 방지해야 한다. WAS는 DB 조회나 다양한 로직을 처리하고, 단순한 정적 컨텐츠는 웹 서버에서 처리해줘야 한다. 만약 정적 컨텐츠까지 WAS가 처리한다면 부하가 커지게 되고, 수행 속도가 느려질 것이다. 

2. 보안 강화
    - SSL에 대한 암호화, 복호화 처리에 웹 서버를 사용 가능

3. 여러 대의 WAS 연결 가능
    - 로드 밸런싱을 위해 웹 서버를 사용할 수 있다. 여러 개의 서버를 사용하는 대용량 웹 어플리케이션의 경우 웹 서버와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다. 

4. 여러 웹 어플리케이션 서비스 가능
    - 하나의 서버에서 PHP, JAVA 애플리케이션을 함께 사용할 수 있다. 

이러한 이유로 웹 서버를 WAS 앞에 두고 필요한 WAS들을 웹 서버에 플러그인 형태로 설정하면 효율적인 분산 처리가 가능하다.

Web Service Architecture

웹 서비스는 아래와 같이 다양한 구조를 가질 수 있다.

1. Client -> 웹 서버 - > DB

2. Client -> WAS -> DB

3. Client -> 웹 서버 -> WAS -> DB

위의 그림은 3번 구조를 나타낸다. 클라이언트가 웹 서버에 HTTP 요청을 보내면 웹 서버는 정적인 컨텐츠 요청은 바로 응답하고, 동적인 컨텐츠 요청은 WAS에게 넘겨서 처리하고 결과를 WAS에게 받아서 클라이언트에게 넘겨준다.

[참고문헌]
https://code-lab1.tistory.com/199

728x90