서버 - 클라이언트 구조에서 클라이언트는 서버에게 정보를 요청하여 응답받은 결과를 사용하게 되는데
웹 서버, 웹 브라우저가 대표적인 서버 - 클라이언트 관계이다.
여기서 DBMS는 사용자들이 DB안에 데이터에 접근할 수 있게 도와주는 소프트웨어이다.
하지만 위 사진처럼의 형태는 클라이언트 측에 로직이 많아지고 프로그램 크기가 커져 부담이 많이 가는 문제가 있고 로직 변경때마다 배포를 새로 해야하고 로직이 클라이언트에 포함되어 있어 보안성에도 문제가 있다.
그래서 등장한게 미들웨어
클라이언트와 DBMS 사이에 로직을 수행해주는 다른 서버를 두는 방식이다.
즉, 클라이언트는 미들웨어에게 요청만 보내고 미들웨어는 클라이언트가 부담했던 로직을 수행, 로직 수행 시 데이터 조작이 필요하면 DBMS에게 부탁하고 그 결과를 다시 클라리언트에게 보내준다.
이로써 클라이언트가 해야했던 복잡한 로직이 사라졌고, 프로그램 크기도 작아졌으며 로직 변경때마다 배로해야 했던 번거로움을 해결했다
WS에서는 웹 브라우저 같은 클라이언트로부터 HTTP 요청을 받고 HTML문서와 같은 웹 페이지를 정적으로 처리해 반환한다.
단순히 저장되어 있는 웹 페이지를 클라이언트로 전달하고, 클라이언트로부터 컨텐츠를 전달받아 저장하거나 처리하는 역할을 담당한다.
(HTML, CSS, JavaScript, 이미지, 비디오, 오디오 파일 등과 같은 정적파일)
인증, 정적 컨텐츠 관리, HTTPS지원, 컨텐츠 압축, 대용량 파일 지원, 가상 호스팅,
Bandwidth Throttling(대역폭 제한:인터넷 서비스를 의도적으로 느리게 하는 것) 등의 기능도 지원함.
WAS와 WS 가장 큰 차이점은 동적 서버 콘텐츠를 수행한다는 것이다. HTTP를 통해 컴퓨터나 장치에 어플리케이션을 수행해주는 미들웨어라고 보면 된다.
웹 서버 + 웹 컨테이너로 웹 상에서 사용하는 컴포넌트를 올려놓고 사용하게 되는 서버이다.
즉, 프로그램 실행 환경과 DB접속기능을 제공하고, 여러 개의 트랜잭션을 관리하며, 요청된 비즈니스 로직을 수행한다.
웹 서버가 보낸 JSP, PHP, ASP, net 등의 파일을 실행하고 수행결과를 다시 웹 서버로 보내주는 역할을 한다.
결국 웹 어플리케이션 서버는 웹 서버에서 요청을 받고, 이를 웹 컨테이너로 보내 로직(알고리즘, DB연결 등)을 수행하고 그 결과를 다시 웹 서버로 보내 최종적으로 클라리언트에게 보내주는 것이다.
● WAS는 DB조회, 다양한 로직을 수행해야 하기 때문에 정적인 컨텐츠는 웹 서버에서 빠르게 클라이언트에게 제공하는게 좋다.
● SSL 대한 암복호화 처리에 웹 서버를 사용한다.
● 접속량이 많은 대용량 WAS경우 WAS에 문제가 생겨 재시작해야 하는 경우가 생기는데 이때 앞단의 웹 서버에서 WAS를 차단하고 재시작하면 사용자한테는 아무일 없던 듯이 모르고 이용이 가능하다.
Client → WS → DB
Client → WAS → DB
Client → WS → WAS → DB
참조
https://binux.tistory.com/32
.
https://velog.io/@juejue/Web-Web-Server-vs-Web-Application-Server-%EC%9B%B9-%EC%84%9C%EB%B2%84%EC%99%80-%EC%9B%B9-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EC%84%9C%EB%B2%84