1. 호스팅 서비스
과거에는 회사가 자체 컴퓨터 하드웨어를 구매하고, 망을 구축하며 자체 네트워트 연결을 확보해 관리했다. 웹이 빠르게 대게가 되면서, 모든 사람이 웹 사이트를 원하게 되었지만, 개발을 위한 환경이 구축된 사람이 드물었다. 환경 구축을 위한 시간을 절약하기 위해 전문적으로 관리하는 웹 호스팅 서비스를 제공하는 사업이 증가했다.
2. 가상 호스팅
컴퓨터 한대를 여러 고객이 공유하게 해서 저렴한 웹 호스팅 서비스를 제공하는 것을 공유 호스팅 혹은 가상 호스팅이라고 부른다.
가상 호스팅은 비용, 공간, 관리에 이점이 있으므로 가상 호스팅을 제공하는 업체는 한 서버에 많은 웹 사이트를 호스팅 하려고 한다. 업자는 복제 서버 더비( = 서버팜 이라고 불림)를 만들고 서버 팜에 부하를 분산할 수 있다. 괌에 있는 각 서버는 다른 서버를 복제한 것이며, 가상 웹 사이트를 호스팅 하고 있기 때문에 관리가 더 편해진다.
2.1 호스트 정보가 없는 가상 서버 요청
HTTP/1.0요청은 요청 메시지에 URL의 경로 컴포넌트만 전송한다.
예를 들면 http://www.hziny.com/index.html 와 http://www.hziny2.com/index.html 두 사이트로 접속하게 되면 둘다 'GET indext/html' 로 요청을 하는데, 두 요청이 다른 문서를 요청하더라도 요청 자체를 똑같이 생기는 문제가 발생 했다.
2.2 가상 호스팅 동작하게 하기
HTTP/1.1을 지원하는 서버는 전체 URL처리가 가능한데 기존에 있던 어플리케이션은 불가능하기 때문에 네가지 기술이 나타났다.
URL 경로를 통한 가상 호스팅
서버가 어떤 사이트를 요청하는 것인지 알 수 있게 URL에 특별 경로 컴포넌트를 추가한다.
예)
http://www.hziny.com/one/index.html -> 'GET /one/index.html'
http://www.hziny2.com/two/index.html -> 'GET /two/index.html'
접두어가 불필요하고, 일반적인 홈페이지 링크같은 URL은 동작하지 않아 거의 사용하지 않는다.
포트 번호를 통한 가상 호스팅
각 사이트에 다른 포트번호를 할당하여, 분리된 웹 서버의 인스턴스가 요청을 처리한다.
불필요한 비표준 포트를 사용해야 한다는 문제점이 있다.
IP주소를 통한 가상 호스팅
각 가상 사이트에 별도의 IP주소를 할당하고, 모든 IP주소를 장비 하나에 연결한다. 웹 서버는 IP주소로 사이트 이름을 식별한다.
예)
http://www.hziny.com/index.html -> 209.172..34.3 의 가상 IP
http://www.hziny2.com/index.html -> 209.172..34.4 의 가상 IP
- 일반적으로 컴퓨터에 연결할 수 있는 장비의 IP개수에는 제한이 있다.
- IP주소는 희소 상품이기 때문에 모든 웹 사이트에 할당할 가상 IP주소를 충분히 얻지 못할 수 있다.
- 서버를 복제하려해도, 각 복제된 서버에 IP 주소를 부여해야 하므로 배가 된다.
이런 문제가 있더라도 가장 널리 쓰이는 방식이다.
Host 헤더를 통한 가상 호스팅
HTTP/1.0과 HTTP/1.1에서는 사이트의 이름을 알려주는 Host 요청 헤더를 정의했다.
예)
Host = 'Host" ":"호스트[ ":". 포트]
3. 안정적 웹 사이트 만들기
웹 사이트에 장애가 생기는 문제를 예측하고 대응하는 방법
3.1 미러링 된 서버 팜
서버 팜은 서로 대신할 수 있고 식별할 수 있게 설정된 웹 서버들의 집합이다. 서버 팜의 서버에 있는 콘텐츠들은 한 곳에 문제가 생기면 다른 한 곳에서 대신 전달할 수 있게 미러링 할 수 있다.
보통 미러링된 서버는 계층적인 관계에 있다. 마스터 원 서버(원본 서버 처럼 행동하는 서버)와 마스터 원 서버로 부터 콘텐츠를 받은 미러링된 복제 원 서버로 구분된다.
클라이언트 요청이 특정 서버로 가는 두가지 방법
HTTP 리다이렉션
- URL은 마스터 서버의 IP를 가르키고, 마스터 서버가 요청을 받아 복제 서버로 리다이렉트 하는 방식
DNS 리다이렉션
- URL은 네개의 IP주소를 가르키고, DNS서버는 클라이언트에게 전송할 IP주소를 선택하게 하는 방식
3.2 콘텐츠 분산 네트워크 (CDN)
CDN은 특정 콘텐츠의 분산을 목적으로 하는 단순한 네트워크로, 네트워크의 노드는 서버, 대리서버, 프락시 서버가 될 수 있다.
3.3 CDN의 대리캐시
대리 캐시는 복제 원 서버를 대신해 사용될 수 있다.
대리 서버와 미러링 된 서버의 차이점은 대리 서버는 수요에 따라서 동작한다는 것, 원 서버의 전체 콘텐츠를 복사하지 않고 클라이언트가 요청하는 콘텐츠만 저장한다는 것이다.
3.4 CDN의 프락시 캐시
전통적인 프락시 캐시는 어떤 웹 서버 요청이든지 다 받을 수 있다. 하지만 대리 서버를 사용하면 프락시 캐시의 콘텐츠는 요청이 있을 때만 저장될 것이고 원본 서버 콘텐츠를 정확히 복제한다는 보장이 없다.
위에서 언급한 기술들은 웹 사이트를 더 빠르게 하는데 도움이 된다.
서버 팜, 분산 프락시 캐시, 대리 서버는 혼잡을 조절하고 트래픽을 분산시켜 콘텐르를 클라이언트로 전송하는 시간이 단축된다. 리소스의 로딩 속도를 좌우하는 핵심 요소는 요청과 응답이 어떻게 연결을 맺고 어떻게 데이터를 전송하는지에 달려있다.
'FE > BOOK' 카테고리의 다른 글
[HTTP 완벽가이드] 17장 내용 협상과 트랜스 코딩 (1) | 2025.02.10 |
---|---|
[HTTP 완벽가이드] 16장 국제화 (1) | 2025.02.05 |
[HTTP 완벽가이드] 15장 엔터티와 인코딩 (0) | 2025.01.15 |
[HTTP 완벽가이드] 14장 보안 HTTP (0) | 2025.01.15 |
[HTTP 완벽가이드] 13장 다이제스트 인증 (0) | 2025.01.10 |