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) 하드웨어
- 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를 구분함으로써 얻는 이점
- 기능을 분리하여 서버 부하 방지
- Web Server는 정적 페이지 처리, WAS는 동적 컨텐츠 처리를 담당하게 하여 서버의 부하를 줄여 수행속도를 높여 페이지 노출 시간을 줄일 수 있다.
- 물리적으로 분리하여 보안 강화
- SSL에 대한 암복호화 처리에 Web Server를 사용
- 하나의 Web Server에 여러대의 WAS를 연결 가능
- Web Server에서 로드벨렁싱 및 접근 허용 IP 및 세션의 관리를 담당하게 함으로써 보다 효율적은 서버 관리가 가능해진다.
- Web Server에서 WAS에 대한 접근을 관리하게 됨으로써, 만약 어떤 WAS에서 오류가 발생한 경우, 해당 WAS에 사용자의 접근을 막음으로써 오류를 느끼지 못하게 이용할 수 있게 된다. 즉 무중단 운영 및 장애 극복에 이점을 갖게된다.
- 여러 웹 어플리케이션 서비스가 가능해진다.
- 기능을 분리하여 서버 부하 방지
- 즉 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server와 WAS를 분리하여 사용할 수 있다.
Web Service Architecture
- 앞서 3-tier architecture을 먼저 살펴봤는데, 이때 비지니스 로직 티어에는 여러가지 형태의 서버 구조를 가질 수 있다.
- Web Server만 사용할 수 있고, WAS만 사용할수도 있고, Web Server를 앞에두고 WAS를 사용할수도 있다.
- 중요한것은 미들웨어를 통해 프레젠테이션 계층과 데이터 계층을 분리함으로써, 보다 자유롭게 비지니스 로직을 처리할 수 있게 됐다는 점이고, 이후 웹 서버를 어떻게 구성하냐에 따라 자원 이용의 효율성 및 배포 및 유지보수에 이점을 갖을 수 있게 된것이다.
- 그 중 웹 서비스에서 자주 사용하는 3-tier architecture(Web Server + WAS)를 살펴보자면 아래와 같다.
- 클라이언트가 Web Server에 Request를 한다.
- Web Server는 클라이언트의 Request를 WAS에 전달한다.
- WAS는 관련된 Servlet을 메모리에 올린다.(HttpServletRequest, HttpServletResponse객체를 생성한다.)
- WAS는 Web.xml을 참조하여 요청에 해당하는 Servlet을 찾고, 생성한 객체와 함께 Thread에 올린다.
- Thread는 Servlet의 메서드를 호출한다.
- 첫 요청시 init() -> service()
- 재 요청시 service()
- Servlet의 service()메서드는 HTTPRequest의 형태에 따라 doGet(), doPost()메서드를 호출한다.
- doGet(), doPost()메서드는 동적 페이지를 생성한 후 HttpServletResponse 객체에 응답을 담아 보낸다.
- WAS는 웹 서버에게 응답을 보낸 이후 생성된 HttpServletRequest, HttpServletResponse 객체를 소멸시킨다.
- 브라우저는 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 |