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

DBMS ( DataBase Management System)
- 다수의 사용자들이 데이터베이스 내의 데이터를 접근할 수 있도록 해주는 소프트웨

DBMS는 보통 서버 형태로 서비스를 제공하기 때문에 DBMS에 접속해서 동작하는 클라이언트 프로그램이 만들어졌다.
문제점 : 클라이언트의 로직이 많아지고 클라이언트 프로그램의 크기가 커진다는 문제 발생. 또한 프로그램 로직이 변경이 되면 클라이언트가 매번 배포되어야 하는 문제가 있고 대부분의 로직이 클라이언트에 포함되어 배포가 되기 때문에 보안이 좋지 않음
미들웨어 (MiddleWare)
클라이언트 쪽에 비즈니스 로직이 많을 경우 클라이언트 관리(배포 등)로 인해 비용이 많이 발생하는 문제가 발생
비즈니스 로직을 클라이언트와 DBMS 사이의 미들웨어 서버에서 동작하도록 함으로써 클라이언트는 입력과 출력만 담당하도록 함
즉, 클라이언트와 DBMS 사이에 또 다른 서버인 MiddleWare를 두어 클라이언트는 단순히 요청만 중앙에 있는 서버에 보내고, 중앙에 있는 서버(MiddleWare)에서는 대부분의 로직을 수행. 이때 데이터를 조작할 일이 있으면 DBMS에 부탁함. 그리고 그 결과를 클라이언트에 전송하면 클라이언트는 결과를 화면에 보여주게 됨.
클라이언트는 복잡한 로직이 사라지고 단순히 화면에 결과만 보여주면 되기 때문에 사용자로부터 입력만 받아서 미들웨어로 보내는 역할만 수행하게 되기 때문에 크기가 매우 작아지게 됨.
프로그램 로직이 변경이 된다 하더라도 모든 클라이언트를 다시 배포할 필요 없이 중앙에 미들웨어만 변경하면 되는 장점을 가지게 된다.
WAS (Web Application Server)
WAS는 일종의 미들웨어로 웹 클라이언트 ( 보통 웹 브라우저 )의 요청 중 보통 웹 애플리에키션이 동작하도록 지원하는 목적을 가진다.
최초 웹이 등장하였을때 웹 브라우저는 정적인 데이터만 보여주었다. 웹이 널리 사용되면서 사용자들의 요구사항은 점점 커졌고, 웹에서 데이터를 입력하고 조회하는 등의 동적인 기능을 요구하게 되었다. 브라우저(Client)와 DBMS사이에서 동작하는 MiddleWare가 필요하게 되었다. 이러한 MiddleWare를 WAS라고 한다.
WAS의 기능
1) 프로그램 실행 환경과 데이터베이스 접속 기능을 관제공한다.
2) 여러 개의 트랜잭션을 관리한다.
3) 업무를 처리하는 비즈니스 로직을 수행한다.
4) 웹서버의 기능을 제공한다.
웹서버 vs. WAS
- WAS도 보통 자체적으로 웹 서버 기능을 내장하고 있다.
- 현재는 WAS가 가지고 있는 웹 서버도 정적인 컨텐츠를 처리하는데 있어서 성능상 큰 차이가 없다.
- 규모가 커질수록 웹 서버와 WAS를 분리한다.
- 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 웹서버와 WAS를 대체로 분리한다.
* 웹서버가 WAS 앞단에 있으면 좋은 이유
웹서버는 상대적으로 WAS보다 간단한 구조로 만들어져 있다. 사람들이 많이 접속하는 대용량 Web Application의 경우에는 서버의 수가 여러 대일 수 있다. WAS에서 동작하도록 만든 프로그램이 오작동이 되어 WAS 자체에 문제가 발생하는 경우도 있다. 이 경우 WAS를 재시작 해야 되는 경우도 있다. 문제가 있는 WAS를 재시작할때 앞단의 웹서버에서 먼저 해당 WAS를 이용하지 못하도록 하고 WAS를 재시작한다면 해당 Web Application을 재시작하는 사람은 WAS의 문제가 발생하였는지를 모르고 이용할 수 있을 것이다. 이러한 기능을 장애 극복 기능이라고 한다. 대용량 Application 에는 무중단으로 운영하기 위해서 중요한 기능이다.
참고 : boostcourse https://www.boostcourse.org/web316/lecture/16666/?isDesc=false
웹 프로그래밍(풀스택)
부스트코스 무료 강의
www.boostcourse.org
'boostcource > boostcourse_web programming' 카테고리의 다른 글
| [HTML, CSS] HTML Layout 태그 (0) | 2024.04.02 |
|---|---|
| [HTML, CSS] HTML Tags (0) | 2024.04.02 |
| 웹서버 (0) | 2024.04.01 |
| browser에서의 웹개발 (0) | 2024.04.01 |
| browser의 동작 (0) | 2024.04.01 |