클라이언트/서버 구조


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

  • 서버 : 서비스를 제공하는 것. ex)웹 서버
  • 클라이언트 : 서버에게 서비스를 요청해서 그 결과를 보여주는 것. ex)웹 브라우저

DBMS

  • 데이터베이스를 관리하는 시스템(DataBase Management System)
    다수의 사용자가 데이터베이스 내의 데이터에 접근할 수 있도록 해주는 소프트웨어.
  • 등장배경 :
    DBMS 등장전에는 개발자들이 파일의 데이터를 저장하고 읽어들이는 등의 기능을 모두 구현해야했던 불편함을 해소하기 위해 DBMS가 등장.
  • IBM 논문에서 최초개념 등장.
    최초의 구현은 Oracle에서...
  • DBMS 종류 : MySQL, MariaDB, Oracle, PostgreSQL 등

미들웨어(MiddleWare)

  • 클라이언트와 DBMS 사이에 또 다른 서버를 두는 방식.
  • 등장배경 :
    • DBMS는 보통 서버 형태로 서비스를 제공하기 때문에 이러한 DBMS에 접속해서 동작하는 클라이언트 프로그램이 많이 등장.
      하지만, 클라이언트의 로직이 많아지고 클라이언트 프로그램 크기가 커진다는 문제 발생.(클라이언트 쪽에 비즈니스 로직이 많을 경우, 클라이언트 관리(배포 등)로 인해 비용이 많이 발생하는 문제가 있습니다.)
    • 프로그램 로직이 변경이 되면 클라이언트가 매번 배포되어야 된다는 문제 발생
    • 대부분의 로직이 클라이언트에 포함되어 배포가 되기 때문에보안이 나쁘다는 문제들이 생김.

⇒그래서 그 문제점들의 해결을 위해 미들웨어 개념이 등장.

  • 클라이언트는 단순히 요청만 중앙에 있는 서버에 보내고
    중앙에 있는 서버(미들웨어)에서 대부분의 로직을 수행
    이때, 데이터를 조작할 일이 있으면 DBMS에게 부탁
    그 결과를 클라이언트에게 전송하면 클라이언트는 그 결과를 화면에 보여줌. 이렇게 되면 클라이언트는 입력과 출력만 담당하게 됨
  • 프로그램 로직이 변경이 된다하더라도 모든 클라이언트를 다시 배포할 필요 없이 중앙의 미들웨어만 변경하면 되는 장점이 있음.

WAS(Web Application Server)

  • Web Server : 보통 정적인 콘텐츠(HTML페이지나 jpg,png같은 이미지 등)를 웹 브라우저에게 전송하는 역할을 담당. 내부의 내용이 이미 만들어져 있는 정적인 요소들을 화면에 보여주는 역할을 함.
    Apache, Window IIS, NGINX 등
  • WAS : 프로그램의 동적인 결과를 웹 브라우저에게 전송하는 역할을 담당(프로그램이 동작해서 얻은 결과를 보통 동적인 콘텐츠라 함.)
    Tomcat, widfly, jeus
  • 등장배경 :
    최초의 웹이 등장했을 때는 웹 브라우저는 정적인 페이지만 보여주었음. 하지만 웹이 널리 사용되면서 웹에서 데이터를 입력하고 조회하는 등의 동적인 기능을 요구하게 되었고, 브라우저(클라이언트)와 DBMS사이에서 일하는 미들웨어(WAS)가 필요해짐.
  • WAS는 일종의 미들웨어로 웹 클라이언트(보통 웹브라우저)의 요청 중 보통 웹 애플리케이션이 동작하도록 지원하는 목적을 가진다.

CGI vs WAS

- CGI

  • Common Gateway Interface
  • 웹 서버가 직접적으로 웹 프로그램을 실행하는 것
  • 동일한 프로그램에 대한 요청이 있을 때마다 각각 프로그램을 실행
  • 요청과 프로그램이 1:1매칭

- WAS

  • 웹서버가 웹 어플리케이션 서버에 요청하면 웹 어플리케이션 서버가 해당하는 프로그램을 실행하는 방식, 한 프로그램에 여러 요청이 있는 경우 한개의 프로그램을 실행하여 그 프로그램의 다수 요청을 처리 (Multi Threading)

WAS의 중요 기본기능 3가지

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

웹서버 vs WAS

  • WAS도 보통 자체적으로 웹서버 기능을 내장하고 있다.
    이전에는 WAS 내장 웹서버가 기능이 떨어져 Apache와 Tomcat을 둘다 설치 했어야 했지만, 현재는 WAS가 가지고 있는 웹 서버도 정적인 콘텐츠를 처리하는 데 있어서 성능상 큰 차이가 없다.
  • 규모가 커질수록 웹서버와 WAS를 분리한다. 그 목적은 장애극복기능(failover)인 경우가 많다.

    웹서버는 상대적으로 WAS보다 간단한 구조.
    사람들이 많이 접속하는 대용량 웹 애플리케이션의 경우 서버의 수가 여러 대 일 수 있는데, WAS에서 동작하도록 만든 프로그램이 오작동이 발생해서 WAS 자체에 문제가 발생하는 경우에 WAS를 재시작해야 하는데 앞단의 웹서버에서 먼저 해당 WAS를 이용하지 못하도록 하고 WAS를 재시작한다면 해당 웹 애플리케이션을 사용하는 사람은 WAS의 문제를 모르고 이용할 수 있는 데 이러한 처리를 장애 극복 기능이라 한다.
    대용량 웹 애플리케이션에는 무중단으로 운영하기위해서 상당히 중요하다. 이러한 기능 때문에 보통 규모가 커질수록 웹 서버와 WAS를 분리해 웹서버가 WAS앞단에서 동작하도록 하는 경우가 많다.
    이렇듯, 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 웹서버와 WAS를 대체로 분리합니다.


출처 및 참고자료

profile
코딩러너! 걷지말고 뛰어라~

0개의 댓글