[10분 테코톡] 👩‍🦰희봉의 웹서버 vs WAS

·2025년 2월 24일

필수영상

목록 보기
35/40

[10분 테코톡] 👩‍🦰희봉의 웹서버 vs WAS

이번 영상에서는 웹서버와 WAS의 차이점에 대해서 설명해주고 있습니다.
WAS는 설명을 들었던 것 같은데.. 설명을 하지는 못할 정도라서
제대로 이해를 하고자 영상을 참고해서 공부를 하려고 합니다.


우선 한 가지 상상을 해봅시다.
열심히 공부를 하고, 학원 수료를 하고서 좋은 회사에 입사를 하게 되었습니다.
입사를 한 다음에 회사의 아키텍처에 대해서 설명을 듣고 있던 와중입니다.
"우리는 6대의 WAS를 사용하고 있어요."

어..? 여기서 WAS는 대체 무엇이지..?

6대 라고 하는거 보니까 컴퓨터 같고, 컴퓨터는 서버일테고, 내가 들어온 회사는 웹 서비스를 하는 곳일테니까 웹 서버 같은데.. 왜 웹 서버라 말하지 않고 WAS라고 할까요?

Web Server

Web

  • 인터넷을 기반으로 한 정보를 공유, 검색할 수 있게 하는 서비스
  • URL(주소), HTTP(통신규칙), HTML(내용)

Server

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

이 두 개를 합쳐봤을 때 Web Server는 인터넷을 기반으로 클라이언트에게 웹 서비스를 제공하는 컴퓨터라고 생각할 수 있습니다.

이제 클라이언트와 서버의 입장으로 나누어 보겠습니다.

클라이언트 :

웹 서버에게 주소(url)을 가지고, 통신규칙(http)에 맞게 요청하면 알맞은 내용(html)을 응답 받습니다.

서버 :

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

이런식으로 해서 쉽게 웹 서버를 만들 수 있습니다.
시중에 있는 아파치 웹 서버를 깔고, 포트 번호와 html을 어디로 할지 디렉토리만 저장해주면 우리도 전세계 사람들에게 웹 서비스를 제공할 수 있습니다.

하지만 웹 서버는 제공할 수 있는 것은 너무 한정적이라 더 멋진(?) 페이지를 제공할 수가 없습니다.

그래서 사람들은 생각합니다.
"이거 프로그램을 돌려서 어떻게 좀 못하나?"

html을 줄거면 그 전에 어플리케이션을 돌려서 데이터를 만든 다음에 만든 데이터를 넣어서 주면 안되나? 슬프게도 html은 프로그래밍 언어가 아닙니다.

DB에서 데이터를 가지고 와서 제공을 못하나.. 라는 생각들이 모여 나온 것이 바로 WAS 입니다.

WAS (Web Application Server)

Web Application

  • 웹에서 실행되는 응용 프로그램

Web Application Server

  • 웹 어플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크.
  • 웹 어플리케이션을 실행시켜 필요한 기능을 수행하고 그 결과를 웹 서버에게 전달.

조금 더 설명을 하겠습니다.

php, jsp와 같은 언어들을 사용해 동적인 페이지를 생성할 수 있는 서버 입니다.
프로그램 실행 환경과 데이터베이스 접속 기능을 제공해줍니다.
또한 비즈니스 로직 수행이 가능합니다!

웹 서버 + 웹 컨테이너가 합쳐진 것이라고 생각하면 이해하기 쉽습니다!
❗ 컨테이너 : jsp, servlet을 실행시킬 수 있는 소프트웨어
자바 게열에서는 WAS를 웹 어플리케이션 컨테이너라고 부릅니다.
웹 어플리케이션 컨테이너 = 웹 어플리케이션이 배포되는 공간을 의미합니다.

WAS 의 동작 원리

1. 클라이언트(Client) 요청

  • 사용자가 웹사이트(브라우저)에서 특정 페이지를 요청합니다.
  • 요청이 정적인 페이지(HTML, CSS, JavaScript)인지, 동적인 페이지(데이터베이스 조회, 비즈니스 로직 실행)인지에 따라 처리 방식이 달라집니다.

2. 웹 서버(Web Server)

  • 클라이언트의 요청을 가장 먼저 받는 역할을 합니다.
  • 요청된 리소스가 정적(Static) 콘텐츠일 경우, 웹 서버가 직접 응답을 반환합니다.
    예: HTML 파일, CSS, JavaScript, 이미지 등
  • 요청된 리소스가 동적(Dynamic) 콘텐츠일 경우, 웹 서버는 요청을 웹 컨테이너(Web Container) 로 전달합니다.

❗ 정적 페이지 요청 시
→ 클라이언트가 HTML, CSS, JS 파일 요청 → 웹 서버에서 바로 반환

❗ 동적 페이지 요청 시
→ 클라이언트가 로그인, 데이터 조회 등의 요청 → 웹 서버가 웹 컨테이너로 전달

3. 웹 컨테이너(Web Container)

  • 웹 컨테이너는 서블릿(Servlet) 실행 환경을 제공하여 동적인 데이터를 처리하는 역할을 합니다.
  • 웹 컨테이너가 요청을 받아 비즈니스 로직을 실행하고, 데이터베이스와 상호작용하여 데이터를 가져옵니다.
  • 동적 콘텐츠(예: 사용자 정보, 상품 목록 등)를 생성하여 웹 서버로 반환합니다.

4. 웹 서버가 클라이언트에게 응답 반환

  • 웹 컨테이너에서 생성된 동적 콘텐츠를 웹 서버가 다시 클라이언트(사용자)에게 전달합니다.
  • 최종적으로 사용자는 브라우저에서 원하는 데이터를 확인할 수 있습니다.

결론적으로 웹 서버는 정적인 컨텐츠만 줄 수 있는 것이고,
WAS는 어플리케이션을 돌리고 db연결을 하고, 어떤 동작을 수행시켜서 만들어진 데이터를 줄 수 있는 기능을 하는 서버입니다.

이걸 정말 정말 간단하게 비교를 하자면 "상황에 따라 변하는 정보를 제공할 수 있는가" 입니다.

최근에 공부를 할 때 NginX에 대해서 조금 공부를 했었는데, 리버스 프록시 역할을 하는거면 동적처리가 아닌건가? 싶어서 좀 더 찾아봤다.
NginX 자체는 원래 정적인 파일만 제공할 수 있지만, 역할을 확장해서 동적 요청도 처리할 수 있는것이다.
사실상 따져 보면 실제로 동적 처리는 WAS(Spring Boot)에서 하고, NginX는 단순히 요청을 전달하는 것!
지식이 하나 더 늘었습니다요

0개의 댓글