[HTTP] WAS, WS(웹 서버) 차이를 알아보자

안녕하세요 오늘은 웹 백엔드 개발자라 하면은 꼭 알아야 웹 서버, 웹 어플리케이션 서버 개념에 대해서 알아보도록 

하겠습니다.


 

일단 웹 브라우저 및 웹 환경에서는 클라이언트와 서버가 통신하기 위해 HTTP 라는 통신 프로토콜을 통해 데이터를

주고 받습니다.

 

 

🖐 여기서 그럼 HTTP 가 무엇인지를 궁금해 하실 수 있습니다.

 

HTTP란?

HTTP는 클라이언트와 서버 사이에 이루어지는 요청/응답(request/response) 프로토콜이다

간단하게 이정도 의미라고만 알고 있으면 될 것 같습니다.

자세하게 HTTP에 대하여 공부하시고 싶으시면

https://www.cloudflare.com/ko-kr/learning/ddos/glossary/hypertext-transfer-protocol-http/

요 링크에서 자세한 내용을 확인할 수 있습니다.

 

간단하게 서버에 대하여 공부하기 전에 서버가 하는 업무를 간단하게 사진으로 봐보겠습니다

 

 

웹 개발을 공부 해본적이 있다면 html 코드를 작성하고 폼에 띄워본적이 있을 것 입니다. 

그 html 코드를 화면에 띄울 때 중간 매개채 역할을 해주는게 바로 웹 서버(WS) 입니다.

웹 서버란?

HTTP 또는 HTTPS를 통해 웹 브라우저에서 요청하는 정적인 문서(=HTML), CSS, Image 파일 등을 전송해주는 서비스 프로그램 을 말한다

 

웹 서버 동작 사진

웹 서버(WS)  특징

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

 

WS는 정적인 데이터만 처리할 수 있기 때문에,

비즈니스 로직 처리나 DB 연동 문제를 해결하기 위해 등장한 게 웹 어플리케이션 서버(WAS) 입니다.

WAS란?

Web 서버처럼 HTTP 프로토콜을 기반으로 동작하고 웹 서버 기능을 포함하여 동적 리소스도 제공 할 수 있는 Application 서버입니다.

WAS 동작 사진

WAS(Web Application Server)

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

웹 서버 => WS

웹 어플리케이션 서버 => WAS

로 이제 줄여서 포스팅 하겠습니다.

 


 

 

📢 이제 간단한 WS, WAS에 대해 알아보았으니 둘의 차이점에 대해서 알아보겠습니다

  • WS는 정적 리소스파일, WAS는 비즈니스 로직
  • 사실 둘의 용어도 경계가 애매하다.
    • WS도 프로그램을 실행하는 기능을 포함하기도 함
    • WAS 서버도 WS의 기능을 제공함
  • 자바는 서블릿 컨테이너 기능을 제공하면 WAS
    • 서블릿 없이 자바코드를 실행하는 서버 프레임워크도 있음
  • WAS는 비즈니스 로직을 실행하는데 더 특화 (=DB연동)

 

🔔 이제 WS와 WAS에 대해서 알았으니, 우리가 지금 사용하는 웹 브라우저에서는 어떻게 구성이 되어있는지 알아보자

웹 시스템 구성 

1) WAS + DB

  • WAS , DB 만으로 시스템 구성 가능
  • WAS는 정적 리소스, 애플리케이션 로직 모두 제공 가능

 

그러나 위 조합을 사용하면 단점이 있습니다

  • WAS가 너무 많은 역할을 담당, 서버 과부화 우려
  • 가장 중요한(=복잡한) 비즈니스 로직이 정적 리소스 때문에 수행이 어려울 수 있음
  • WAS 장애 발생 시 오류 화면도 노출 불가능 (=>아예 안켜짐..)

그래서 분산작업을 할 수 있게, 새로운 구성을 추가 했습니다.

 

2) WAS + DB + WS(추가)

  • 정적 리소스 → WS가 처리
  • WAS는 비즈니스 로직, 동적인 처리 필요시 WAS가 처리
  • WAS는 중요한 비즈니스 로직 처리 담당

⇒ 효율적인 리소스 관리

  • 정적 리소스가 많이 사용되면 WS만 증설 하면 됨
  • 동적처리가 많이 필요하면 WAS를 증설 하면 됨
  • 정적 리소스만 제공하는 웹 서버는 잘 죽지 않는다.
  • 애플리케이션 로직이 동작하는 WAS 서버는 잘 죽음
  • WAS, DB 장애시 WEB 서버가 오류 화면 제공 가능.

 

즉 위 구성을 통해 WAS에 역할을 분산해서 서버 부하를 줄이고, WAS서버를 잘 관리할 수 있습니다.

 

참고로 저는 Java+Spring 기반의 백엔드 개발 공부를 하고 있기 때문에

스프링부트를 기준으로 말씀을 드리자면 스프링부트는 내장 톰캣을 사용하고 있고 웹 시스템 구성은 

2번째(WS+WAS+DB) 조합을 사용하는 걸로 알고 있습니다.

 

이상 포스팅 마치겠습니다.

728x90