728x90
반응형
SMALL

웹 서버와 WAS의 차이는?

1. 웹 서버의 이해

웹(Web)

  • 일반적인 의미: 거미집 모양의 망
  • 기술적인 의미: 인터넷 망 안에서 정보를 공유, 검색할 수 있게 하는 시스템이다. 인터넷에 연결된 사용자들은 서로 정보를 공유할 수 있다. 월드 와이드 웹(WWW)이라고 부르는 게 바로 웹이다.
  • 인터넷 서비스 종류로 웹만 있는 게 아니다. SMTP(전자우편), FTP(파일전송), Telnet(원격접속) 등 다양하게 있는데, 팀 버너스리가 SMTP이나 FTP를 통해 정보를 주고 받는 것을 비효율적이라 생각하여 WWW(월드 와이드 웹)을 고안하였다.
  • 웹을 지탱하고 구성하는 아래 세 가지 기술이 있다.
    • HTTP(통신 규칙)
    • URI or URL(주소)
    • HTML(내용)

서버(Server)

  • 네트워크를 통해 클라이언트에게 정보나 서비스를 제공하는 컴퓨터 시스템

웹 서버(Web Server)

  • 인터넷을 기반으로 클라이언트에게 웹 서비스를 제공하는 컴퓨터

클라이언트의 입장: 웹 서버에게 주소(url)을 가지고 통신 규칙(http)에 맞게 요청하면, 알맞은 내용(html)을 응답 받음

서버 입장: 클라이언트의 요청을 기다리고, 웹 요청(http)에 대한 데이터를 만들어서 응답, 이때 데이터는 웹에서 처리할 수 있는 html, css, 이미지 등 정적인 데이터로 한정

  • 우리도 로컬 컴퓨터로 쉽게 웹 서버를 만들 수 있다. 무료로 공개된 아파치 웹 서버를 깔고, 포트번호랑 HTML 파일 위치를 정해주면 전세계 사람들에게 웹 서비스를 제공할 수 있는 컴퓨터를 가질 수 있다.
  • 그런데 한 가지 문제가 있다. 웹 서버에서는 html, css, 이미지 등 정적인 자료만 제공할 수 있다. 예를 들어 구구단 페이지를 전달할 때, 정적인 자료만 제공할 수 있으므로 1 x 1 = 1, 1 x 2 = 2... 등의 내용을 미리 다 작성해놔야 한다. 1, 2단이라 아니라 100단, 1000단이라고 생각하면 문제가 심각해진다. (프로그램을 웹에서 실행할 수 있다면 for문 몇 줄이면 끝나는 건데...)
  • 다시 말해, 웹 서버에서 브라우저에게 html을 주기 전에 애플리케이션을 돌려서 데이터를 만들고 그 만든 데이터를 넣어 주면 간단하겠지만 html은 프로그래밍 언어가 아니라 위의 문제를 해결할 수 없었다. (html은 마크업 언어)
  • 결국 요청에 따른 비즈니스 로직 처리나 DB 연동 문제를 해결하기 위해 등장한 게 WAS이다.

웹 서버란 HTTP 프로토콜을 기반으로 클라이언트가 웹 브라우저에서 어떠한 요청을 하면 그 요청을 받아 정적 컨텐츠를 제공하는 서버이다. 정적 컨텐츠란 단순 HTML 문서, CSS, 이미지, 파일 등 즉시 응답 가능한 컨텐츠이다.

이때 웹 서버가 정적 컨텐츠가 아닌 동적 컨텐츠를 요청받으면 WAS에게 해당 요청을 넘겨주고, WAS에서 처리한 결과를 클라이언트에게 전달하는 역할도 해준다.

이러한 웹 서버에는 Apache, NginX 등이 있다.

2. WAS의 이해

Web Application

  • 웹 애플리케이션은 드디어 우리가 원했던, 바로 그것. 웹에서 실행되는 응용 프로그램을 말한다. 우리는 애플리케이션을 통해서 이제 html의 한계를 극복할 수 있게 되었다.

Web Application Server

  • WAS는 웹 애플리케이션을 실행시켜 필요한 기능을 수행하고 그 결과를 웹 서버에게 전달하는 일종의 미들웨어를 말한다.
  • php, jsp, asp와 같은 언어들을 사용해 동적인 페이지를 만들어낼 수 있는 서버이다.
  • 프로그램 실행 환경과 데이터베이스 접속 기능을 제공한다.
  • 비즈니스 로직 수행이 가능하다.
  • 웹 서버 + 웹 컨테이너를 합친 형태다.
  • 컨테이너: jsp, servlet을 실행시킬 수 있는 소프트웨어웹 애플리케이션 컨테이너: 웹 애플리케이션이 배포되는 공간
  • 자바 계열에선 웹 애플리케이션을 컨테이너라고 부른다.

WAS란 DB 조회 혹은 다양한 로직 처리를 요구하는 동적 컨텐츠를 제공하기 위해 만들어진 Application 서버이다. HTTP 프로토콜을 기반으로 사용자 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어로서, 주로 데이터베이스 서버와 같이 수행된다.

WAS는 JSP, Servlet 구동환경을 제공해주기 때문에 서블릿 컨테이너 혹은 웹 컨테이너로 불린다.

