본문 바로가기

WEB

[WEB]3-tier architecture와 WAS의 개념

3-TIER ARCHITECTURE

 

  • 사용자 인터페이스, 비지니스 로직, 데이터베이스를 각각 독립된 모듈로 개발하고 유지하는 구조
  • 2계층 구조의 제한을 극복하기 위해 탄생한 구조로, 사용자 인터페이스 환경과 데이터베이스 관리서버 환경 사이에 중간층이 추가된 구조이다.
  • 중간층인 비지니스 로직은 데이터베이스의 다단계나 응용 프로그램의 실행 또는 사용자 요구 분산을 위한 큐잉을 수행할 수 있는데, 예를 들어 중간층이 큐로써 역할을 한다면 클라이언트는 자신의 요청을 중간층에 전달만 하고 중간층이 서버에 접속해서 클라이언트가 남기고 간 요청에 대한 응답을 받아 클라이언트에 돌려줌으로써 스케줄링을 가능하게 할 뿐만 아니라 다수 사용자 요구 처리에 대한 우선 순위를 정할 수 있게 해주어 서버의부하를 줄여준다.
  • 프레젠테이션 계층 : 응용 프로그램의 최상위에 위치하며, 서로 다른 층에 있는 데이터 등과 커뮤니케이션을 한다.
  • 애플리케이션 계층 : 비지니스 로직 계층 또는 트랜잭션 계층이라고도 하는데, 비지니스 로직은 워크스테이션으로부터의 클라이언트 요청에 대해 마치 서버처럼 행동한다. 차례로 어떤 데이터가 필요한지를 결정하고, 메인프레임 컴퓨터 상에 위치하고 있을 세 번째 계층의 프로그램에 대해서는 마치 클라이언트처럼 행동한다.
  • 데이터 계층 : DB에 엑세스 하여 CRUD를 통해 데이터를 관리하는 프로그램을 포함한다.

미들웨어

  • 응용 소프트웨어가 운영 체제로부터 제공받는 서비스 이외에 추가적으로 이용할 수 있는 서비스를 제공하는 컴퓨터 소프트웨어.
  • 3-tier architecture은 미들웨어의 이중화를 통해 리스크를 줄이고 서비스의 안전성, 확대성, 성능을 높여준다.
  • 즉 프레젠테이션 계층과 데이터 계층 사이에서 실질적인 비지니스 로직의 처리를 담당함으로써 프레젠테이션 계층인 클라이언트 측에서는 입출력에만 집중을 할 수 있게 만들어준다.

데이터베이스

  • 데이터의 보다 효율적인 data persistance를 위해 고려된 기술이다.
  • 어플리케이션이 동작하며 생성되는 데이터를 영구적으로 저장, 조회, 관리하기 위해 DB Server를 두고 DBMS역할을 하는 미들웨어를 통해 관리한다.

웹 서버

  • 웹 서버의 개념 : 크게 소프트웨어와 하드웨어로 구분을 할 수 있다.
    • 1) 하드웨어
      • Web Server가 설치되어 있는 컴퓨터
    • 2) 소프트웨어
      • 클아이언트로부터 HTTP Request를 받아 static content(.html, .css, .jpg)을 제공하는 프로그램
  • 1) 웹서버의 기능
    • HTTP 프로토콜을 기반으로 클라이언트의 요청을 서비스 하는 담당
    • 정적인 컨텐츠를 제공하며, 이 때 WAS를 거치지 않아 속도가 빠르다.
    • 동적인 페이지 요청시 WAS에게 요청을 전달하고, WAS가 처리한 결과로 클라이언트에 Response한다.
    • Apache Server, ISS(Window전용 Web 서버)등의 대표적인 웹 서버의 미들웨어다.
  • 2) 웹서버의 부가기능
    • 트래픽이 몰려 부하가 생기면 스케일 아웃, 로드 벨러서 등을 사용하여 서버를 늘리고 부하를 분산시킬 수 있다.

WAS(Web Application Server)

  • WAS의 개념
    • Web Container 혹은 Servlet Container 라고도 불리며, 영미권에서는 Application Server 라고 불리기도 한다.
    • Web Server + Web Container
    • HTTP 통신을 통해 컴퓨터나 장치에 웹 애플리케이션이 실행될 수 있는 환경을 제공하는 미들웨어(소프트웨어 엔진)
    • 독립적으로 실행되지 못하는 CGI를 실행기키기 위한 환경을 제공한다 볼 수 있다.
    • 즉 WAS는  Web Server에서 전달된 요청에 대해 DB조회나 다양한 로직 처리를 담당하여 실질적으로 작업이 이루어지는 공간으로, 동적인 컨텐츠를 만들어 다시 Web Server에게 전달한다.
  • WAS의 역할
    • Web Server의 기능을 구조적으로 분리하여, 트랜잭션, 보안, 메시징, 스레드 처리 등의 기능을 처리하는 분산 환경에서 사용된다.
  • WAS의 주요 기능
    • 웹 서버에 웹 응용프로그램의 실행 환경 제공 및 DB 접속 기능을 제공하여, 실질적인 비지니스 로직이 수행되는 서버이다.
    • 분산 처리환경 및 여러 개의 트랜잭션을 관리할 수 있는 기능일 제공한다.
  • Tomcat, Jeus, JBoss 등이 대표적인 WAS이다. 

