18. Web Hosting
웹호스팅: 콘텐츠 리소스를 저장, 중개, 관리하는일을 통틀어 웹 호스팅이라고한다.
호스팅은 웹서버의 가장 중요한 기능 중 하나이다.
콘텐츠를 저장해서 제공하고
관련 로그에 직접 접근하거나
이를 관리하는 데 서버가 필요하다.
필요한 하드웨어, 소프트웨어를 직접 관리하기 어렵다면 호스팅 서비스나 호스팅 업체가 필요할 것이다.
호스팅 업체는 서버와 웹사이트 관리 프로그램을 대여해주고 다양한 등급의 보안, 리포트, 사용편의를 제공한다. 보통 호스팅 업체는 경제적이면서 믿을수 있고 성능 좋은 웹사이트를 제공하기 위해 잘 손상되지 않는 공용 웹 서버에 올린다.
1) 호스팅 서비스
WWW 초기에는 각 회사가 자체 컴퓨터 하드웨어를 구매하고, 자체 망을 구축하여, 자체 네트워크 연결을 확보하고, 자체 웹 서버 소프트웨어를 관리했었다.
웹이 대세가 되면서 모든 사람드이 웹 사이트를 원했으나, 냉난방 장치가 있는 서버실을 짓고 도메인 이름을 등록하고 네트워크 대역폭을 구매할 기술과 시간을 가진 사람은 드물었다. 이 시간을 줄이기 위해 전문적으로 관리하는 웹 호스팅 서비스를 제공하는 여러 신사업이 만들어졌다.
물리적 장비 관리(공간, 냉난방, 연결)에서부터, 고객이 직접 콘텐츠를 제공할 수 있는 총체적 웹 호스팅까지 다양한 종류의 서비스들이 있다.
앞으로 호스팅 웹 서버가 무엇을 제공하는지 초점을 맞춰보자.
2) 가상 호스팅
많은 사람이 트래픽이 높은 사이트는 아니더라도 웹 공간을 가지고 싶어한다. 이런 사람들의 웹 공간은 대부분의 시간 동안에는 놀고 있을 것이기 때문에, 이들에게 한달에 수백 달러라는 비용이 드는 전용 웹 서버를 제공하는 것은 낭비다.
많은 웹 호스팅 업자는 컴퓨터 한대를 여러 고객이 공유하게 해서 저렴한 웹 호스팅 서비스를 제공한다. 이를 공유 호스팅 혹은 가상 호스팅이라고 부른다.
이 웹 사이트는 다른 서버에서 호스팅하는 것처럼 보이겠지만, 사실은 물리적으로 같은 서버에서 호스팅되는 것이다.
최종 사용자 관점에서 가상 호스팅에 있는 웹 사이트는 물리적으로 분리된 전용서버에서 호스팅하는 사이트와 구분할 수 없어야한다.
가상 호스팅은 비용,공간, 관리의 이점이 있으므로 가상호스팅을 제공하는 업체는 한 서버에 수십, 수백, 수천개의 웹 사이트를 호스팅하려고 한다. (PC 한대에 웹사이트를 1000개 구축한다는 뜻은 아님)
복제 서버 더미(=서버 팜)를 만들고, 부하를 분산시킨다. 팜에 있는 각 서버는 다른 서버를 복제한 것.
① 호스트 정보가 없는 가상 서버 요청
HTTP/1.0 명세는 공용 웹 서버가 호스팅하고 있는 가상 웹사이트에 누가 접근하고 있는지 식별하는 기능을 제공하지 않는다.
서버가 여러개의 사이트를 가상 호스팅하고 있으면, 사용자가 어떤 가상 웹 사이트로 접근하려고 하는것인지 아는 데 필요한 정보가 충분하지 않다.
두 요청이 (서로 다른 웹 사이트에) 완전히 다른 문서를 요청하더라도 요청 자체가 똑같이 생겼다. 문제는, 웹사이트 호스트 정보가 요청에서 제거된다는 것이다.
HTTP 대리서버(리버스 프락시), 인터셉트 프락시 또한 어떤 사이트를 요청하는지에 관한 정보가 필요하다.
HTTP/1.1 은 이 문제를 해결하기 위해 Host 헤더를 지원한다.
② 가상 호스팅 동작하게 하기
호스트 정보를 HTTP 요청 명세에 넣지 않은 것은 각 웹 서버가 정확히 한 웹사이트만 호스팅할것이라고 잘못예측한 HTTP 명세의 실수였다. (공유 서버인 가상 호스팅을 고려하지 않았다.)
그래서 URL에 있는 호스트명 정보는 필요 없는 것으로 여겨 명세에서 제외하고 단순히 경로 컴포넌트만 전송하도록 설게했다.
이를 해결하기 위해서, HTTP 요청 메세지에완전한 URL도 포함해서 보내게 해서 간단히 해결하였다.
HTTP/1.1 을 지원하는 서버는 HTTP 요청 메시지에 있는 전체 URL을 처리할 수 있어야한다.
하지만 기존에 있던 모든 애플리케이션이 명세에 맞추어 업그레이드하기까지 오랜 시간이 걸릴 것이고, 그래서 4가지 기술이 나타났다.
URL경로를 통한 가상 호스팅: 공유 서버에 있는 각 사이트에 서로 다른 URL 경로를 할당해서 각각을 강제로 구분할 수 있다. 일반적으로 거의 사용되지는 않는다.
포트번호를 통한 가상 호스팅: 경로명 변경 대신 웹서버 별로 다른 포트를 할당한다. 단, 사용자는 URL에 비표준 포트를 쓰지 않고도 리소스를 찾기 원한다.
IP 주소를 통한 가상 호스팅: 가상 IP를 할당. 각 가상 웹사이트에 유일한 IP 주소를 한 개 이상 부여. IP 호스팅은 같은 IP 주소 부족 문제가 생길 수 있음에도 불구하고 널리 쓰인다.
Host 헤더를 통한 가상호스팅: 모든 요청에 호스트명(그리고 포트)을 Host 확장 헤더에 기술해서 전달.(HTTP/1.1 명세를 따르려면 반드시 기술해야한다.)
Host = "Host" ":" 호스트 [ ":" 포트]
3) 안정적인 웹사이트 만들기
웹사이트에 장애가 생기는 몇 가지 상황 예
서버 다운
트래픽 폭증: 갑자기 많은사람이 동시에 몰려드는 상황. 갑작스러운 트래픽 폭증은 웹서버에 과부하를 주어 느려지게 하거나 완전히 멈춘다.
네트워크 장애 또는 손실
이런 일반적인 문제를 에측하고 대응하는 몇가지 방법을 살펴보기.
① 미러링된 서버 팜
서버팜이란: 서로 대신할 수 있고, 식별할 수 있게 설정된 웹서버들의 집합
서버팜의 서버에 있는 콘텐츠들은 한 곳에 문제가 생기면 다른 한 곳에서 대신 전달할 수 있게 미러링 할 수 있다.
보통 미러링 된 서버는 계층적인 관계에 있다.
한 서버는 '콘텐츠의 원본 제작자' 같이 행동한다. (원본 콘텐츠를 가진 서버, 마스터 원서버)
마스터 원 서버로부터 콘텐츠를 받은 미러링된 서버는 복제원서버라고 부른다.
서버팜에 배포하는 간단한 방법 하나는, 네트워크 스위치를 사용해서 서버에 분산요청을 보내는 것이다.
서버에 호스팅 되고있는 각 웹사이트의 IP주소는 스위치의 IP주소가 된다.
마스터 원서버는 복제 원 서버에 콘텐츠를 보낼 책임이 있다.
외부에서 볼 때, 이 콘텐츠를 가리키는 IP주소는 스위치 IP주소이다.
스위치는 서버에게 요청을 전송해야하는 책임이 있다.
미러링된 웹서버에는 다른 위치에 있는 콘텐츠와 정확히 같은 복제본이 있다.
② 콘텐츠 분산 네트워크(CDN)
특정 콘텐츠의 분산을 목적으로 하는 단순한 네트워크이다.
네트워크의 노드는 서버, 대리서버, 혹은 프락시 서버가 될 수 있다.
③ CDN의 대리캐시 (=리버스 프락시)
미러링된 웹서버처럼 콘텐츠에 대한 요청을 받는다.
대리서버는 수요에 따라 동작을 한다.
원서버의 콘텐츠를 복사하지는 않는다. 클라이언트가 요청하는 콘텐츠만 저장할 뿐이다.
대리서버의 캐시에 콘텐츠가 분산되는 방식은 그들이 받는 요청에 따라 달라진다.
원서버는 콘텐츠를 업데이트 해줄 의무는 없다.
많은 요청이 있는 콘텐츠를 빠르게 제공하기위해, 사용자가 요청하기도 전에 미리 가져오기 기능을 가진 대리 서버도 있다.
④ CDN의 프락시 캐시
레이어2, 레이어3장비가 중간에서 웹트래픽을 가로채 처리하기도 한다.
가로채기 설정은 클라이언트와 서버 사이의 모든 HTTP 요청이 물리적으로 캐시를 거치게 네트워크 설정을 할 수 있는지에 따라 달라진다.
콘텐츠는 받는 요청에 따라 캐시에 분산된다.
4) 웹사이트 빠르게 만들기
서버팜, 분산프락시 캐시, 대리서버는 혼잡을 조절하고, 네트워크 트래픽을 분산시킨다.
콘텐츠를 분산시키면 그 콘텐츠를 사용자에게 더 가깝게 만들어주므로,
서버에서 클라이언트로 콘텐츠를 전송하는 시간이 단축된다.
리소스의 로딩 속도를 좌우하는 핵심요소는 어떻게 요청과 응답이 클라이언트와 서버 사이에서 연결을 맺고 인터넷을 가로질러 데이터를 전송하는지에 달려있다.
웹 사이트 속도를 높이는 또다른 접근방법은 콘텐츠를 인코딩하는 것이다.
(클라이언트가 받은 압축을 해제할 수 있다는 가정하에, 콘텐츠를 압축하는 것.)
참조
호스팅: 웹호스팅과 서버 호스팅? https://www.youtube.com/watch?v=pLCY29axvuo
Last updated