2. Web개발의 이해 - 웹서버 vs WAS

2020. 11. 25. 15:21웹 프로그래밍/웹 프로그래밍 개념 정리

웹서버

  • 웹 서버는 웹 서버 소프트웨어가 동작하는 컴퓨터를 말하지만, 보통 (웹 서버) 소프트웨어로 사용된다.
  • 웹 서버의 가장 중요한 기능은 클라이언트(Client)가 요청하는 HTML 문서나 각종 리소스(Resource)를 전달하는 것.
  • 웹 브라우저나 웹 크롤러가 요청하는 리소스는 컴퓨터에 저장된 정적인 데이터이거나 동적인 결과가 될 수 있다.

 

웹 서버의 시장점유율(2019년 기준)

여기서 주목할 것은 nginx이다. 2008년부터 꾸준한 성장을 보이던 nginx가 2019년부터는 Apache의 점유율을 추월했다.

생각해보기※
네이버나 구글에서 검색어가 포함된 웹페이지를 어떻게 알 수 있을까?

  • 웹 크롤러로 긁어온 데이터를 DB에 저장한다 -> 클라이언트 요청값(검색값)에 맞게 DB에서 가져와
    해당사이트의 URL과 랜더링을 화면에 표현한다.

    *구글의 경우 : 웹 크롤러가 주소별로 웹 크롤링( 페이지의 리소스가 업데이트되는 주기가 빨라서 자주 이터레이팅함 ) 
     리소스들을 주소별로 검토 ⇒ 검색어가 언급된 횟수 + page rank 알고리즘을 사용해 리소스기준 a tag href = "" 를 
    다른 사이트에서 많이 받고 영향력있는 웹사이트로 부터 받은 인기를 기준으로 랭크 매김
    (기준은 인더스트리적 필요에 따라 계속적으로 바뀐다고 함) ⇒ 해당 쿼리가 발생시  
    위 랭크에 맞게 링크와 리소스 일부를 렌더링 *

 

WAS 


WAS(Web Application Server)는 일종의 미들웨어로 웹 클라이언트(보통 웹 브라우저)의 요청 중 웹 애플리케이션이 동작하도록 지원하는 목적. 웹의 요구사항이 다양해지고 점점 복잡해졌고 이를 위해 생긴 개념

 

미들웨어(Middle Ware)

클라이언트 쪽에 비즈니스 로직이 많을 경우, 클라이언트 관리(배포 등)로 인해 비용이 많이 발생하는 문제가 있다.

비즈니스 로직을 클라이언트와 DBMS사이의 미들웨어 서버에서 동작하도록 함으로써 클라이언트는 입력과 출력만 담당

클라이언트는 복잡한 로직이 사라지고 단순히 화면에 그 결과만 보여주면 되기에 크기가 매우 작아짐
프로그램 로직이 변경되어도 모든 클라이언트를 다시 배포할 필요없다는 장점을 가짐 (미들웨어만 변경하만 된다)

WAS의 주요기능

프로그램 실행 환경과 데이터베이스 접속 기능을 제공한다.
여러개의 트랜잭션 관리
업무를 처리하는 비즈니스 로직 수행

웹서버의 기능도 기본적으로 제공하기에 톰캣이라는 WAS만 하나 설치하고 이용이 가능
Apache같은 웹 서버를 설치하지 않아도 된다 .

규모가 커질수록 웹 서버와 WAS를 분리한다(주로 장애 처리 극복을 위해서)

 

WAS로만 정적, 동적 컨텐츠를 모두 처리할 수 있고 정적 컨텐츠 처리에는 웹서버와
큰 성능 차이가 없다. 그럼에도 분리해서 사용하는 이유는?

  • 웹 서버는 상대적으로 WAS보다 간단한 구조
  • 따라서 WAS 자체에 문제가 생겨 재시작해야할 경우, 앞단의 웹 서버가 있으면 해당 WAS를 이용하지 못하도록 하고 WAS를 재시작하면 해당 웹을 사용하는 사람은 WAS의 장애를 인지하지 못하고 이용할 수 있다.
  • 대용량 웹 어플리케이션의 경우 무중단으로 운영하기 위해서 상당히 중요한 기능이다.

 

웹 서버 vs WAS

  • WAS도 보통 자체적으로 웹 서버 기능을 내장하고 있다.
  • 현재는 WAS가 가지고 있는 웹 서버도 정적인 콘텐츠를 처리하는 데 있어서 성능상 큰 차이가 없다.
  • 규모가 커질수록 웹 서버와 WAS를 분리
  • 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 웹서버와 WAS를 대체로 분리