Web Server와 Web Application Server(WAS)정리

  • 정적 페이지
    • Web서버는 정적 페이지 요청에 대해 항상 동일한 페이지를 반환한다.
  • 동적 페이지
    • WAS는 Web Server + Container의 형태이다.
    • 따라서 서버 내에 웹 응용프로그램을 실행할 수 있는 환경을 Container를 통해 제공함으로써, 전달받은 인자값을 통해 서버 내부에서 DB 조회 및 로직 처리를 하여 동적인 웹 페이지를 만들어 반환한다.
  • Web Server와 WAS를 구분하는 이유
    • 이미지와 같은 정적 컨텐츠들은 웹 문서가 클라이언트로 보내질 때 함께 전송되는 것이 아니라 HTML문서를 먼저 받고, 이미지 파일들을 다시 서버로 요청하여 받아온다.
    • Web Server를 통해 정적인 파일들을 처리하게되면 WAS까지 가지 않고 처리할 수 있게 된다.
    • 따라서 Web Server에서는 정적 컨텐츠의 처리를, WAS에서는 동적인 페이지의 처리를 하도록 기능을 분배함으로써 서버의 부담을 줄이고, 자원을 보다 효율적으로 사용할 수 있게된다.
  • Web Server와 WAS를 구분함으로써 얻는 이점
    1. 기능을 분리하여 서버 부하 방지
      • Web Server는 정적 페이지 처리, WAS는 동적 컨텐츠 처리를 담당하게 하여 서버의 부하를 줄여 수행속도를 높여 페이지 노출 시간을 줄일 수 있다.
    2. 물리적으로 분리하여 보안 강화
      • SSL에 대한 암복호화 처리에 Web Server를 사용
    3. 하나의 Web Server에 여러대의 WAS를 연결 가능
      • Web Server에서 로드벨렁싱 및 접근 허용 IP 및 세션의 관리를 담당하게 함으로써 보다 효율적은 서버 관리가 가능해진다.
      • Web Server에서 WAS에 대한 접근을 관리하게 됨으로써, 만약 어떤 WAS에서 오류가 발생한 경우, 해당 WAS에 사용자의 접근을 막음으로써 오류를 느끼지 못하게 이용할 수 있게 된다. 즉 무중단 운영 및 장애 극복에 이점을 갖게된다.
    4. 여러 웹 어플리케이션 서비스가 가능해진다.
  • 즉 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server와 WAS를 분리하여 사용할 수 있다.

 

Web Service Architecture

  • 앞서 3-tier architecture을 먼저 살펴봤는데, 이때 비지니스 로직 티어에는 여러가지 형태의 서버 구조를 가질 수 있다.
  • Web Server만 사용할 수 있고, WAS만 사용할수도 있고, Web Server를 앞에두고 WAS를 사용할수도 있다.
  • 중요한것은 미들웨어를 통해 프레젠테이션 계층과 데이터 계층을 분리함으로써, 보다 자유롭게 비지니스 로직을 처리할 수 있게 됐다는 점이고, 이후 웹 서버를 어떻게 구성하냐에 따라 자원 이용의 효율성 및 배포 및 유지보수에 이점을 갖을 수 있게 된것이다.
  • 그 중 웹 서비스에서 자주 사용하는 3-tier architecture(Web Server + WAS)를 살펴보자면 아래와 같다.

  1. 클라이언트가 Web Server에 Request를 한다.
  2. Web Server는 클라이언트의 Request를 WAS에 전달한다.
  3. WAS는 관련된 Servlet을 메모리에 올린다.(HttpServletRequest, HttpServletResponse객체를 생성한다.)
  4. WAS는 Web.xml을 참조하여 요청에 해당하는 Servlet을 찾고, 생성한 객체와 함께 Thread에 올린다.
  5. Thread는 Servlet의 메서드를 호출한다.
    • 첫 요청시 init() -> service()
    • 재 요청시 service()
  6. Servlet의 service()메서드는 HTTPRequest의 형태에 따라 doGet(), doPost()메서드를 호출한다.
  7. doGet(), doPost()메서드는 동적 페이지를 생성한 후 HttpServletResponse 객체에 응답을 담아 보낸다.
  8. WAS는 웹 서버에게 응답을 보낸 이후 생성된 HttpServletRequest, HttpServletResponse 객체를 소멸시킨다.
  9. 브라우저는 HTTP Response의 결과를 화면에 띄어 사용자에게 보여준다.

'WEB' 카테고리의 다른 글

[WEB]Forward와 Redirect의 차이  (0) 2023.03.15
[Network]쿠키와 세션  (0) 2023.03.10
[WEB]정적 페이지와 동적 페이지  (0) 2023.03.10
[WEB]클라이언트 / 서버  (0) 2023.03.10
[WEB]웹의 동작방식  (0) 2023.03.10