WAS VS Webserver?

Tae Jun Park·2024년 10월 4일
post-thumbnail

Web Server?

Web ?

  • 인터넷을 기반으로 한 서비스로 주로 정보를 공유하고 검색할 수 있는 서비스를 말합니다.
  • URL(주소), HTTP(통신 규칙), HTML(내용)

Server?

  • 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템 입니다.

WebServer?

즉 웹서버는 클라이언트가 브라우저에 url을 입력하여 페이지를 요청하면, http 요청을 받아들여 HTML 문서와 같은 정적인 콘텐츠를 사용자에게 전달해주는 역할을 합니다.

여기서 정적컨텐츠?

  • 요청 인자 값에 상관없이 달라지지 않는 컨텐츠를 의미합니다. (html,css,image)
  • 어느 사용자가 요청하든 항상 동일한 컨텐츠를 의미합니다.
    Ex) 사용자가 어떤 페이지에 접근했을 때, 웹 사이트의 로고, 기본 정보, 메뉴 등 동일한 내용을 볼 수 있습니다.

위의 그림과 같이 Web Server는 Client 로 부터 HTTP 요청을 받을 수 있고 요청에 맞춰 /path/index.html의 파일의 내용을 읽고, HTML 코드 Ex: <h1> 안녕하세요 <h1>의 를 클라이언트에게 전송하여 사용자가 브라우저에서 볼 수 있도록 해야합니다.

WebServer 만으로는 동적인 컨텐츠를 생성할 수 없습니다. 동적인 컨텐츠는 요청에 따라 변화하는 내용으로, 주로 데이터베이스와 상호작용하여 생성됩니다!


WAS(Web Application Server)?

따라서 동적인 컨텐츠를 생성하기 위해 WAS를 이용합니다.

사용자가 동적 컨텐츠를 요청할시, Web Application Server(WAS)로 전달하여 WAS가 처리한 결과를 클라이언트에게 전달합니다.

여기서 동적 컨텐츠?

  • 사용자의 요청 인자에 따라 바뀔 수 있는 컨텐츠를 의미합니다.
  • Ex) 로그인에 성공하면 로그인한 회원 정보를 통하여 "홍길동님" 환영합니다. 라고 알려주는 것입니다.
  • 이는 데이터베이스의 조회를 필요로 합니다.
  • 즉 사용자와 상호작용하며 변화하는 내용을 제공하는 웹 페이지의 요소를 의미합니다.

여기서 위의 그림을 보시면 접근하는 ID에 따라서 반응하는 것이 동적으로 달라지는 것을 확인할 수 있습니다.

WAS의 기능?

  • 클라이언트로부터 HTTP 요청을 받을 수 있습니다. (대부분의 WAS는 WebServer도 내장하고 있습니다)
  • 요청에 맞는 정적 컨텐츠 (html, jpeg, css)를 제공할 수 있습니다.
  • DB 조회나 다양한 로직 처리를 통해 동적 컨텐츠를 제공할 수 있습니다.

WAS가 WebServer의 역할도 할 수있는데 그러면 굳이 WebSever는 왜?

  • 책임 분할을 통한 서버 부하방지
    • 정적 컨텐츠는 WebServer, 동적 컨텐츠는 WAS가 담당하도록 합니다.
    • 여러 대의 WAS 로드 밸런싱을 통하여 WAS가 처리해야 하는 요청을 여러 WAS가 나누어서 처리할 수 있도록 할 수 있습니다.

여기서 로드 밸런싱이란?

로드밸런싱은 들어오는 클라이언트 요청을 여러 WAS 서버에 분산하여 서버 부하를 균등하게 나누는 기법입니다.
이를 위해 WebServer가 프록시 서버 역할을 하여 클라이언트의 요청을 여러 대의 WAS로 나눠서 전달합니다.

WAS를 여러대 사용?

하나의 물리적 서버 또는 가상 서버에서 Tomcat등을 여러번 설치하고, 각각의 인스턴스를 서로 다른 포트 번호 (예: 8080, 8081, 8082등) 에서 실행합니다.

인스턴스는 독립적으로 동작하고 서로 다른 요청을 처리할 수 있습니다.

WebServer(Nginx, Apache)는 들어오는 요청을 여러 개의 Tomcat 인스턴스에 분산하는 역할을 합니다

전체적인 흐름

  1. 서로 다른 사용자들이 웹 어플리케이션에 동시에 접근합니다.
  2. 사용자가 웹 브라우저에서 페이지를 요청할 때 이 요청이 WebServer에 도달합니다.
  3. WebServer는 이 요청을 수신하고, 로드밸런싱 알고리즘에 따라 처리합니다.

이를 통해 모든 사용자의 요청을 보다 빠르고 안정적으로 처리할 수 있습니다.

또한 리버스 프록시를 통해 실제 서버를 외부에 노출하지 않을 수 있습니다.

리버스 프록시?

클라이언트의 요청을 받아 내부 서버로 전달하고, 서버의 응답을 클라이언트에 반환하는 중개 서버 역할을 하는 기술입니다.
실제 서버의 IP 주소와 포트 번호를 클라이언트에게 숨길 수 있어 리버스 프록시의 IP 주소만 알게 되므로, 내부 인프라에 대한 공격을 어렵게 만들 수 있습니다.

결론

서비스 확장성과 안정성을 고려한다면 앞 단에 Web Server를 두는 것이 유리합니다.

profile
나는 박태준

0개의 댓글