1. 웹 동작 방식
웹 클라이언트와 웹 서버가 어떻게 작동할까?
Node.js와 게임 개발 에서 예시로 들었던 햄버거 가게를 이어서 설명해보고 싶다.
주문을 한다.
주문을 받고
주방에 작업을 알린다.
재료들이 있는 곳
을 찾아 요리를 한다.완성된 음식을 준다.
손님에게 제공
한다.이렇게 웹 클라이언트는 카운터, 웹 서버는 주방으로 예시를 들어 설명한다.
각 순서에서 클라이언트와 서버가 어떤 일을 하는지 알 수 있다.
1번에서는 주문을 한다
에서 웹 클라이언트를 이용하는 사용자가 어떤 것을 입력하거나 행동을 취한다.
2번에서는 주문을 받고
에서 클라이언트가 사용자의 입력을 받아서 작업을 알린다
에서 서버에게 요청을 한다.
3번에서는 재료들이 있는 곳
에서 서버가 사용자가 원하는 데이터를 제공할 수 있게 저장된 DB를 찾는 행위이다.
4번에서는 완성된 음식을 준다
에서 서버가 웹 클라이언트의 요청에 맞게 응답한 것을 알 수 있다.
5번에서는 손님이 입력하거나 행동에 취한것에 대한 응답을 웹 클라이언트가 화면에 띄워준다.
📱 웹 클라이언트
웹 클라이언트는 사용자가 웹에 접근하는 프로그램을 말한다.
IE, Chrome, Firefox 등 우리가 알고있는 웹 브라우저는 대부분 웹 클라이언트이다.
사용자는 이 웹 클라이언트를 통해 웹 서버에 요청(Request)을 하게 된다.
또한, 서버에서 받은 응답(Response)을 화면에 띄우는 역할을 해준다.
🧮 웹 서버
HTTP 또는 HTTPS를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램을 말한다.
아파치 웹 서버, GWS, IIS 등이 웹 서버이다.
클라이언트에서 요청(Request) 받아 필요한 데이터(HTML, CSS, JS, Image 등)를 DB에서 가져와 클라이언트에 다시 응답(Response) 해준다.
2. WAS (Web Application Server), Web Container
위 그림에 보이는 WAS와 Web Container는 무엇인가?
햄버거 가게 예시를 다시 보자면
재료들이 있는 곳
을 찾는 과정 전에 혼자서 요리하는 것이라면 상관없지만 여러 명이 요리를 한다면 어떨까?
여러 명이 같은 재료를 찾기 위해 한 곳에 몰리지는 않을 것이다.
각자 역할이 있고 역할에 따라 요리를 준비하고 하나로 합치게 된다.
여기서 역할을 분배하는 헤드(셰프)가 바로 웹 서버, 실제로 재료를 찾아 요리를 하는 사람들이 WAS 라고 보면 된다.
요리를 한 일부를 한 곳에 모아야하지 않는가? 그 역할을 담당하는 것이 바로 Web Container이다.
이제 Web Container에서 합쳐져 완성된 음식
을 카운터에 제공하는 것이 바로 웹 서버이다.
즉, WAS는 다양한 서버 내 알고리즘, 로직, DB 조회 등 클라이언트의 요청에 따라 동적인 콘텐츠를 제공하는 웹 애플리케이션 및 프로그램이다.
Web Container는 웹 서버가 보낸 JSP, PHP, ASP.net 등의 파일들을 실행하고 수행결과를 다시 웹 서버로 보내주는 역할을 한다
🤔 그냥 서버가 다 하면 되는일 아닌가? 왜 WAS를 사용하는 걸까?
결론적으로, 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server, WAS를 각기 사용한다.
참고자료
1. [해치지 않는 웹] 1. 웹 동작 방식
2. 웹서버(Web Server) 와 웹 어플리케이션 서버 (WAS)