Web Application Architecture
요즘(?) 웹 어플리케이션의 아키텍처는 저렇게 단순하지 않다.
시나리오 1 : 응용 프로그램 서버가없는 웹 서버
WS만 있고 WAS가 없는 쇼핑몰이 있습니다. 이 사이트는 제품을 선택할 수 있는 페이지를 제공합니다. 쿼리를 제출하면 사이트에서 조회를 수행하고 HTML 결과를 클라이언트에 반환합니다. WS는 사용자의 요청을 데이터베이스 서버에 직접 보내고 응답을 기다립니다. 수신된 WS는 응답을 HTML로 변환하고 웹브라우저로 보냅니다. 서버와 데이터베이스 서버 간의 통신은 쿼리가 실행될 때마다 발생합니다.
시나리오 2 : 응용 프로그램 서버가있는 웹 서버
WAS가 있는 쇼핑몰이 있습니다. 실행하려는 쿼리가 이미 완료되었지만 그 이후로 데이터가 변경되지 않은 경우, 서버는 데이터베이스 서버에 요청을 보낼 필요없이 결과를 생성합니다. 이를 통해 두번째 사용자가 동일한 정보에 액세스할 수 있고 또 다른 중복 조회를 데이터베이스 서버에 보내지 않고도 신뢰있는 실시간 정보 조회가 가능합니다. WAS는 기본적으로 데이터베이스 서버와 WS의 중간 역할을 합니다. 이렇게하면 첫번째 상황에서 가져온 정보를 재사용할 수 있습니다.
클라이언트와 서버만으로 구성된 웹앱은 웹이 개발된 초기에나 존재했을 것이다.
요즘 일반적인 Web Application Architecture 를 살펴보자.
아키텍처에 Application Server와 DBMS가 추가된 모습이다.
Application Server는 한국에서는 Web Application Server(WAS)라고 부른다. Web Server(WS)는 정적인 처리만 가능한데 WAS는 동적인 처리를 가능하게 한다. 동적? 정적? 무슨 소리인지.. 이해가 안되는게 정상이다. 여기서 동적인 것은 '유도리 있다'로 연상시키면 좋을 것 같다. 스택오버플로우에서 가져온 시나리오를 통해 이해해보도록 하자.
Application Server는 한국에서는 Web Application Server(WAS)라고 부른다. Web Server(WS)는 정적인 처리만 가능한데 WAS는 동적인 처리를 가능하게 한다. 동적? 정적? 무슨 소리인지.. 이해가 안되는게 정상이다. 여기서 동적인 것은 '유도리 있다'로 연상시키면 좋을 것 같다. 스택오버플로우에서 가져온 시나리오를 통해 이해해보도록 하자.
Scenario 1: Web server without an application server
you have an online store with only a web server and no application server. The site will provide a display where you can choose a product from. When you submit a query, the site performs a lookup and returns an HTML result back to its client. The web server sends your query directly to the database server (be patient, I will explain this one in our next nugget) and waits for a response. Once received, the web server formulates the response into an HTML file and sends it to your web browser. This back and forth communication between the server and database server happens every time a query is run.
Scenario 2: Web server with an application server
if the query you want to run has already been done previously and no data has changed since then, the server will generate the results without having to send the request to the database server. This allows a real-time query where a second client can access the same info and receive real time, reliable information without sending another duplicate query to the database server. The server basically acts as an intermediate between the database server and the web server. This allows the information pulled to be reusable while in the first scenario, since this info is embedded in a particular and "customized" HTML page, this is not a reusable process. A second client will have to request the info again and receive another HTML embedded page with the info requested -highly inefficient. Not to mention that this type of server is very flexible due to its ability to manage its own resources, including security, transaction processing, messaging and resource pooling.
시나리오 1 : 응용 프로그램 서버가없는 웹 서버
WS만 있고 WAS가 없는 쇼핑몰이 있습니다. 이 사이트는 제품을 선택할 수 있는 페이지를 제공합니다. 쿼리를 제출하면 사이트에서 조회를 수행하고 HTML 결과를 클라이언트에 반환합니다. WS는 사용자의 요청을 데이터베이스 서버에 직접 보내고 응답을 기다립니다. 수신된 WS는 응답을 HTML로 변환하고 웹브라우저로 보냅니다. 서버와 데이터베이스 서버 간의 통신은 쿼리가 실행될 때마다 발생합니다.
시나리오 2 : 응용 프로그램 서버가있는 웹 서버
WAS가 있는 쇼핑몰이 있습니다. 실행하려는 쿼리가 이미 완료되었지만 그 이후로 데이터가 변경되지 않은 경우, 서버는 데이터베이스 서버에 요청을 보낼 필요없이 결과를 생성합니다. 이를 통해 두번째 사용자가 동일한 정보에 액세스할 수 있고 또 다른 중복 조회를 데이터베이스 서버에 보내지 않고도 신뢰있는 실시간 정보 조회가 가능합니다. WAS는 기본적으로 데이터베이스 서버와 WS의 중간 역할을 합니다. 이렇게하면 첫번째 상황에서 가져온 정보를 재사용할 수 있습니다.
아직까지도 이해가 안될 수 있다. 실체를 못봤으니 어찌보면 당연하다. ('라익'라는 과일이 있다고 생각해보자. '라익'을 '비타민이 풍부해서 노화방지와 장운동 개선에 도움이 되고, 혈압 강하에 탁월한 효과가 있다.'라고 설명하면 그게 무엇인지 정확한 개념이 잡히지 않는다. 사진을 보여주고 나서야 '아 이거구나!'라고 깨닭을 것이다.)
댓글
댓글 쓰기