웹 서버 & WAS

Hyeonjeong Jeon·2022년 10월 5일
1
post-thumbnail

웹 서버(Web Server)란?

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

ex) Apache, Nginx

웹 서버(Web Server)의 개념은 크게 두 가지 측면으로 요약할 수 있다.

  • 하드웨어 측면: 웹 서버의 소프트웨어와 웹사이트의 컴포넌트 파일들(html, image, css, javacript 등)을 저장하는 컴퓨터로, 인터넷에 연결되어 웹에 연결된 다른 기기들이 웹 서버의 데이터(컴포넌트 파일들)를 주고받을 수 있도록 한다.

  • 소프트웨어 측면: 기본적으로 웹 사용자가 어떻게 호스트 파일들에 접근하는지를 관리한다. 이 문서에서 웹 서버는 HTTP서버로 국한합니다. HTTP 서버는 URL(Web addresses)과 HTTP(브라우저가 웹 페이지를 보여주기 위해 사용하는 프로토콜)의 소프트웨어 일부이다.

WAS(Web Application Server)란?

웹 서버 (Web server) + 웹 컨테이너 (Web container)

동적 컨텐츠를 제공하기 위해 만들어진 Application 서버로, 주로 데이터베이스 서버와 같이 수행이 된다. 인터넷 상에서 HTTP를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어로 볼 수 있다.

ex) Tomcat, Jeus

WAS를 통해 요청에 맞는 데이터를 DB에서 가져와 비즈니스 로직에 맞게 결과를 만들어 제공함으로써 자원을 효율적으로 사용할 수 있게 해준다.

웹 서버와 WAS의 차이

둘의 차이는 어떤 타입의 컨텐츠를 제공하느냐의 차이이다.

사실 WAS 자체로 웹 서버의 역할을 수행하기 때문에 웹 서버를 꼭 앞단에 두어야 할 이유는 없다.
그럼에도 일반적으로 웹 서버를 WAS 앞 단에 배치하게 되는데, 왜 이런 구조를 사용하는 것일까?

웹 서버가 필요한 이유

클라이언트(웹 브라우저)에 이미지 파일(정적 컨텐츠)을 보내는 과정을 생각해보자.

  • 정적인 파일들은 웹 문서(HTML)가 클라이언트로 보내질 때 함께 제공되지 않는다.
  • 클라이언트는 HTML 문서를 먼저 받은 후, 그에 맞는 정적 컨텐츠들을 다시 서버에 요청한다.
  • 웹 서버가 정적인 파일들을 App Server까지 가지 않고 앞 단에서 빠르게 보내준다.

-> 정적 컨텐츠만 처리하도록 기능을 분배함으로써 WAS의 부담을 줄여준다.

참고
예전에는 톰켓(WAS)이 정적 요소들을 넘겨주는 속도가 느려서 아파치(Web Server)가 그것을 대신해줘야 했다.
그러나 요즘은 톰켓의 정적 리소스 제공이 빨라져 속도 면에서는 크게 차이가 없다.

위의 내용을 통해 그럼 정말 WAS만 써도 되는 것 아닌가? 하는 생각이 들 수 있다.
하지만 Apache나 Nginx와 같은 웹 서버들은 정적 리소스나 가벼운 동적 리소스를 제공하는 것 외에도 다양한 기능들을 제공한다.

웹 서버의 다양한 기능들

1. 리버스 프록시(Reverse Proxy)

: 서버로 접근하는 클라이언트로부터의 보안을 위한 서버로, HTTP 요청을 특정 네트워크 또는 서버로 전달하는 역할을 수행한다. 특히, 외부로 오픈되지 않은 내부 서버에 접근할 수 있도록 요청과 응답을 전달하는 역할을 한다.

  • 캐싱: 클라이언트가 요청한 내용을 캐싱해둔다. (전송 시간 절약, 네트워크 병목 현상 방지)
  • 보안: 서버 정보를 클라이언트로부터 숨길 수 있다. 실제 서버의 IP가 노출되지 않는다.

포워드 프록시(Forward Proxy) - 요청을 보내는 서버(유저)를 대신하여 특정 작업들을 처리한다.

  • 캐싱: 리버스 프록시와 동일
  • 익명성: 클라이언트의 요청을 감추는 역할을 한다. (ex. VPN)

2. 로드 밸런싱(Load balancing)

: 서버로 접근하는 부하를 분산하기 위한 서비스

  • fail over(장애 극복), fail back (장애 복구)처리에 유리하다.
  • 특히 대용량 웹 어플리케이션의 경우 (여러 개의 서버 사용) 무중단 운영을 통해 fail over에 쉽게 대응할 수 있다.

❓ WHY ❓ 웹 서버 + WAS

결과적으로, 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 웹 서버와 WAS를 분리하여 함께 사용한다.
웹 서버를 WAS 앞에 두고 필요한 WAS들을 웹서버에 플러그인 형태로 설정하면 더욱 효율적인 분산 처리가 가능하다.

참고
https://helloworld-88.tistory.com/71
https://playcode.tistory.com/113
https://velog.io/@ctp102/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

profile
👩🏻‍🌾기억을 기록하고 공유하자📚

0개의 댓글