FrontEnd - Web Server와 WAS의 차이

dobby·2024년 12월 5일
0
post-thumbnail

Web Server

HTTP 프로토콜을 기반으로 하여 클라이언트의 요청을 서비스하는 기능을 담당한다.

웹 서버는 클라이언트가 웹 브라우저를 통해 요청한 정적 콘텐츠를 제공하는 역할을 한다.
웹 서버는 주로 HTTP 프로토콜을 사용하여 작동하며, 클라이언트가 URL을 통해 요청한 웹 페이지를 찾아 전송해준다.

웹 서버는 웹 사이트의 코드와 데이터를 호스팅하는 기술이다.
브라우저에 URL을 입력할 때 이 URL은 실제로 웹 서버의 주소 식별자이다.

브라우저와 웹 서버는 다음과 같이 통신한다.

  1. 브라우저는 URL을 사용하여 서버의 IP 주소를 찾는다.
  2. 브라우저는 정보에 대한 HTTP 요청을 보낸다.
  3. 웹 서버는 데이터베이스 서버와 통신하여 관련 데이터를 찾는다.
  4. 웹 서버는 HTTP 응답으로 HTML 페이지, 이미지, 비디오 또는 파일과 같은 정적 컨텐츠를 브라우저에 반환한다.
  5. 브라우저가 정보를 표시한다.

블로그, 헤더 이미지 또는 기사와 같은 정적 컨테느를 호스팅하는 웹 사이트를 웹 서버에서 실행할 수 있다.
하지만 대부분의 웹 사이트와 웹 애플리케이션은 훨씬 더 대화형이기 때문에, 애플리케이션 서버 (WAS)가 필요하다.

  • 정적인 컨텐츠 제공
  • was를 거치지 않고 바로 자원을 제공
  • 동적이 컨텐츠를 제공하기 위한 요청 전달
  • 클라이언트의 요청(request)를 was에 보내고, was가 처리한 결과를 클라이언트에게 전달(response)
  • 클라이언트는 일반적으로 웹 브라우저를 의미한다.

📌 Web Server가 필요한 이유

클라이언트에 이미지 파일(정적 컨텐츠)를 보내는 과정을 생각해보자.
이미지 파일과 같은 정적인 파일들은 웹 문서(HTTP 문서)가 클라이언트로 보내질 때 함께 가는 것이 아니다.

클라이언트는 HTML 문서를 먼저 받고, 그에 맞게 필요한 이미지 파일들을 다시 서버로 요청하면 그때서야 이미지 파일을 받아온다.

Web Server를 통해 정적인 파일들을 Application Server까지 가지 않고 앞단에서 빠르게 보내줄 수 있다.
따라서 Web Server에서는 정적 컨텐츠만 처리하도록 기능을 분할하여 서버의 부담을 줄일 수 있다.


WAS(Web Application Server)

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

HTTP를 통해 컴퓨터나 장치에서 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)이다.

WAS 서버는 웹 애플리케이션을 실행하여 동적 콘텐츠를 생성하고, 웹 서버와 클라이언트 간의 데이터 처리를 담당하는 역할을 한다.
WAS 서버는 클라이언트의 요청에 따라 데이터베이스에서 정보를 가져오거나, 웹 애플리케이션을 실행하여 동적인 웹 페이지를 생성한 후 결과를 웹 서버에 전달한다.
웹 서버는 이를 받아 클라이언트에게 전달한다.

웹 사이트에서 대화형 컨텐츠에 엑세스하려고 할 때, 프로세스는 다음과 같이 작동한다.

  1. 브라우저는 URL을 사용하여 서버의 IP 주소를 찾는다.
  2. 브라우저는 정보에 대한 HTTP 요청을 보낸다.
  3. 웹 서버는 요청을 애플리케이션 서버(WAS)로 전송한다.
  4. 애플리케이션 서버는 비즈니스 로직을 적용하고 다른 서버 및 서드 파티 시스템과 통신하여 요청을 수행한다.
  5. 애플리케이션 서버는 새 HTML 페이지를 렌더링하고 이를 응답으로 웹 서버에 반환한다.
  6. 웹 서버는 브라우저에 응답을 반환한다.
  7. 브라우저가 정보를 표시한다.

사용자가 장바구니에 항목을 추가하거나, 물품을 결제할 때 애플리케이션 서버와 상호 작용한다.

ex) 온라인 쇼핑몰, 은행 인터넷 뱅킹, SNS 등


