
(해석 또는 이해가 잘못된 부분이 있다면 댓글로 편하게 알려주세요.)
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를 선택해 요청을 전달할 수 있다
CDN이 뭐의 약자였는지 맨날 까먹는다(...) 대충 콘텐츠 망으로 받아들이고 살았다. 요즘에는 AWS에서 CDN 서비스(CloudFront)를 잘 제공해주고 있어서 CDN이 내부적으로 어떻게 구현되어 있는지 굳이 자세히 알아보려 한 적이 없었던 것 같다. 그렇게 얕게 공부하니 인턴하면서 네트워크 얘기 나올 때마다 땀을 삐질삐질 흘렸던 거다. 나는 세상을 좀 궁금해 할 필요가 있다.
CDN은 콘텐츠 배포를 위한 네트워크다. 네트워크라는 건 결국 n개의 노드가 연결되어 있다는 뜻이고, 그 노드 중에는 캐시도 있고 프록시도 있다. 사람들은 안정적으로 신속하게 정확한 콘텐츠를 공급받길 원한다. CDN은 로드밸런싱을 위한 리버스 프록시와 엣지 서버의 네트워크를 제공함으로써 전국, 더 나아가 전세계의 end-user의 니즈를 충족시키는 기술이다. origin에 위치한 콘텐츠는 사용자 요청에 의해서 인근의 엣지 서버에 저장되고, 동일한 요청이 발생하는 경우 해당 엣지 서버에서 콘텐츠를 제공받을 수 있다. CDN을 사용하면 origin 서버로 직접 요청을 보내는 방식에 비해 안정적이고 빠른 것은 물론 보안적인 측면에서도 좋다. TLS는 오버헤드의 끝판왕이기 때문에 인터넷의 모든 프록시와 서버에 보안 연결을 요구하는 것은 현실적으로 불가능하다. 대신 CDN을 사용하면 origin과 replica 사이에서는 HTTPS를 사용하지 않으면서 외부 망으로부터 들어오는 요청에 대해 HTTPS를 요구할 수 있다. 인가되지 않은 사용자에 대해서는 서버의 접근을 차단할 수 있는 것이다. origin의 IP가 노출되지 않는 건 당연하다.
네트워크가 말이 좀 어려워서 진입장벽이 높긴 한데.. 뭔가 공부하면 공부할수록 쓰는 말들이 다 거기서 거기라는 생각이 든다. 익숙해지면 쉽게쉽게 배우는 느낌이다. AWS가 됐든 백엔드 개발이 됐든 기본적인 것만 알면 연결지어 생각하는 게 가능해진다. 그게 또 네트워크 분야의 매력인 것 같기도 하다..✨