無테고리 인생살이

[Web] Web application을 이해하고 Web Server와 WAS의 차이를 알아보자. 본문

Web

[Web] Web application을 이해하고 Web Server와 WAS의 차이를 알아보자.

無격 2023. 1. 10. 23:12
  • application이란?
  • Web application이란?
  • Web Server VS WAS
  • Web Service Architecture

 


 

애플리케이션(application)이란?

인터넷으로 두 대의 컴퓨터(웹 클라이언트-웹 서버)를 연결해 요청과 응답으로 데이터를 주고받기 전에는,

일반적으로 한 대의 컴퓨터에 사용자가 필요한 소프트웨어(프로그램)을 설치해서 사용했다.

EX) 한글(.hwp)이나 MS워드 프로그램을 설치해서 로컬 pc에서 문서 작업

 

이렇게 컴퓨터에 설치해서 실행시키는 소프트웨어, 즉 컴퓨터의 운영체제 위에서 실행되는 소프트웨어를 응용 소프트웨어라고 한다. 응용 소프트웨어는 응용 프로그램, 소프트웨어, 프로그램, 애플리케이션(application) 등으로도 불린다. 모두 동의어

 

결론, 애플리케이션 = (응용)소프트웨어 = 프로그램


웹 애플리케이션(Web application)이란?

컴퓨터에 설치해서 사용해야 했던 애플리케이션의 기능을 웹이 대신하는 것이다.

즉, 웹 브라우저에서 실행되는 애플리케이션(프로그램)인 셈이다.

웹 애플리케이션은 별도의 애플리케이션을 설치하지 않고, 웹 브라우저에서 애플리케이션 기능을 수행할 수 있도록 만든 웹 서비스를 의미한다. 

EX) MS워드 프로그램을 설치하지 않고도,구글 Chrome의 Google Docs를 통해 문서 작업 가능

 

아직까지도 많은 사람들이 웹 사이트에 접속한다는 표현을 쓰지만, 사실은 웹 애플리케이션을 이용하고 있는 경우가 대부분이다.

 

 

웹 애플리케이션의 대표 유형

  1. 이메일 : 네이버 메일, 구글 G메일 등
  2. 전자 상거래 : 온라인 쇼핑몰, 쿠팡 등 
  3. 온라인 뱅킹 : OO은행
  4. SNS : 인스타그램, 페이스북 등

 

웹 애플리케이션 사용의 이점

  1. 편의성 : 직접 다운로드할 필요가 없어, 간편하게 이용 가능하다.
  2. 접근성 : 모든 디바이스에서, 모든 웹 브라우저에서 접근할 수 있다. 

 


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

 

Web Server

: HTTP 통신을 기반으로 HTML, CSS, JS, 이미지, 영상과 같은 정적인 Web page를 제공하는 서버 프로그램

 

Web Server

역할

  1. 클라이언트에게 정적 리소스를 전달한다. (모든 사용자에게 동일한 리소스가 제공)
  2. WAS와 같이 사용될 경우,
    동적 컨텐츠를 요청받으면 WAS에게 요청을 넘겨주고, WAS가 처리한 결과를 클라이언트에게 전달한다.

EX) Apache, Nginx

 

 

 

WAS 

: HTTP 통신을 기반으로 애플리케이션 로직을 수행한 결과인 동적인 Web page를 제공하는 서버 프로그램

 

WAS

역할

  1. 프로그램 코드를 실행해서 애플리케이션 로직을 수행한 뒤, 클라이언트에게 동적 리소스를 제공한다.
    (각 사용자마다 다른 리소스를 제공할 수 있음)
  2. 정적 리소스를 제공하는 웹 서버의 역할도 할 수 있다.

EX) 톰캣(Tomcat), JBoss

 

 

 

=> 결론, 웹 서버는 정적 리소스 처리에 용이, 웹 애플리케이션 서버(WAS)는 애플리케이션 코드 수행에 용이


Web Service Architecture

웹 서비스는 다양한 구조를 가질 수 있다.

  1. Client <-> Web Server <-> DB
  2. Client <-> WAS <-> DB
  3. Client <-> Web Server <-> WAS <-> DB (주로 사용 !)

 

1번 : 웹 서버에서 정적 컨텐츠만을 제공하면 되는 경우에 사용

2번 : 웹 서버에서 API로 (JSON 형태의) 데이터만을 주고 받으면 되는 경우에 사용

3번 : 요청에 따라 정적 또는 동적 컨텐츠를 모두 제공해야하는 경우에 사용 (가장 많이 쓰이는 웹 서비스 아키텍처)

 

정적, 동적 컨텐츠를 모두 제공해야하는 경우에 2번과 같이 WAS만으로도 처리가 가능하다.
하지만 아래 그림과 같이 WAS 앞에 Web Server를 두는 구조를 많이 사용한다.

이렇게, 두 서버를 구분하는 이유는? 

Client - Web Server - WAS - DB

  1. 정적 컨텐츠를 response하는 비교적 비용이 싼 작업마저 WAS가 담당하면, WAS에 부하가 발생할 가능성이 있다.
  2. WAS는 Web Server보다 비교적 에러(장애)가 자주 발생하기 때문에, 두 서버를 구분하지 않고 WAS만 사용하면 다운됐을 때, 에러 페이지조차 클라에 전달할 수 없다. (Failover 불가)
  3. 효율적인 리소스 관리 가능
    (정적 리소스가 많이 요구되면 Web Server만 Scale-out, 애플리케이션 리소스가 많이 요구되면 WAS만 Scale-out하면 된다.)
  4. 상대적으로 적은 트래픽이 발생하는 Web Server에서 SSL 처리하면 WAS는 신경 쓸 필요가 없어 보안을 강화할 수 있다.

 

* Failover에 대해 간단히 알고 싶다면, 아래 글을 참고해 주세요 !

 

[개발용어] Failover, Failback이란?

Failover이란? 컴퓨터 서버에서 장애가 발생했을 때, 설정해 놓은 예비 백업 서버로 자동 전환되는 과정(처리)를 말한다. ex) 현재 운영 중인 active 서버에 장애가 발생해 다운됐을 경우, failover를 통

chunsubyeong.tistory.com

 

 

참고자료

https://aws.amazon.com/ko/what-is/web-application/

https://better-together.tistory.com/230?category=887985