DBMS / 미들웨어 / WAS

planted-ji·2023년 5월 1일
0
post-custom-banner

WAS(웹 애플리케이션 서버)

클라이언트/서버 구조

▷ 클라이언트(Client)는 서비스(Service)를 제공하는 서버(Server)에게 정보를 요청해 응답 받은 결과를 사용한다.

▷ 여기서 서버란 서비스를 제공하는 것, 클라이언트는 서버에게 서비스를 요청해 결과를 보여주는 것을 말한다.

DBMS (DataBase Management System)

▷ DBMS란, 다수의 사용자가 데이터베이스 내의 데이터에 접근할 수 있도록 해주는 소프트웨어다.
▷ DBMS 등장 이전에는 파일의 데이터를 저장하고 읽어들이는 등의 기능을 개발자가 모두 구현해야 했다. 이러한 불편함을 해소하기 위한 노력의 결과로 DBMS라는 소프트웨어가 등장한다.

└ 최초의 개념은 IBM에서 논문으로 발표, 최초의 구현은 Oracle에서 이루어졌다.

└ 굉장히 다양한 제품군이 존재한다. 대표적으로 MySQL, MariaDB, Oracle, PostgreSQL 등이 있다.

▷ DBMS의 등장으로 개발자들은 상대적으로 쉽게 데이터를 관리할 수 있게 되었다. 그러나 DBMS는 보통 서버 형태로 서비스를 제공하기 때문에 클라이언트의 로직이 많아지고 클라이언트 프로그램의 크기가 커지는 문제점이 있었다. 프로그램 로직이 변경되면 클라이언트가 매번 배포되어야 했고, 대부분의 로직이 클라이언트에 포함되어 배포되기 때문에 보안에 좋지 않았다.

미들웨어 (MiddleWare)

▷ 클라이언트가 직접 연결되어 동작하는 방식에 여러 단점이 있음을 알게되면서, 이러한 문제점을 해결하기 위해 등장한 미들웨어. 클라이언트와 DBMS 사이에 그림처럼 또 다른 서버를 두고 클라이언트는 입력과 출력만 담당한다.

▷ 클라이언트는 중앙에 있는 서버(미들웨어)에게 단순히 요청만 전달하고, 미들웨어에서 대부분의 로직을 수행하는 방식.

▷ 클라이언트는 복잡한 비즈니스 로직을 미들웨어 서버로 넘기고 화면에 결과만 표시한다. 사용자로부터 입력을 받아 미들웨어에게 보내는 역할만 수행하기에 크기가 매우 작아졌다. 프로그램 로직이 변경되어도 모든 클라이언트를 다시 배포할 필요 없이 중앙의 미들웨어만 변경하면 되는 장점을 가진다.

WAS (Web Application Server)

▷ 최초의 웹 브라우저는 정적인 데이터만 보여주었지만, 널리 사용되기 시작하면서 이용자들은 데이터를 입력하고 조회하는 등의 동적인 기능을 필요로 했다. 초기의 단순한 기능은 *CGI를 통해 해결되었으나 발전하는 웹을 따라 요구되는 프로그래밍 기능도 복잡해졌다. 복잡한 기능은 DBMS와 연결된 경우가 많았기에, 브라우저와 DBMS 사이에서 동작하는 미들웨어-WAS-가 필요했다.
▷ WAS는 웹 클라이언트(보통 웹 브라우저)의 요청 중 웹 애플리케이션이 동작하도록 지원하는 목적을 가진다.

▷ WAS의 중요한 기본 기능 세 가지
└ 프로그램 실행 환경과 데이터베이스 접속 기능을 제공. 
└ 여러 개의 트랜잭션(논리적인 작업 단위) 관리.
└ 업무를 처리하는 비즈니스 로직 수행.

▷ WAS는 웹 서버의 기능도 기본적으로 제공한다. WAS 초창기에는 웹 애플리케이션을 실행할 때 Apach와 톰캣을 함께 설치 및 실행해야 했지만, 기술의 발전으로 웹 서버를 따로 설치하지 않아도 역할을 충분히 하게 되는 경우가 많아졌다.
▷ 그럼에도 불구하고 웹 서버가 있으면 좋은 이유는, WAS보다 상대적으로 간단한 구조로 만들어졌기 때문이다.

└ 사람들이 많이 접속하는 대용량 웹 애플리케이션은 서버의 수가 여러 대일 수 있다. 우리가 프로그램을 사용할 때 이따금 문제가 발생해 종료되는 것처럼, WAS에서 동작하도록 만든 프로그램이 오작동하여 WAS 자체에 문제가 발생하는 경우에도 WAS를 재시작해야 한다.

└ 문제가 있는 WAS를 재시작할 때, 앞단의 웹 서버에서 해당 WAS를 이용을 막은 다음 WAS를 재시작하면 해당 웹 애플리케이션을 사용하는 사람은 문제 발생 여부를 모르고 이용할 수 있다(이러한 처리를 장애 극복 기능이라고 한다). 대용량 웹 애플리케이션을 무중단으로 운영하기 위해 필요한 기능이다.

웹 서버 vs WAS
▷ WAS도 보통 자체적으로 웹 서버 기능을 내장하고 있다.
▷ 현재는 WAS가 가지고 있는 웹 서버도 정적인 콘텐츠를 처리하는 데 있어서 성능상 큰 차이가 없다.
▷ 규모가 커질수록 웹 서버와 WAS를 분리한다.
▷ 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 웹서버와 WAS를 대체로 분리한다.

[Web] 웹 서버와 WAS의 차이를 쉽게 알아보자


*CGI(Common Gateway Interface)  : 웹 서버와 외부 프로그램을 연결해주는 표준화된 프로토콜. 웹 서버로 들어온 요청을 웹 서버가 처리할 수 없을 때, 정보를 처리할 수 있는 외부 프로그램을 호출한다. 외부 프로그램이 처리한 결과는 다시 웹 서버가 받아 브라우저로 전송한다.


생각해보기
1. 톰캣의 버전별 차이점

▷ 버전에 따라 요구하는 'Servlet, JSP, EL, Websocket'의 사양 및 지원되는 자바 버전이 상이하다. 최신 버전일수록 안정적인 환경을 제공하고 사용자 커뮤니티 활성화가 되어 있어 구버전의 사용은 공식적으로 지양하는 편이다.

post-custom-banner

0개의 댓글