[TIL] HTTP: The Definitive Guide "p419 ~ p423

시윤·2일 전

[TIL] Two Pages Per Day

목록 보기
153/153
post-thumbnail

Chapter 18. Web Hosting

(해석 또는 이해가 잘못된 부분이 있다면 댓글로 편하게 알려주세요.)


✏️ 요약


Making Web Sites Reliable

  • 디바이스 다운, 트래픽 스파이크, 네트워크 용량 초과 등 -> 웹 사이트 장애 유발
  • 서버 팜을 통한 안정성 확보 필요

Mirrored Server Farms
한 서버에서 문제 발생시 미러링된 다른 서버를 통해 콘텐츠를 확보할 수 있다

  • master origin server : 원본 콘텐츠를 포함하며 replica 서버에 해당 콘텐츠를 전파하는 서버
  • replica origin server : 복제본을 저장하고 있는 서버
  • 구현 방법
    • 요청을 분배할 수 있는 네트워크 스위치를 사용한다
    • 서버에 호스팅된 각각의 사이트의 IP는 스위치의 IP 주소다
  • 요청을 특정 서버로 전달하는 방법
    • HTTP redirection : 콘텐츠 URL이 master 서버의 IP 주소와 일치할 때는 replica 서버로 리디렉션 할 수 있다
    • DNS redirection : 콘텐츠 URL을 통해 4개의 IP 주소를 구분할 수 있다면 DNS 서버가 특정 IP를 선택해 요청을 전달할 수 있다

Content Distribution Networks (CDN)

  • 특정 콘텐츠를 배포하는 데 목적을 둔 네트워크
  • 네트워크 내의 각 노드는 서버일 수도 있고 프록시(Surrogates, Proxy caches, …)일 수도 있다
  • Surrogates as Replica
    • 리버스 프록시 -> origin 서버를 대신해서 요청을 받는다
    • Origin 서버의 콘텐츠의 전체 사본을 보유하지 않고 클라이언트가 요청한 콘텐츠를 보관한다
  • Proxy Caches as Replica
    • Surrogate와 달리 임의의 웹 서버에 대한 요청을 받는다
    • Layer-2 혹은 Layer-3 장치(스위치나 라우터)를 통해 웹 트래픽을 가로채 프록시 캐시에 전달한다

Making Web Sites Fast

  • 서버 팜 구축, 프록시 캐시와 리버스 프록시를 통한 네트워크 트래픽 제어를 통해 혼잡 회피
  • 콘텐츠를 가능한 한 end-user에 가깝게 위치시킴으로써 물리적 시간 감소
  • 빠른 전송을 위한 인코딩 (Chapter 15)

✏️ 코멘트


CDN이 뭐의 약자였는지 맨날 까먹는다(...) 대충 콘텐츠 망으로 받아들이고 살았다. 요즘에는 AWS에서 CDN 서비스(CloudFront)를 잘 제공해주고 있어서 CDN이 내부적으로 어떻게 구현되어 있는지 굳이 자세히 알아보려 한 적이 없었던 것 같다. 그렇게 얕게 공부하니 인턴하면서 네트워크 얘기 나올 때마다 땀을 삐질삐질 흘렸던 거다. 나는 세상을 좀 궁금해 할 필요가 있다.

CDN은 콘텐츠 배포를 위한 네트워크다. 네트워크라는 건 결국 n개의 노드가 연결되어 있다는 뜻이고, 그 노드 중에는 캐시도 있고 프록시도 있다. 사람들은 안정적으로 신속하게 정확한 콘텐츠를 공급받길 원한다. CDN은 로드밸런싱을 위한 리버스 프록시와 엣지 서버의 네트워크를 제공함으로써 전국, 더 나아가 전세계의 end-user의 니즈를 충족시키는 기술이다. origin에 위치한 콘텐츠는 사용자 요청에 의해서 인근의 엣지 서버에 저장되고, 동일한 요청이 발생하는 경우 해당 엣지 서버에서 콘텐츠를 제공받을 수 있다. CDN을 사용하면 origin 서버로 직접 요청을 보내는 방식에 비해 안정적이고 빠른 것은 물론 보안적인 측면에서도 좋다. TLS는 오버헤드의 끝판왕이기 때문에 인터넷의 모든 프록시와 서버에 보안 연결을 요구하는 것은 현실적으로 불가능하다. 대신 CDN을 사용하면 origin과 replica 사이에서는 HTTPS를 사용하지 않으면서 외부 망으로부터 들어오는 요청에 대해 HTTPS를 요구할 수 있다. 인가되지 않은 사용자에 대해서는 서버의 접근을 차단할 수 있는 것이다. origin의 IP가 노출되지 않는 건 당연하다.

네트워크가 말이 좀 어려워서 진입장벽이 높긴 한데.. 뭔가 공부하면 공부할수록 쓰는 말들이 다 거기서 거기라는 생각이 든다. 익숙해지면 쉽게쉽게 배우는 느낌이다. AWS가 됐든 백엔드 개발이 됐든 기본적인 것만 알면 연결지어 생각하는 게 가능해진다. 그게 또 네트워크 분야의 매력인 것 같기도 하다..✨

profile
틈틈이 두 페이지씩 원서 읽기

0개의 댓글