TIL - 웹서버와 웹어플리케이션서버의 차이

Jisu Park·2021년 7월 20일
0

오늘의개발일지-TIL

목록 보기
6/12
post-thumbnail

📄 정적 페이지와 동적 페이지

웹서버와 웹어플리케이션서버(이하 WAS)의 차이를 알기 전에 정적 페이지와 동적 페이지가 뭔지 이해하고 넘어가야 한다. 그래야 웹서버와 WAS의 차이를 정확하게 이해할 수 있기 때문이다. 정적페이지와 동적페이지는 모두 웹페이지이지만 처리되는 방법에 따라 구분되어 있다.

💾 정적 페이지

  • 항상 같은 내용을 보여주는 웹페이지
  • 사용자가 서버에 웹페이지를 요청하면 서버 안에 이미 만들어져 있는 파일(EX. HTML 파일, 이미지, JavaScript 파일 등)을 사용자에게 보여주는 경우에 해당

정적 페이지 장단점

장점

  • 요청에 대한 파일만 전송하면 되기 때문에 추가적인 작업이 없어 빠르다.
  • 웹서버만 구축하면 되므로 비용이 적게 든다.

단점

  • 저장된 정보만 보여줄 수 있으므로 서비스가 한정적이다.
  • CUD(추가/수정/삭제) 작업을 모두 수동으로 해야해서 관리가 힙들다.

👩‍💻 동적 페이지

  • 요청에 따라 각각 다른 내용을 보여주는 웹페이지
  • 사용자가 서버에 웹페이지를 요청하면, 웹 서버에 의해 실행되는 프로그램을 통해서 가공/수정된 데이터가 반영된 웹페이지를 사용자에게 보여주는 경우에 해당

동적페이지 장단점

장점

  • 다양한 정보를 조합할 수 있기 때문에 제공할 수 있는 서비스가 다양하다.
  • 웹 사이트 구조에 따라 CUD(추가/수정/삭제) 등의 작업이 용이하여 관리가 쉽다.

단점

  • 사용자에게 웹페이지를 전달하기 전에 처리하는 작업이 필요하여 상대적으로 느리다.
  • 웹서버 외에 추가적인 처리를 위한 어플리케이션 서버(WAS)가 필요하여 추가 비용이 든다.

🔩 웹서버와 WAS


사진 출처 : https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

📤 웹서버

개념
웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html, jpeg, .css 등)를 제공하는 컴퓨터 프로그램

기능
HTTP 프로토콜을 기반으로 하여 클라이언트(웹브라우저 또는 웹크롤러)의 요청을 서비스하는 기능 담당

  • 기능 1) 정적인 컨텐츠를 제공하기 위해 WAS를 거치지 않고 바로 자원을 제공한다.
  • 기능 2) 동적인 컨텐츠를 제공하기 위해 WAS에 요청을 전달하는 역할을 한다. 클라이언트의 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달한다.

📇 웹어플리케이션서버(WAS)

개념

  • DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 어플리케이션 서버(Application Server)
  • HTTP를 통해 컴퓨터나 장치에 어플리케이션을 수행해주는 미들웨어
  • "웹 컨테이너(Web Container)" 혹은 "서블릿 컨테이너(Servlet Container)"라고도 불린다.

기능

  • 프로그램 실행 환경과 DB 접속 기능 제공
  • 여러 개의 트랜잭션(논리적인 작업 단위) 관리
  • 업무를 처리하는 비즈니스 로직 수행

🔔 웹서버와 WAS 구분하는 이유

웹서버와 WAS의 필요성

  • 웹서버를 통해 정적인 파일을 WAS까지 가지 않고도 빠르게 보낼 수 있다.
  • 웹서버에서 정적인 컨텐츠만 처리하도록 기능을 분리하여 서버의 부담을 줄일 수 있다.
  • 웹페이지에는 정적인 컨테츠와 동적인 컨텐츠가 모두 존재하므로 WAS가 필요하다.
  • WAS를 통해 요청에 맞는 데이터를 DB에서 가져와서 비즈니스 로직에 맞게 그때 그때 결과를 만들어 제공함으로써 효율적으로 자원을 이용할 수 있다.

웹서버와 WAS를 분리하는 이유

  1. 서버 부하 방지
    • WAS는 기본적으로 동적인 컨텐츠를 제공하기 위해 존재하는 서버이므로 WAS에서 정적인 컨테츠까지 처리한다면 정적 데이터 처리로 인해 부하가 커져 동적 컨텐츠의 처리가 지연됨에 따라 수행 속도가 느려진다.
  2. 물리적으로 분리하여 보안 강화
    • SSL에 대한 암복호화처리에 웹서버 이용
  3. 여러 대의 WAS 연결 가능
    • fail over(장애 극복), fail back 처리에 유리
    • 특히 대용량 웹어플리케이션의 경우(여러 개의 서버 사용) 웹서버와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.
      예를 들어 WAS에서 오류가 발생하면, 앞단의 웹서버에서 WAS를 이용하지 못하게 한 후 WAS를 재시작함으로써 사용자는 오류를 느끼지 못하게 할 수 있다.
  4. 여러 웹 어플리케이션 서비스 사용 가능

결론 : 자원 이용의 효율성 및 장애 극복, 배포 및 유지 보수의 편의성을 위해 웹서버와 WAS 분리


Reference

profile
언젠간 데이터 분석을 하고 싶은 초짜 프론트엔드 개발자입니다🙃

0개의 댓글