이번 영상에서는 웹서버와 WAS의 차이점에 대해서 설명해주고 있습니다.
WAS는 설명을 들었던 것 같은데.. 설명을 하지는 못할 정도라서
제대로 이해를 하고자 영상을 참고해서 공부를 하려고 합니다.
우선 한 가지 상상을 해봅시다.
열심히 공부를 하고, 학원 수료를 하고서 좋은 회사에 입사를 하게 되었습니다.
입사를 한 다음에 회사의 아키텍처에 대해서 설명을 듣고 있던 와중입니다.
"우리는 6대의 WAS를 사용하고 있어요."
어..? 여기서 WAS는 대체 무엇이지..?
6대 라고 하는거 보니까 컴퓨터 같고, 컴퓨터는 서버일테고, 내가 들어온 회사는 웹 서비스를 하는 곳일테니까 웹 서버 같은데.. 왜 웹 서버라 말하지 않고 WAS라고 할까요?
이 두 개를 합쳐봤을 때 Web Server는 인터넷을 기반으로 클라이언트에게 웹 서비스를 제공하는 컴퓨터라고 생각할 수 있습니다.

이제 클라이언트와 서버의 입장으로 나누어 보겠습니다.
웹 서버에게 주소(url)을 가지고, 통신규칙(http)에 맞게 요청하면 알맞은 내용(html)을 응답 받습니다.
클라이언트의 요청을 기다리고, 웹 요청(http)에 대한 데이터를 만들어서 응답.
이때 데이터는 웹에서 처리할 수 있는 html, css, 이미지 등 정적인 데이터로 한정합니다.
이런식으로 해서 쉽게 웹 서버를 만들 수 있습니다.
시중에 있는 아파치 웹 서버를 깔고, 포트 번호와 html을 어디로 할지 디렉토리만 저장해주면 우리도 전세계 사람들에게 웹 서비스를 제공할 수 있습니다.
하지만 웹 서버는 제공할 수 있는 것은 너무 한정적이라 더 멋진(?) 페이지를 제공할 수가 없습니다.
그래서 사람들은 생각합니다.
"이거 프로그램을 돌려서 어떻게 좀 못하나?"
html을 줄거면 그 전에 어플리케이션을 돌려서 데이터를 만든 다음에 만든 데이터를 넣어서 주면 안되나? 슬프게도 html은 프로그래밍 언어가 아닙니다.
DB에서 데이터를 가지고 와서 제공을 못하나.. 라는 생각들이 모여 나온 것이 바로 WAS 입니다.
조금 더 설명을 하겠습니다.
php, jsp와 같은 언어들을 사용해 동적인 페이지를 생성할 수 있는 서버 입니다.
프로그램 실행 환경과 데이터베이스 접속 기능을 제공해줍니다.
또한 비즈니스 로직 수행이 가능합니다!
웹 서버 + 웹 컨테이너가 합쳐진 것이라고 생각하면 이해하기 쉽습니다!
❗ 컨테이너 : jsp, servlet을 실행시킬 수 있는 소프트웨어
자바 게열에서는 WAS를 웹 어플리케이션 컨테이너라고 부릅니다.
웹 어플리케이션 컨테이너 = 웹 어플리케이션이 배포되는 공간을 의미합니다.

❗ 정적 페이지 요청 시
→ 클라이언트가 HTML, CSS, JS 파일 요청 → 웹 서버에서 바로 반환
❗ 동적 페이지 요청 시
→ 클라이언트가 로그인, 데이터 조회 등의 요청 → 웹 서버가 웹 컨테이너로 전달
결론적으로 웹 서버는 정적인 컨텐츠만 줄 수 있는 것이고,
WAS는 어플리케이션을 돌리고 db연결을 하고, 어떤 동작을 수행시켜서 만들어진 데이터를 줄 수 있는 기능을 하는 서버입니다.
이걸 정말 정말 간단하게 비교를 하자면 "상황에 따라 변하는 정보를 제공할 수 있는가" 입니다.
최근에 공부를 할 때 NginX에 대해서 조금 공부를 했었는데, 리버스 프록시 역할을 하는거면 동적처리가 아닌건가? 싶어서 좀 더 찾아봤다.
NginX 자체는 원래 정적인 파일만 제공할 수 있지만, 역할을 확장해서 동적 요청도 처리할 수 있는것이다.
사실상 따져 보면 실제로 동적 처리는 WAS(Spring Boot)에서 하고, NginX는 단순히 요청을 전달하는 것!
지식이 하나 더 늘었습니다요