본문 바로가기
기타

[Web] HTTP, Web Server, WAS

by 민죠미 2022. 7. 28.

HTTP 란

하이퍼텍스트 전송 프로토콜(HTTP)은 HTML과 같은 하이퍼미디어 문서를 전송하기 위한 애플리케이션 레이어 프로토콜이다. HTTP는 클라이언트가 요청을 생성하기 위한 연결을 연다음 응답을 받을때 까지 대기하는 전통적인 클라이언트-서버 모델을 따른다. HTTP는 무상태 프로토콜이며, 이는 서버가 두 요청간에 어떠한 데이터(상태)도 유지하지 않음을 의미한다.

Stateless vs. Stateful

stateless 프로토콜은 수신자가 이전 요청의 데이터(상태)를 유지하지 않는 커뮤니케이션 프로토콜이다. 전송자는 관련된 데이터(상태)를 수신자에게 보내는데, 이 때 모든 요청은 이전 요청의 데이터와 관계없이 독립적으로 수행될 수 있어야한다.

ex) Internet Protocol (IP), HTTP

stateful 프로토콜은 수신자가 이전 요청의 세션 데이터(상태) 를 유지하는 커뮤니케이션 프로토콜이다.

ex) TCP, FTP


웹 서버(Web Server)

  • HTTP 기반으로 동작
  • 정적 리소스 제공, 기타 부가기능
  • 정적(파일) HTML, CSS, JS, 이미지, 영상
  • 예) NGINX, APACHE

 

웹 애플리케이션 서버(WAS - Web Application Server)

  • HTTP 기반으로 동작
  • 웹 서버 기능 포함+ (정적 리소스 제공 가능)
  • 프로그램 코드를 실행해서 애플리케이션 로직 수행
    • 동적 HTML, HTTP API(JSON)
    • 서블릿, JSP, 스프링 MVC
  • 예) 톰캣(Tomcat) Jetty, Undertow

 

웹 시스템 구성 - WEB + WAS + DB

WAS + DB 구성

WAS가 정적 리소스, 애플리케이션 로직 모두 제공함으로써 너무 많은 역할을 담당, 서버 과부하의 우려가 있다. 가장 비싼 애플리케이션 로직이 정적 리소스 때문에 수행이 어려울 수 있다. 또한 WAS 장애시 오류 화면도 노출이 불가능하다.

WEB + WAS + DB 구성

  • 정적 리소스는 웹 서버가 처리
  • 웹 서버는 애플리케이션 로직같은 동적인 처리가 필요하면 WAS에 요청을 위임
  • WAS는 중요한 애플리케이션 로직 처리 전담
  • 효율적인 리소스 관리
    • 정적 리소스가 많이 사용되면 Web 서버 증설
    • 애플리케이션 리소스가 많이 사용되면 WAS 증설
  • 정적 리소스만 제공하는 웹 서버는 잘 죽지 않음
  • 애플리케이션 로직이 동작하는 WAS 서버는 잘 죽음
  • WAS, DB 장애시 WEB 서버가 오류 화면 제공 가능

댓글