-
클라이언트, 웹 서버, RDBMS, WASKnowledge/Architecture 2019. 8. 6. 23:35반응형
URL과 HTTP에 대한 포스팅을 하면서 서버와 클라이언트에 대한 언급을 몇번 한적 있다.
이번 포스팅에선 이 클라이언트와 웹 서버가 구체적으로 무엇인지, 어떻게 동작하는지와 함께 RDBMS, WAS 개념도 간단히 정리해서 포스팅 하려한다.
- 클라이언트
요청을 하는 쪽, 쉽게 말하자면 웹 브라우져라고 해도 무방하다.
브라우저 주소창에 URI를 입력하여 웹 서버에 어떤 요청을 하니까.
- 웹 서버
클라이언트의 요청을 받고 그에 해당하는 HTML 문서나 각종 리소스, 즉 서비스를 전달하는 것.
웹 서버는 이러한 기능을 수행하는 서버 컴퓨터를 칭하기도 하지만 웹 서버 소프트웨어를 의미하기도 한다.
웹 서버 소프웨어로는 Apache, Nginx, Microsoft IIS 등이 있다.
- 요청 / 응답 과정을 거쳐 브라우져에 웹사이트가 보여지는 원리
자세한 내용은 첨부하는 링크( 브라우저는 어떻게 작동하는가 - https://d2.naver.com/helloworld/59361 )를 참고하면 알 수 있지만 매우 길고 복잡하다. 이를 간단히 정리해보자면 우선 브라우저가 주소창에 웹사이트 주소를 요청하면 서버는 일단 HTML 문서를 응답한다. 그럼 브라우저는 이를 해석하며 이 HTML 파일이 제대로 보여지는데 필요한 css,js, 이미지 리소스들의 URL을 추출해서 웹 서버에 동시에 다시 요청하고 웹 서버는 이 요청에 상응하는 리소스를 브라우저로 전송한다. 그럼 이 브라우저는 아까 해석한 HTML 파일에 응답받은 파일들을 하나로 합치는 렌더링 과정을 거쳐서 화면에 웹사이트를 출력한다.
- RDBMS
위 설명대로면 클라이언트와 서버만 있어도 웹은 문제없이 동작할 것 같다. 실제로 정적인 데이터만 보여주면 되었던 웹 초기엔 큰 문제가 없었다고 한다. 그러나 시간이 갈수록 사용자의 요구사항은 늘어났고 이는 대부분 데이터를 처리하는 기능과 관련이 있었다. 그래서 이러한 요구를 해결하고자 파일 시스템을 거쳐 등장한 게 데이터 베이스 관리 시스템, DBMS였다.
그러나 이 편리한 시스템도 머지 않아 문제를 드러냈다. RDBMS 상용화 초기( 처음 상용화된 RDBMS는 1979년 릴리즈 된 오라클이었다 ) 인 1990년대 초반만 해도 RDBMS를 포함하는 서버 가격은 고가에다가, 변경도 편리하지 않은 탓에 업무 프로세스를 변경할 경우 클라이언트 프로그램을 교체하는 방식을 택했는데, 그 당시엔 사용자가 주로 인트라넷이었기에 문제가 없었지만 1990년대 후반 인터넷이 보급되고 사용자가 웹 브라우저를 통해 웹을 이용하는 불특정 다수가 되면서 이런 방법은 배포 비용, 보안 등에서 여러 문제를 야기한 것이다.
이런 문제를 극복하기 위해 나온 게 클라이언트와 DBMS 사이에서 비즈니스 로직을 처리해줄 미들웨어 시스템의 도입이었고 이 미들웨어 개념 중 하나로 등장한 것이 WAS 였다.
- WAS ( Web Application Server )
WAS는 위에서 적었듯 정확히는 미들웨어 개념 중 하나로서 초창기엔 사용자의 동적인 요청을 담당하기 위해 이용되었으나 최근의 WAS는 웹 서버의 기능도 기본적으로 제공하고 성능면에서도 차이가 없다. 즉 WAS만 설치되어 있으면 웹 서버가 따로 설치되어 있지 않아도 WAS가 웹 서버의 역할을 충분히 수행할 수 있다는 얘기. 그러나 WAS의 주된 기능은 1. 프로그램 실행 환경과 데이터 베이스 접속 기능을 제공하는 것. 2. 여러개의 트랜잭션을 관리하는 것. 3. 업무를 처리하는 비즈니스 로직을 수행하는 것. 이렇게 세가지다.
그렇기에 주로 큰 시스템을 구축할 때는 웹 서버를 WAS 앞단에 구축해서 정적인 데이터를 응답하게 하고 WAS는 그 뒤에서 동적인 데이터의 응답만 담당하게 한다. 이렇게 구성을 한다면 WAS에 어떤 문제가 발생해서 WAS를 재시작해야 할 때 앞단의 웹 서버에서 먼저 재시작 해야 하는 WAS를 이용하지 못하도록 할 수 있고 이럴 경우 유저들이 WAS에 문제가 발생한 것을 모르고 서비스를 이용할 수 있다는 장점이 있다. 이러한 처리를 장애 극복 기능이라고 하고 대용량 웹 어플리케이션을 중단없이 제공하기 위해선 중요한 기능이다.
참고
반응형