Web Server와 WAS

seeun·2021년 9월 2일
0
post-thumbnail

1. 정적 콘텐츠와 동적 콘텐츠

📌정적 컨텐츠

  • 요청 인자 값에 상관없이 달라지지 않는 컨텐츠 (html, css, image...)
  • 어느 사용자 요청이든 항상 동일한 컨텐츠

📌동적 컨텐츠

  • 요청 인자에 따라 바뀔 수 있는 컨텐츠
  • 웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물 (* Servlet: WAS 위에서 돌아가는 Java Program)



2. Web Server VS WAS

📌Web Server란?

웹 브라우저(클라이언트)로부터 HTTP요청을 받아 HTML 문서와 같은 정적 컨텐츠를 제공하는 프로그램

🔨기능

  • HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스 하는 기능 담당
  1. 정적 컨텐츠 요청시 정적 컨텐츠 제공
  2. 동적 컨텐츠 요청시 Web Application Server(Was)로 전달하여 WAS가 처리한 결과를 클라이언트에 전달

📌Web Application Server(Was)란?

DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 프로그램 웹 컨테이너 혹은 서블릿 컨테이너라고도 불린다. (컨테이너란 JSP, Servlet을 실행시킬 수 있는 소프트웨어를 말한다. 즉 WAS 는 JSP, Servlet 구동 환경을 제공한다.)

🔨기능

  • WAS = Web Server + Web Container

  • 클라이언트로부터 HTTP 요청을 받을 수 있다. (대부분의 WAS는 Web Server 내장)

  • 요청에 맞는 정적컨텐츠를 처리하고 DB 조회나 다양한 로직 처리를 통해 동적 컨텐츠까지 제공



WAS가 다해주는데 Web Server가 굳이 왜 필요??



3. Web Server가 필요한이유

📌웹서버 사용시 장점

1. 책임 분할을 통한 서버 부하 방지- 정적 컨텐츠는 웹서버, 동적 컨텐츠는 WAS가 담당 - 웹서버를 통해 정적인 파일들을 Application Server까지 가지 않고 앞단에서 빠르게 보낼 수 있음
2. 여러 대의 WAS 로드밸런싱 - WAS가 처리해야 하는 요청을 여러 WAS가 나누어서 처리할 수 있도록 설정

📎 Load Balancing이란?
하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 서버의 로드율 증가, 부하량, 속도저하 등을 고려하여 여러 대의 서버가 적절히 분산처리하여 해결해주는 서비스


📎 여러 개의 WAS를 관리하는 Health Check

  • 서버에 주기적으로 HTTP 요청을 보내 서버의 상태를 확인(특정 url 요청하여 응답이 오는지 확인하는 것)

  • 서버에 이상이 생기면 was 에 대한 연결을 자동으로 차단한다. fails 설정만큼 정상 응답이 오지 않으면 비정상 서버로 간주, 복구 후에 passes 설정만큼 정상 응답이 온다면 해당 서버로 요청을 다시 전달함

    • Interval : health check를 통해 서버 상태를 확인하는 요청을 날리는 주기(default :5초)
    • Fails : 설정값 만큼 실패하면 서버가 비정상이라고 인지(default :1회)
    • Passes : 서버가 다시 복구되어 요청이 설정값 만큼 연속 성공하면 서버가 정상으로 인지(default :1회)

3. 물리적으로 분리하여 보안강화 - 리버스 프록시를 통해 실제 서버를 외부에 노출하지 않을 수 있다.


🌈 정리

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

Reference

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html
http://cybersecuritynews.co.uk/popular-web-application-attacks-and-recommendations/
https://www.youtube.com/watch?v=mcnJcjbfjrs

profile
🤹‍♂️개발 기록 노트

0개의 댓글