이러한 WAS는 웹 서버의 기능들을 구조적으로 분리하여 처리하고자 하는 목적으로 제시되었다. 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산 환경에서 사용된다. WAS는 프로그램 실행 환경과 DB 접속 기능을 제공하고, 여러 개의 트랜잭션을 관리 가능하다. 또한 비즈니스 로직을 수행할 수 있다.

이러한 WAS에는 Tomcat, JBoss, WebSphere 등이 있다.

동작 방식

이미지 출처

3. 웹 서버와 WAS 종류

웹 서버 종류

  • 아파치
  • Microsoft IIS
  • Ngnix

WAS 종류

  • 톰캣
  • JEUS
  • IBM WebSphere

4. 웹 서버와 WAS 차이

  • 웹 서버는 정적인 컨텐츠만 줄 수 있다.
  • WAS는 어떤 애플리케이션을 돌리고, DB를 연결하고, 어떤 로직을 수행해서, 만든 데이터를 전달할 수 있다.
  • 요약: "요청에 따라 변하는 정보를 제공할 수 있는가?"
  • 우아한 테크톡 희봉님의 요약: "상황에 따라 변하는 정보를 제공할 수 있는가?"

요약 표

구성 요소 설명

웹 브라우저 - 사용자(클라이언트)가 요청한 웹 서버의 결과를 화면에 출력하는 애플리케이션이다.
웹 서버 - 웹 브라우저의 요청을 받아 들여서 이에 알맞은 결과를 웹 브라우저에 응답한다.- 요청에 필요한 페이지의 로직이나 데이터베이스와의 연동을 위해서 애플리케이션 서버에 이들의 처리를 요청한다.- 대표적인 웹 서버의 종류로는 아파치, IIS가 있다.
웹 애플리케이션 서버 (WAS) - 요청한 페이지의 로직이나 데이터베이스와의 연동을 위해 처리하는 부분이다.- 대표적인 WAS로 톰캣, IBM의 WebSphere, Jeus(국산) 가 있다.
데이터 베이스 - 데이터를 저장하는 곳이다. 예를 들어 회원 정보나 게시판에 올린 글에 대한 정보를 저장한다.
  1. 웹 서버: 웹 서버는 기본적으로 HTTP 프로토콜을 사용하여 정적인 컨텐츠(HTML 페이지, 이미지, 스타일시트, JavaScript 파일 등)를 클라이언트에 제공합니다. 사용자가 웹 브라우저를 통해 URL을 요청하면, 웹 서버는 해당 요청을 처리하고 필요한 파일을 찾아 사용자에게 반환합니다. 웹 서버는 주로 정적인 컨텐츠를 처리하며, 이는 데이터베이스와의 상호작용 없이 파일 시스템에서 직접 제공될 수 있는 컨텐츠를 의미합니다. Apache HTTP Server, Nginx, Microsoft's Internet Information Services (IIS) 등이 대표적인 웹 서버입니다.
  2. 웹 애플리케이션 서버 (WAS): WAS는 동적인 컨텐츠를 생성하고 제공하는 역할을 합니다. WAS는 클라이언트의 요청을 받으면 해당 요청에 따라 데이터베이스와 상호작용하거나, 비즈니스 로직을 실행하고, 결과를 동적으로 생성된 웹 페이지(일반적으로 HTML 형식)에 포함시켜 클라이언트에게 반환합니다. WAS는 웹 서버의 기능을 포함할 수 있지만, 주로 복잡한 트랜잭션을 처리하고 비즈니스 로직을 실행하는 데 사용됩니다. Java의 Tomcat과 JBoss, Python의 Django, Ruby의 Ruby on Rails 등이 대표적인 WAS입니다.

요약하면, 웹 서버는 주로 정적인 웹 컨텐츠를 제공하는 반면, WAS는 동적인 웹 컨텐츠를 제공하며 더 복잡한 비즈니스 로직을 처리합니다. 그러나 이 두 시스템은 종종 함께 작동하여 사용자에게 최종 웹 페이지를 제공합니다.

5. 웹 서버와 WAS를 따로 사용하는 이유

  • 서로의 기능을 분리하여 서버 부하를 방지할 수 있다.
    • WAS는 DB 조회 등 페이지를 만들기 위한 다양한 로직을 처리하는데,단순한 정적 컨텐츠까지도 WAS에서 제공하면 다른 작업에 사용하는 리소스로 인해 지연이 생겨날 수 있다.
    • 다만, 톰캣 5.5 이상부터는 성능이 크게 떨어지지 않는다고 한다.
  • 물리적으로 분리하여 보안을 강화할 수 있다.
    • SSL에 대한 암복호화 처리에 웹 서버를 사용한다.
    • 웹 서버를 앞단에 두어, 공격이 있을 때 중요한 정보가 담긴 DB나 로직까지(WAS까지) 전파되지 못하게 한다.

  • 여러 대의 WAS를 연결 가능할 수 있다.
    • Load Balancing
    • fail over(작동 중지된 WAS를 대신해 다른 WAS를 사용하여 장애를 극복함)
    • fail back(작동 중지된 WAS를 재동작시킴)
  • 대용량 웹 애플리케이션의 경우(여러 개의 서버 사용) Web Server와 WAS를 분리하여 무중단 운영을 위한 장애 극복에 쉽게 대응할 수 있다.
  • 다른 종류의 WAS로 서비스 가능
    • 하나의 서버에서 PHP Application과 Java Application을 함께 사용할 수 있다.

 

728x90
반응형
LIST

+ Recent posts