18장 웹 호스팅

콘텐츠 리소스를 저장, 중개, 관리하는 일을 통틀어 웹 호스팅이라 한다.

호스팅 서비스

  • 월드 와이드 웹 초기에는 각 회사가 자신의 웹 서버를 관리 햇다.
  • 점차 모든 사람들이 웹 서버를 관리하는 것이 불가능해지자, 호스팅 서비스가 등장했다.
  • 호스팅 서비스는 웹 서버를 관리하고, 웹 서버를 공유하는 여러 고객에게 웹 서버를 임대해준다.

간단한 예: 전용 호스팅

  • ISP가 사용자에게 웹 서버를 대여해주는 것

가상 호스팅

  • 컴퓨터 한 대를 여러 고객이 공유하게 해서 저렴한 웹 호스팅서비스를 이용하는 것, 트래픽이 높지 않은 경우 사용한다.
  • 각 웹 사이트는 다른 서버에서 호스팅하는 것처럼 보이겠지만, 사실은 물리적으로 같은 서버에서 호스팅되는 것이다. 최종 사용자 입장에서는 이를 구분할 수 없어야 한다.
  • 호스팅 업체는 복제 서버 더미를 만들어서 서버 팜에 부하를 분산할 수 있다.

호스트 정보가 없는 가상 서버 요청

  • HTTP/1.0에는 공용 웹 서버가 호스팅하고 있는 가상 웹 사이트에 누가 접근하고 있는지 식별하는 기능을 제공하지 않는다.
  • 만약 http://www.joes-hardware.com/index.htmlhttp://www.janes-software.com/index.html 가 같은 서버에 호스팅되고 있다면, 같은 GET /index.html 요청을 하게 된다. 서버는 어떻게 이를 구분할 수 있을까?

가상 호스팅 동작하게 하기

가상 호스팅을 동작하게 하기 위한 네 가지 기술

  • URL 경로를 통한 가상 호스팅
    • 서버가 어떤 사이트 요청을 하는 것인지 알 수 있게 URL에 특별한 경로를 추가한다.
    • http://www.joes-hardware.com/joes/index.htmlhttp://www.janes-software.com/janes/index.html 처럼 경로에 사이트 이름을 추가한다.
    • 이렇게 진행하면 GET /joes/index.html 과 GET /janes/index.html 요청을 구분할 수 있다.
    • 하지만 URL 기반의 가상 호스팅은 좋지않은 방법이라 사용되지 않는다.
  • 포트번호를 통한 가상 호스팅
    • 각 사이트에 다른 포트번호를 할당하여, 분리된 웹 서버의 인스턴스가 요청을 처리한다.
    • 비표준 프로토콜을 붙여야 하기에 사용되지 않는다.
  • IP 주소를 통한 가상 호스팅
    • 각 가상 사이트에 별도의 IP 주소를 할당하고 모든 IP 주소를 장비 하나에 연결한다. 웹 서버는 IP주소로 사이트 이름을 식별한다.
    • 각 사이트마다 가상 IP를 한 개 이상 할당한다.
    • 가상 IP 호스팅은 IP 주소 부족 문제가 생길 수 있지만 널리 쓰인다.
  • Host 헤더를 통한 가상 호스팅
    • HTTP/1.1은 Host 헤더를 통해 가상 호스팅을 지원한다.

HTTP/1.1 Host 헤더

  • HTTP/1.1은 Host 헤더는 RFC 2068에 정의되어 있다.
  • 문법은 Host = "Host" ":" host [ ":" port ]
  • HTTP 요청 메시지에 전체 URL이 기술되어 있으면 Host 헤더는 URL에 있는 호스트 이름과 포트번호를 사용한다.
  • URL에 호스트 이름이 없으면 Host 헤더는 요청 메시지에 있는 호스트 이름과 포트번호를 사용한다.
  • HTTP/1.1 웹 서버는 Host 헤더 필드가 없는 HTTP/1.1 요청 메시지에 400 상태 코드를 응답해야한다.

안정적인 웹 사이트 만들기

웹 사이트에 장애가 생기는 상황

  • 서버 다운
  • 트래픽 폭증
  • 네트워크 장애나 손실

미러링 된 서버 팜

서버 팜은 서로 대신할 수 있고 식별할 수 있게 설정된 웹 서버들의 집합이다.
서버 팜의 서버에 있는 콘텐츠들은 한 곳에 문제가 생기면 다른 한 곳에 대신 전달할 수 있게 미러링 할 수 있다.

  • 마스터 원 서버 : ‘콘텐츠의 원본 제작자’ 같이 행동함
  • 복제 원 서버 : 마스터 원 서버로부터 콘텐츠를 받은 미러링 된 서버

서버 팜에 배포하는 가장 간단한 방법 하나는, 네트워크 스위치를 사용해서 서버에 분산 요청을 보내는 것이다.
서버에 호스팅 되고 있는 각 웹 사이트의 IP주소는 스위치의 IP 주소가 된다.

클라이언트의 요청이 특정 서버로 가는 두 가지 방법

HTTP 리다이렉션

콘텐츠에 대한 URL은 마스터 서버의 IP를 가리키고, 마스터 서버는 요청을 받는 즉시 복제 서버로 리다이렉트시킨다.

DNS 리다이렉션

콘텐츠의 URL은 네 개의 IP 주소를 가리킬 수 있고, DNS서버는 클라이언트에게 전송할 IP 주소를 선택할 수 있다.

콘텐츠 분산 네트워크

CDN : 특정 콘텐츠의 분산을 목적으로 하는 단순한 네트워크, 네트워크의 노드는 서버, 대리서버, 혹은 프락시 서버가 될 수 있다.

CDN의 대리 캐시

대리 캐시는 복제 원 서버를 대신해 사용될 수 있다. 리버스 프락시라고도 불린다.
원 서버 집합을 대신해 요청을 받는다.

  • 대리 서버와 미러링 된 서버의 차이점
    • 대리 서버는 수요에 따라 동작한다.
    • 원 서버의 전체 콘텐츠를 복사하지는 않는다.
    • 클라이언트가 요청한 콘텐츠만 저장한다.

CDN의 프락시 캐시

전통적인 프락시 캐시는 어떤 웹 서버 요청이든지 다 받을 수 잇지만, 대리 서버를 사용하면, 프락시 캐시의 콘텐츠는 요청이 있을 때만 저장될 것이다.
이때 프락시 캐시는 레이어2 혹은 레이어3 장비가 중간에서 웹 트래픽을 가로채 처리하기도 한다.

웹 사이트 빠르게 만들기

서버팜, 분산 프락시 캐시, 대리서버는 혼잡을 조절하고 네트워크 트래픽을 분산시킨다.
콘텐츠를 분산시키면 콘텐츠의 위치가 사용자와 더 가깝게 만들어주므로 콘텐츠를 서버에서 클라이언트로 전송하는 시간이 단축된다.

또 다른 웹 사이트 속도를 높이는 방법은 콘텐츠를 인코딩하는 것이다.

results matching ""

    No results matching ""