📌 WAS가 필요한 이유

웹 페이지는 정적 컨텐츠와 동적 컨텐츠가 모두 존재한다.
사용자의 요청에 맞게 적절한 동적 컨텐츠를 만들어서 제공해야 한다.

이때, Web Server만을 이용한다면, 사용자가 원하는 요청에 대한 결과값을 모두 미리 만들어 놓고 서비스해야 한다.
하지만, 이렇게 수행하기에는 자원이 절대적으로 부족하다.

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


Web Server와 WAS Server 작동

실제 웹 서비스 환경에서는 웹 서버와 WAS 서버가 협업하여 작동한다.
일반적으로 웹 서버는 정적 컨텐츠를 처리하고, WAS 서버는 동적 컨텐츠를 처리하는 역할를 맡아 사용자에게 원활하고 다양한 웹 서비스를 제공하게 된다.

이를 통해 웹 사이트의 로딩 속도와 서비스 품질이 향상되며, 웹 애플리케이션이 성능이 개선된다.

  • 온라인 쇼핑몰
    사용자가 상품을 검색하거나 장바구니에 담는 등의 동적 작업을 WAS 서버에서 처리하고, 상품 이미지나 스타일 정보 등 정적 컨텐츠를 웹 서버에서 제공한다.

  • 온라인 커뮤니티
    게시판 글 작성, 댓글 달기 등 동적인 기능은 WAS 서버에서 처리하고, 게시글 내용이나 이미지 등 정적 콘텐츠는 웹 서버에서 제공한다.

새 요청은 항상 웹 서버에 먼저 수신된다.
웹 서버에서 정보 자체를 생성할 수 있는 경우, 그렇게 한 다음 HTTP 응답을 다시 보낸다.
또한, 사용자가 요청안 데이터가 캐시에 이미 있지 않은지 확인한다.

웹 서버에서 사용자가 필요로 하는 컨텐츠에 엑세스할 수 없는 경우 웹 서버는 해당 요청을 애플리케이션 서버에 전달한다.
그러면 애플리케이션 서버가 데이터를 처리하고 비즈니스 로직을 사용하여 올바른 정보를 제공한다.
그런 다음 요청을 웹 서버로 다시 전달하고, 웹 서버가 이를 사용자에게 전달한다.


📌 멀티스레딩

멀티스레딩에서 서버는 여러 스레드를 동시에 생성하고 실행하며, 각 스레드는 별도의 태스크 또는 태스크의 일부를 처리한다.
멀티스레디이 지원되면 더 많은 웹 트래픽을 관리하면서 웹 컨텐츠를 더 빠르게 제공하는 데 도움이 된다.

대부분의 웹 서버는 멀티스레딩을 지원하지 않는다.
웹 서버는 각각의 새 연결 요청을 대기열에 배치하고, 이벤트 루프를 사용하여 대기열에서 새로 들어오고 나가는 요청을 모니터링한다.
효율성을 높이기 위해 서버는 비차단 I/O 및 콜백을 사용하여 요청을 처리한다.
웹 서버는 비차단 작업 및 이벤트 기반 아키텍처를 통해 동시 연결을 처리할 수 있다.

애플리케이션 서버는 멀티스레딩을 사용하여 높은 확장성과 효율성을 제공한다.
요청에 외부 리소스가 필요한 경우 애플리케이션 서버는 별도의 스레드를 사용하여 이러한 상호 작용을 처리한다.
여러 스레드를 한 번에 처리하여 많은 클라이언트 상호 작용을 병렬로 처리할 수 있다.

📌 웹 서버와 WAS 서버 비교

항목웹 서버WAS 서버
정의정적인 콘텐츠(HTML, CSS, 이미지 등)를 제공하는 서버동적인 콘텐츠(웹 애플리케이션)을 처리하고 제공하는 서버
기능HTTP 프로토콜을 이용해 클라이언트에게 웹 페이지 제공웹 애플리케이션 실행 및 데이터베이스 등 데이터 처리, 웹 서버와 클라이언트간의 중계 역할
사용되는 프로토콜주로 HTTP, FTP와 SMTP도 지원많은 프로토콜 지원
멀티스레딩일반적으로 멀티스레딩을 사용하지 않음멀티스레딩을 사용하여 요청을 동시에 처리
주요 소프트웨어Apache, NginX, IISTomcat, JBoss, WebLogin, WebSphere
profile
성장통을 겪고 있습니다.

0개의 댓글