웹 브라우저의 주소창에 URL을 입력하고 엔터키를 누르면 짧은 순간에 데이터를 보여주는 컴퓨터와 데이터를 저장하는 컴퓨터 등 여러 요소 사이의 통신이 이루어진다.
이러한 웹 동작에 필요한 각 요소와 그 사이 상호작용을 정의해 놓은 것을 웹 애플리케이션 아키텍처라고 한다.
웹 클라이언트, 그리고 웹 서버
스테이크 맛집인 아웃백에 들어갔다고 생각하자. 우리는 종업원분께 스테이크를 주문하고 종업원은 요리사에게 주문 내역을 전달한다. 요리사는 주문이 들어온 음식의 레시피에 맞게 음식을 조리하고 완성된 음식을 종업원에게 전달하고, 종업원은 우리에게 스테이크를 대접할 것이다.
이때 우리의 주문을 확인한 종업원을 웹 클라이언트, 주문 내역을 받아 요리를 만다는 요리사를 웹 서버라 볼 수 있다. 이 두 프로그램의 목적은 서로 햇갈리지 않게 정보를 주고 받으며 사용자에게 좋은 서비스를 제공하는 것이다.
웹 클라이언트는 사용자가 웹에 접근할 때 사용하는 프로그램이며 일반적으로 크롬, 사파리, 엣지 등의 웹 브라우저를 웹 클라이언트라 말한다.
https://www.google.com 을 주소창에 입력하고 엔터키 를 누르면, 웹 클라이언트는 URL 에 대한 정보를 찾아 HTTP 메시지 형태로 서버에게 요청을 보낸다.
웹 서버는 웹 클라이언트로 부터 HTTP 요청을 받아 데이터를 전달하는 프로그램을 말한다. HTTP 메시지를 확인하고 이에 맞는 데이터를 처리한 뒤, 웹 클라이언트에게 응답을 전달한다. 웹 클라이언트가 특정 주소의 메인 페이지를 요청한다면, 요청을 확인한 웹 서버는 요청에 맞는 데이터들을 가져와 웹 클라이언트에게 전달한다.
대표적인 웹 서버는 아파치 웹 서버, IIS, NginX 등이 있다.
보조 요리사 WAS
WAS(Web Application Server)는 HTML, CSS 파일같은 정적 컨텐츠를 제공하는 웹 서버에서 단독으로 처리할 수 없는 DB 조회와 같은 다양한 로직 처리가 필요한 동적 컨텐츠를 제공하며 보조를 담당한다. 이러한 WAS의 동작은 웹 서버에서 해야하는 일을 분담해 서버의 부담을 줄여 웹 통신의 효율을 높이는 효과를 갖는다.
대표적인 WAS의 종류는 톰캣, 제우스, IBM 웹스피어 등이 있다.
거대한 냉장고, 데이터 베이스
데이터베이즈(DB)는 다양한 상황의 웹 서비스에 필요한 다양한 데이터를 체계적으로 저장한느 곳이며, WAS에서 동적 컨텐츠를 제공하기 위해 접근하는 장소이다.
대표적인 DB의 종류는 MySQL, MongoDB, 오라클 등이 있다.
위에서 설명한 구조 이외의 웹 애플리케이션 아키텍처를 알아보자.
DNS
DNS(Domain Name Server)는 도메인 이름(ex. google.com)에서 IP 주소로의 키/값을 제공하며 클라이언트가 알맞는 서버에 요청을 보낼 수 잇는 경로를 찾는 것을 도와준다.
식당으로 예를 들자면, 식당이름을 검색해 식당의 주소(위치)를 알려주는 지도와 같은 역활을 한다.
로드 밸런서
로드 밸런서는 웹 서버의 수평적 확장을 가능하게 해주는 개념으로, 웹서버로 들어오는 요청을 복제/미러링 된 수많은 애플리케이션 서버 중의 하나로 연결하고 서버의 응답을 다시 클라이언트로 보낸다. 모든 서버는 특정 요청을 같은 방식으로 처리해야 하며 서버에 과부하가 걸리지 않도록 요청을 적절히 분배해 주는 역활을 한다.
식당에서 종업원이 한명있는 경우 많은 주문이 몰리면 주방으로 주문 내역을 전달하는 속도와 정확성은 낮아질 것이다. 하지만 종업원이 여러명 있고 그들이 똑같이 업무를 수행한다면 속도와 정확성은 상대적으로 증가할 것이다.
CDN
CDN(Content Delivery Network)은 HTML, CSS, JS, 이미지와 같은 정적 데이터를 원본(Origin) 서버에서 받아오는 대기시간을 줄이기 위해 사용되는 기술이며, 컨텐츠를 여러개의 엣지(edge)서버에 분산시키며 동작한다.
위에서는 정적 데이터만 처리하는 것처럼 보이지만, CDN은 동적 데이터도 처리할 수 있다.
동적 캐싱을 통해 사용자 요청에 따른 응답 컨텐츠가 엣지에 있다면 응답을 보내고, 없다면 원본 서버에 요청해 받아오며 동적 데이터를 처리할 수 있다.
동적 데이터를 처리하는 이유는 여러가지가 있는데, 사용자의 위치별 맞는 데이터를 요청하는 등의 이유가 있다.
CDN 기술은 컨텐츠를 전세계의 여러 엣지 서버에 분배하며 원본 서버와 물리적으로 먼 곳에서 요청을 해도 요청한 곳과 가까운 엣지 서버에서 빠르게 응답을 받을 수 있다.
음식점을 예로 들자면, 미국의 회사인 아웃백 스테이크 하우스를 미국에 가서 먹으려면 시간이 오래 걸릴 것이다(돈도....). 하지만, 아웃백이라는 브랜드가 우리나라에 입점한다면 우리는 미국으로 가서 먹는 것 보다 빠르게 아웃백에 도달할 수 있다.
정리
이처럼 웹 애플리케이션 아키텍처의 종류는 많으며, 각 요소의 역활가 상호작용을 이해하고, 웹의 규모와 목적에 따라 적절한 웹 애플리케이션 아키텍처를 설계하며 웹 구현 단계에서 발생할 수 있는 위험을 줄이고 안정적인 웹을 운영할 수 있게 된다.
'CS > 네트워크' 카테고리의 다른 글
[그림으로 쉽게 이해하는 웹/HTTP/네트워크] 웹 1.0 부터 3.0까지, 가볍게 읽는 웹 변천사 (1) | 2024.09.19 |
---|---|
[그림으로 쉽게 이해하는 웹/HTTP/네트워크] WWW와 인터넷 그리고 웹 (1) | 2024.08.29 |
URL을 입력하고 일어나는 일 (0) | 2023.09.18 |