Julie의 Tech 블로그

HTTP - (12) 웹 호스팅 본문

Tech

HTTP - (12) 웹 호스팅

Julie's tech 2021. 7. 4. 19:56
728x90

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

호스팅은 웹 서버의 가장 중요한 기능 중 하나이기 때문에, 직접 관리가 어려울 경우 호스팅 서비스나 업체를 통하기도 한다.

웹 호스팅은 지원 범위에 따라 달라진다.

가장 간단한 호스팅은 전용 웹 호스팅 서비스에 가입하는 것인데, 사용자는 장비를 구매하고 유지보수하는 비용을 지불하고,

호스팅 서비스는 고성능 웹 서버들로 구성한 랙을 대여해주는 역할을 한다.

가상 호스팅은 전용 웹 호스팅과는 다르게 고성능 서버를 full-time으로 대여하기 보다는, 필요에 따라 자원을 이용하는 형태이다.

각각 다른 서버에서 호스팅되는 것처럼 보이지만, 실제로 물리 서버는 동일한 개념이다.

가상 호스팅은 비용, 공간, 관리에 이점이 있어 많은 호스팅 업체들이 가상 호스팅을 제공한다.

앞서 다룬 글 중에 HTTP의 GET메서드를 보면, HTTP/1.0 명세서 상으로는 GET요청시 호스트명을 포함하지 않는다.

이는 HTTP 1.0 프로토콜이 웹 서버가 한 웹 사이트만 호스팅할 것이라는 가정이 있었기 때문이다.

따라서 HTTP 1.0에서는 공용 웹 서버에 동일한 GET /index.html 요청 메시지를 받게 되면, 어떤 호스팅을 해주어야하는지 판단하기 어렵다.

따라서 HTTP/1.1에서는 HTTP요청 메시지에 전체 URL을 처리하도록 지정하였다.

각 처리 방법에 대해 아래와 같이 4 가지로 나뉜다.

1. URL 경로를 통한 가상 호스팅

2. 포트 번호를 통한 가상 호스팅

3. IP주소를 통한 가상 호스팅

4. HOST헤더를 통한 가상 호스팅

각각 기술에 대해 좀 더 자세히 살펴보자.

URL 경로를 통한 가상 호스팅의 경우에는, 서로 다른 URL경로를 할당하도록 강제 구분하는 것인데,

예를 들어 A와 B웹사이트가 공용 호스팅서버에서 제공된다면, A/index.html, B/index.html 처럼 요청하도록 하는 것이다.

하지만 이 방법은 접두어를 정해야하고, 실제 URL과는 상이하여 좋은 방법은 아니다.

포트 번호를 통한 가상 호스팅의 경우에는 각 웹 서버에 다른 포트번호를 할당하는 방버이다.

IP주소를 통한 가상 호스팅은 웹 사이트마다 하나 이상의 unique IP주소를 부여하는 것이다.

클라이언트는 full URL로 요청을 하고, 서버는 각 호스트별로 IP주소를 매핑해둔 정보를 바탕으로 응답을 제공한다.

이는 규모가 큰 호스팅 기업에게는 구현하기가 다소 어렵다. IP개수에 제한이 있고, 주소가 부족할 경우 대처하기가 어렵다.

하지만 위와 같은 문제에도 불구하고 가상 IP 호스팅은 많이들 사용하는 방법이다.

Host헤더를 통한 가상 호스팅은 IP주소 낭비와 가상 IP 제한 문제를 해결하기 위해 제시된 방법으로,

가상 사이트들이 같은 IP를 사용하더라도, 각 사이트가 어디에 속한 것인지 디렉터리를 파악할 수 있어야한다.

이 때문에 HTTP를 확장하여 Host 헤더에 호스트명을 담아 보내도록 하였다.

클라이언트는 아래와 같이 요청 메시지를 보내게 된다.

----------------------------------------

GET /index.html HTTP/1.1

User-agent : SuperBrowser v1.3

Host : www.joes-hardware.com

----------------------------------------

서버는 HTTP Host헤더를 통해 웹사이트 정보가 속한 디렉터리를 구분할 수 있게 된다.

Host헤더는 요청 리소스에 대한 인터넷 호스트와 포트번호를 기술하게 되어있다.

Host헤더에 포트 번호가 기재되어있지 않을 경우 기본 포트를 사용한다.

Host = "Host" ":"호스트[":"포트]


웹 사이트에는 여러 장애가 발생할 수 있다.

예를 들어 갑자기 서버가 다운이 되거나, 트래픽이 폭증하였을 때, 안정적으로 웹 사이트를 제공하기 위해서 대응책을 마련해야한다.

아래부터는 이 대응책 중 대표적인 서버 팜과 CDN을 간략히 다뤄볼 것이다.

1) 미러링 된 서버 팜(farm)

서버 팜은 다운된 서버를 대신할 수 있는 예비 서버들이 있다.

서로 대신 가능하고 식별할 수 있게끔 설정된 웹 서버의 집합을 서버팜이라고 한다.

한 서버에 문제가 생겼을 경우 다른 한 곳에서 대신 전달이 가능하도록 미러링 기능을 제공하는데, 미러링 된 서버는 계층관계에 놓인다.

마스터 원 서버와 복제 원 서버로 나뉘는 것이다.

네트워크 팜에 웹 사이트를 배포하는 방법은 네트워크 스위치를 사용하여 서버에 분산 요청을 보내는 것이다.

이 때 미러링 된 웹 서버는 다른 위치에 있는 콘텐츠와 정확히 동일한 복제본을 소유하고 있어야한다.

2) CDN, 콘텐츠 분산 네트워크

콘텐츠 분산을 목적으로 하는 단순한 네트워크이며, 노드로는 서버/대리 서버/프락시 서버 가 될 수 있다.

CDN에는 대리 캐시/서버가 있는데, 복제 원 서버와 유사한 역할을 한다.

다른 점은 복제 원 서버는 미러링되었을 경우 전체 콘텐츠를 복사하지만, 대리 캐시는 클라이언트가 요청하는 콘텐츠만 저장한다.

이는 많은 요청이 있는 콘텐츠를 빠르게 제공하기 위함이다.

프락시 캐시는 대리서버와는 다르게 원본 서버 콘텐츠를 정확히 복제한다는 보장이 없다. 또한 요청을 많이 받는 콘텐츠는 미리 로딩해두기도 한다.


참고도서

https://book.naver.com/bookdb/book_detail.nhn?bid=8509980

 

반응형