클라이언트/서버 구조
클라이언트는 서비스를 제공하는 서버에게 정보를 요청하여 응답받은 결과를 사용한다.
웹 서버와 웹 브라우저가 대표적인 클라이언트/서버 구조에 해당한다.
DBMS(Database Management System)
다수의 사용자들이 데이터베이스 내의 데이터에 접근할 수 있도록 해주는 소프트웨어이다.
ex) MySQL, MariaDB, Oracle, PostgreSQL 등
미들웨어(MiddleWare)
클라이언트와 DBMS사이에 또 다른 서버를 하나 더 두는 방식이다.
클라이언트는 단순히 중앙에 있는 서버로 요청만 보내고, 미들웨어에서 대부분의 로직을 수행한다.
이 때, 데이터를 조작할 일이 있으면 DBMS에 요청하며, 클라이언트는 그 결과를 받아 화면에 보여준다.
단순히 클라이언트와 서버만으로 이루어진 구조의 경우, 클라이언트 쪽에 비즈니스 로직이 많으면
클라이언트 관리(배포 등)로 인해 비용이 많이 발생하는 문제가 발생한다.
비즈니스 로직을 클라이언트와 DBMS 사이의 미들웨어 서버에서 동작하도록 함으로써, 클라이언트는 입출력만 담당하도록 하게되며
프로그램 로직이 변경이 된다하더라도 모든 클라이언트를 다시 배포할 필요가 없이 중앙의 미들웨어만 변경하면 되는 장점을 가진다.
WAS(Web Application Server)
WAS는 일종의 미들웨어로 웹 클라이언트(보통 웹 브라우저)의 요청 중 웹 애플리케이션이 동작하도록 지원하는 목적을 가진다.
WAS의 기능
- 웹 서버의 기능도 기본적으로 제공한다.
- 프로그램 실행환경과 데이터베이스 접속기능을 제공한다.
- 여러 개의 트랜잭션을 관리한다.
- 업무를 처리하는 비즈니스 로직을 수행한다.
웹 서버 vs WAS
웹 서버와 WAS는 각각 정적인 콘텐츠와 프로그램의 동적인 결과를 웹 브라우저에게 전송하는 역할을 한다.
WAS도 보통 자체적으로 웹 서버 기능을 내장하고 있으며, 현재는 WAS가 가지고 있는 웹 서버도 정적인 콘텐츠를 처리하는 데 있어서 성능상 큰 차이가 없다. 즉, 웹 서버없이 WAS만으로도 정적인 콘텐츠와 동적인 콘텐츠를 모두 제공할 수 있다.
그럼에도 불구하고 웹 서버가 WAS 앞단에 있으면 좋은 이유는
WAS에서 동작하도록 만든 프로그램이 오작동이 발생해서 WAS를 재시작해야하는 경우가 있을 수 있는데 이 때, 앞단의 웹 서버에서 먼저 해당 WAS를 이용하지 못하도록 하고 WAS를 재시작한다면, 해당 웹 애플리케이션을 사용하는 사람은 WAS의 문제발생을 인지하지 못하고 이용할 수 있다.
이러한 기능을 장애극복기능(failover)라고 하며, 이는 대용량 웹 애플리케이션에서 무중단으로 운영하기 위해서 상당히 중요한 기능이다.
따라서 보통 웹 서버가 WAS 앞단에서 동작하도록 하는 경우가 많으며, 규모가 커질수록 웹 서버와 WAS를 분리한다.
참고자료
http://gomyonglee.tistory.com/entry/%EB%AF%B8%EB%93%A4-%EC%9B%A8%EC%96%B4
'Web > 기초' 카테고리의 다른 글
[WEB] Servlet (0) | 2018.11.21 |
---|---|
[WEB] Apache Tomcat (0) | 2018.11.20 |
[WEB] 웹 서버 (0) | 2018.11.15 |
[WEB] Browser 동작 방식 (0) | 2018.11.15 |
[WEB] 프론트엔드, 백엔드 (0) | 2018.11.15 |