클라이언트/서버구조
- 웹 서버와 웹 브라우저가 대표적으로 서버와 클라이언트의 관계
- 서버와 클라이언트
DBMS(Database Management System)
- 데이터베이스를 관리하는 시스템
- 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨어
- DBMS가 등장하기 이전에는 개발자들이 파일의 데이터를 저장하고 읽어들이는 등의 기능을 모두 구현해야했다.
- DBMS에 대한 최초의 개념은 IBM에서 논문으로
- 최초의 구현은 Oracle에서 하였다.
- DBMS는 보통 서버 형태로 서비스를 제공한다.
- MySQL, MariaDB, Oracle, PostgreSQL 등
문제점
- DBMS는 보통 서버 형태로 서비스를 제공하기 때문에 클라이언트의 로직이 많아지고 클라이언트 프로그램의 크기가 커지는 문제점
- 프로그램 로직이 변경이 되면 클라이언트가 매번 배포되어야 한다는 문제점
- 대부분의 로직이 클라이언트에 포함되어 배포가 되기 때문에 보안이 나쁘다
=> 이를 해결해주기 위해 등장한 미들웨어
미들웨어(MiddleWare)
- 클라이언트와 DBMS 사이에 또 다른 서버를 두는 방식
- 클라이언트는 단순히 요청만 중앙에 있는 서버(미들웨어)에게 보내고 이 미들웨어에서는 대부분의 로직을 수행한다. 이때, 데이터를 조작할 일이 있으면 DBMS에게 부탁한다. 그리고 그 결과를 클라이언트에게 전송하면 클라이언트는 그 결과를 화면에 보여주게 된다. 클라이언트는 복잡한 로직이 사라지고 단순히 화면에 그 결과만 보여주기 때문에 사용자로부터 입력만 받아서 미들웨어에게만 보내는 역할만 수행하면 되기 때문에 크기가 매우 작아지게 된다.
장점
- 프로그램 로직이 변경이 되면 모든 클라이언트를 다시 배포할 필요가 없이 중앙의 미들웨어만 변경된다.(클라이언트는 입력과 출력만 담당)
WAS(Web Application Server)
- WAS는 일종의 미들웨어로 웹 클라이언트의 요청 중 보통 웹 애플리케이션이 동작하도록 지원하는 목적을 가진다.
WAS의 중요한 기능
- 프로그램 실행 환경과 데이터베이스 접속 기능을 제공
- 여러 개의 트랜잭션을 관리(트랜잭션 - 논리적인 작업 단위)
- 비즈니스 로직을 수행
웹 서버 VS WAS
- 웹 서버는 보통 정적인 콘텐츠를 웹 브라우저에게 전송, WAS는 프로그램의 동적인 결과를 웹 브라우저에게 전송하는 역할
- WAS도 보통 자체적으로 웹 서버 기능을 내장하고 있다.
- 현재는 WAS가 가지고 있는 웹 서버도 정적인 컨텐츠를 처리하는데 있어서 성능상 큰 차이가 없다.
- 규모가 커질수록 웹 서버와 WAS를 분리한다. 그 목적은 장애 극복 기능(failover)인 경우가 많다.
- 장애 극복 기능 : 컴퓨터 서버, 시스템, 네트워크 등에서 이상이 생겼을 때 예비 시스템으로 자동전환되는 기능
- 대용량 웹 어플리케이션에는 무중단으로 운영하기 위해