[HTTP] 웹 호스팅 개념 이해하기
HTTP 완벽 가이드 18장 [웹 호스팅]에 관한 정리입니다.
웹 호스팅이란?
콘텐츠 리소스를 저장, 중개, 관리하는 일을 통틀어 일컫는다.
웹 호스팅 업체?
웹이 빠르게 대세가 되면서, 모든 사람이 웹 사이트를 원했지만, 냉난방 장치가 있는 서버실을 짓고 도메인 이름을 등록하고 네트워크 대역폭을 구매할 기술과 시간을 가진 사람은 드물었다. 그 시간을 절약하기 위해, 물리적인 장비 관리에서부터 고객이 직접 콘텐츠를 제공할 수 있는 총체적인 웹 호스팅까지 다양한 서비스를 제공하는 호스팅 업체가 생겨났다.
가상 호스팅(공유 호스팅)?
많은 사람들이 트래픽이 높은 사이트는 아니더라도 웹 공간을 가지고 싶어 한다.
이런 사람들의 웹 공간은 대부분의 시간 동안에는 놀고 있을 것이기 때문에, 이들에게 한 달에 수백 달러라는 비용이 드는 전용 웹 서버를 제공하는 것은 낭비다. 때문에 많은 웹 호스팅 업자는 컴퓨터 한 대를 여러 고객이 공유하게 해서 저렴한 웹 호스팅 서비스를 제공 한다. 이를 공유 호스팅 혹은 가상 호스팅이라 부른다.
각 웹 사이트는 다른 서버에서 호스팅하는 것처럼 보이겠지만, 사실은 물리적으로 같은 서버에서 호스팅되는 것이다.
이게 PC 한 대에 웹사이트 1,000개를 구축한다는 뜻은 아니다. 호스팅 업자는 복제 서버 더미(서버 팜)를 만들고 서버 팜에 부하를 분산할 수 있다.
서버 팜?
서버 팜은 서로 대신할 수 있고 식별할 수 있게 설정된 웹 서버들의 집합 이다. 서버 팜의 서버에 있는 콘텐츠들은 한 곳에서 문제가 생기면 다른 한 곳에서 대신 전달할 수 있게 미러링 할 수있다.
마스터 원 서버
원본 콘텐츠를 가지고 있는 서버복제 원 서버
원 서버로부터 콘텐츠를 받은 미러링 된 서버
서버 팜에 배포하는 간단한 방법 하나는, 네트워크 스위치를 사용해 서버에 분산 요청을 보내는 것이다. 서버에 호스팅 되고 있는 각 웹사이트의 IP 주소는 스위치의 IP 주소가 된다.
가상 호스팅의 네가지 기술
① URL 경로를 통한 가상 호스팅
공용 서버에 있는 각 가상 사이트에 서로 다른 URL 경로를 할당해서 각각을 강제로 구분한다.
죠의 컴퓨터 가게는 http://www.joes-hardware.com/joe/index.html
메리의 골동품 가게는 http://www.marys-antiques.com/mary/index.html 일 때,
“GET/joe/index.html”와 “GET/mary/index.html”로 구분한다.
이는 좋은 해결책이 아니다. “/joe”와 “/mary”는 불필요하고 혼란스럽다.
② 포트번호를 통한 가상 호스팅
죠와 메리는 웹 서버에 각각 다른 포트번호를 할당할 수 있다. 그러나 사용자는 URL에 비표준 포트를 쓰지 않고서도 리소스를 찾길 원한다.
③ IP 주소를 통한 가상 호스팅
각 가상 웹사이트에 유일한 IP 주소를 한 개 이상 부여한다. 모든 가상 서버의 IP 주소는 같은 공용 서버에 연결되어 있다. 서버는 HTTP 커넥션의 목적지 IP 주소를 보고 클라이언트가 어떤 웹사이트에 연결하려고 하는지 알 수 있다. IP 주소는 희소상품으로 IP 주소 부족 문제가 생길 수 있음에도 불구하고 널리 쓰이는 방식이다.
④ Host 헤더를 통한 가상 호스팅
모든 요청에 호스트 명(그리고 포트)을 Host 확장 헤더에 기술해서 전달한다.
안정적인 웹 사이트?
웹사이트에 장애가 생기는 몇 가지 상황이 있다.
- 서버 다운
- 트래픽 폭증
- 네트워크 장애나 손실
이런 일반적인 문제를 예측하고 대응하는 방법은 다음과 같다.
미러링 된 서버 팜
미러링 된 웹 서버에는 다른 위치에 있는 콘텐츠와 정확히 같은 복제본이 있다.
예를 들어 시카고에 마스터 서버가 있고 뉴욕, 마이애미, 리틀 록에 복제 서버로 구성된 네 개의 미러링 서버가 있다. 마스터 서버는 시카고 지역에 있는 클라이언트에게 콘텐츠를 제공하면서 복제 서버들에게 콘텐츠를 퍼트리는 일을 한다. 여기서 클라이언트의 요청이 특정 서버로 가는 두 가지 방법이 있다.
① HTTP 리다이렉션 : 콘텐츠에 대한 URL은 마스터 서버의 IP를, 마스터 서버는 요청을 받는 즉시 복제 서버로 리다이렉트.
② DNS 리다이렉션 : 콘텐츠의 URL은 네 개의 IP 주소를 가리킬 수 있고, DNS 서버는 클라이언트에게 전송할 IP 주소를 선택 가능.
콘텐츠 분산 네트워크(CDN)
CDN은 특정 콘텐츠의 분산을 목적으로 하는 단순한 네트워크이다. 네트워크의 노드는 서버, 대리 서버 혹은 프락시 서버가 될 수 있다.
- CDN의 대리 캐시 대리 캐시는 복제 원 서버를 대신해 사용될 수 있다.
리버스 프락시라고도 불리는 대리 서버는 미러링 된 웹 서버처럼 콘텐츠에 대한 요청을 받는다. 특정 원 서버 집합을 대신해 요청을 받는 것이다(콘텐츠에 대한 IP 주소가 알려졌기 때문에 가능). 보통 원 서버와 대리 서버가 연결되며, 대리 서버는 특정 원 서버를 가리키는 요청을 받는다. 대리 서버와 미러링 된 서버의 차이점은, 대리 서버는 보통 수요에 따라서 동작한다는 것이다. 원 서버의 전체 콘텐츠가 아닌 클라이언트가 요청하는 콘텐츠만 저장할 뿐이다. 대리 서버의 캐시에 콘텐츠가 분산되는 방식은 그들이 받는 요청에 따라 달라진다.
- CDN의 프락시 캐시 대리 서버와는 다르게, 전통적인 프락시 캐시는 어떤 웹 서버 요청이든지 다 받을 수 있다(프락시 캐시와 원 서버 간의 연동이나 IP 주소 합의가 필요 없다).
하지만 대리 서버를 사용하면, 프락시 캐시의 콘텐츠는 요청이 있을 때만 저장될 것이고 원본 서버 콘텐츠를 정확히 복제한다는 보장이 없다. 어떤 프락시는 요청을 많이 받는 콘텐츠를 미리 로딩하기도 한다.
웹사이트 빠르게 만들기
서버 팜이나 분산 프락시 캐시나 대리 서버는 혼잡을 조절하고 네트워크 트래픽을 분산시킨다.
콘텐츠를 분산시키면, 그 콘텐츠를 사용자에게 더 가깝게 만들어 주므로 콘텐츠를 서버에서 클라이언트로의 전송하는 시간이 단축된다.
웹사이트 속도를 높이는 또 다른 접근 방법은 콘텐츠를 인코딩하는 것이다. 예를 들면, 클라이언트가 받은 압축을 해제할 수 있다는 가정하에, 콘텐츠를 압축하는 것이다.
출처 : 데이빗 골리 외 4인, ⌜HTTP 완벽 가이드: 웹은 어떻게 동작하는가⌟, 이응준, 정상일 옮김, 인사이트, 2014, 475~489