본문 바로가기
Back-End/Server

Server App server VS Web server

by SeanK 2021. 11. 24.

 

 

 

오늘은 APP server와 Web server에 대해 알아보자!

 

 

 

 

 

 

블로그 기사중에 자세한 설명이 있어 해당 내용을 번역하여 옮겨본다. 

원본:

https://www.infoworld.com/article/2077354/app-server-web-server-what-s-the-difference.html

 

App server, Web server: What's the difference?

August 23, 2002

www.infoworld.com

 

 

The Web server

 

웹 서버는 HTTP 프로토콜을 다룬다. 웹서버가 HTTP 요청을 받은면 웹서버는 HTML 페이지를 보내는 식의 HTTP 응답으로 응답을 한다. 요청을 처리하기 위해 웹 서버는 정적인 HTML 페이지 혹은 이미지로 응답하거나 리다이렉트를 보내거나 혹은 동적인 응답을 CGI scripts, JSPs, servlets, ASPs. server-side Javascripts 혹은 다른 서버쪽 프로그램에게 위임한다. 취지가 무엇인건 간에, 주로 웹 브라우저에서 보기위한 HTML을 응답한다. 

 

웹서버의 위임 모델은 꽤 단순하다. 웹서버에 요청이 오면 웹서버는 단순히 해당 요청을 가장 잘 다룰 수 있는 프로그램에게 보내버린다. 웹서버는 단순히 응답만 하고 서버쪽 프로그램이 실행하고 응답하는 환경만을 제공한다. 서버쪽 프로그램은 보통 자체적으로 트렌젝션 처리, 데이터베이스 연결 그리고 메세징을 제공한다. 

 

웹서버가 자체적으로 트렌젝션이나 데이터베이스 연결 풀링 등을 지원하지 않더라도, 고장방지나 확장성을 위해 로드 밸런싱, 캐싱, 클러스터링과 같은 다양한 전략들을 실행할 순 있다.

 

The Application server

 

정의에 따르면 어플리케이션 서버는 HTTP를 포함안 다양한 프로토콜을 통해 클라이언트 어플리케이션에 비즈니스 로직을 알려준다. 웹서버는 주로 웹브라우저 디스플레이를 위한 HTML만을 다루는 반면, 어플리케이션 서버는 클라이언트 어플리케이션 프로그램이 필요한 비즈니스 로직 접근을 제공한다. 어플리케이션 프로그램은 이 로직을 객채의 메소드처럼 이용할 수 있다. 

 

어플리케이션 서버 클라이언트로는 PC 위에서 구동하는 GUIs, 웹서버, 혹은 다른 어플리케이션 서버까지 포함된다.  어플리케이션 서버와 클라이언트 사이에서 왔다갔다하는 정보는 마크업 언어로만 제한되지 않는다. 프로그램 로직이 될 수도 있다. 로직은 데이터의 형식을 취하고 정적인 HTML이 아닌 메소드 콜이기 때문에 클라이언트는 비즈니스 로직을 원할 때 마다 실행 할 수 있다. 

 

대부분의 경우, 서버는 J2EE상의 EJB 컴포넌트 모델과 같이 컴포넌트 API를 통해 비즈니스 로직을 알려준다. 더욱이, 어플리케이션 서버는 자기자신의 자원을 관리한다. 보안을 포함한 게이트키핑, 트렌젝션 처리, 리소스 풀링과 메세지 같은 것들을 말이다. 웹서버 처럼 어플리케이션 서버도 다양한 확장성과 오류방지 기술을 사용할 수 있다. 

 

An example

 

예로, 실시간 가격과 재고를 알려주는 온라인 쇼핑몰을 가정해보자. 대부분과 같이, 사이트는 제품을 선택할 수 있는 양식을 제공할 것이다. 질의를 하면, 사이트는 검색을 하고 HTML페이지에 내장되어 결과값을 반환할 것이다. 사이트는 이러한 과정을 다양한 방법으로 실행할 수 있다. 아래에는 웹서버만을 이용했을 때와 웹서버와 어플리케이션 서버를 함께 사용했을 때의 시나리오다. 

 

Scenario 1: Web server without an application server

 

첫번째 시나리오에서, 웹서버 혼자서 온라인 쇼핑몰의 기능을 제공한다. 웹서버는 요청을 받고, 요청을 처리할 수 있는 서버 프로그램에 전달한다. 서버 프로그램은 가격정보를 데이터베이스 혹은 파일에서 검색한다. 결과를 받으면, 서버 프로그램은 데이터를 HTML 응답을 만들기 위해 사용한다. 그리고 웹서버는 웹브라우저에게 응답을 전송한다. 

 

요약하자면, 웹서버는 단순히 HTML 페이지를 응답함으로써 HTTP 요청만을 처리한다. 

 

Scenario 2: Web server with an application server

 

시나리오2는 웹서버가 여전히 응답생성을 스크립트에 위임한다는 점에서 시나리오1과 비슷하다. 하지만, 이제는 어플리케이션 서버에 가격 탐색 로직을 넣을 수 있다. 이런 변화로 인해 스크립트는 데이터탐색과 응답생성을 알기 대신에 단순히 어플리케이션 서버의 탐색 서비스를 호출하기만 하면 된다. 스크립트는 서비스의 결과를 HTML응답을 생성할 때 활용하기만 하면 된다. 

 

이 시나리오에서, 어플리케이션 서버는 제품의 가격정보를 탐색하는 비즈니스 로직을 수행한다. 이러한 기능은 클라이언트가 어떻게 이 데이터를 이용해야 하는제 혹은 표시해야하는지에 대한 어떠한 제안도 하지 않는다. 대신에 클라이언트와 어플리케이션 서버는 데이터를 이리저리 주고받을 뿐이다. 클라이언트가 어플리케이션의 탐색기능을 호출하면, 서버는 단순히 정보를 찾고 클라이언트에게 넘겨주기만 할 뿐이다. 

 

가격로직을 HTML 응답생성 코드로부터 떼어냄으로서, 가격로직은 어플리케이션 사이에서 비약적으로 재활용 가능해진다. 예를 들어 금전 등록기와 같은 두번째 클라이언트도 점원이 손님의 계산을 도우며 똑같은 서비스를 호출 할 수 있다. 반면에, 시나리오1의 가격 탐색 서비스는 응답이 HTML페이지에 내장 되어 있기 때문에 재활용이 어렵다. 

 

 

 

 

 

 

 

 

'Back-End > Server' 카테고리의 다른 글

[Web server] Apache vs NginX  (0) 2023.09.19
[CORS] Corse의 credentials: true의 의미  (0) 2022.01.03