-
[Network] CDN이 뭔지 알죠?Infra 2024. 7. 7. 15:42
내가 대충 넘겨짚고 있던 CDN에 대한 질문을 받았고
나는 영 잘못알고있었다.
내가 업무하며 사용한 CDN은 aws의 cloud front 였다.
나는 이 cloud front가 일종의 웹서버인줄 알았다.
캐시된 웹서버.
하지만 이는 틀렸다!
CDN 은 컨텐츠 전송 네트워크이다.
CDN을 사용하면 이 컨텐츠들을 여러 지역에 분산된 서버들을 통해 제공함으로써 지리적으로 떨어진 사용자도 빠르게 접근할 수 있다. CDN은 성능 향상과 함께 웹사이트의 부하를 줄이고 보안을 강화하는 등의 장점을 가지고 있다.
CDN은 콘텐츠를 호스팅하지 않으며 적절한 웹 호스팅의 필요성을 대체할 수는 없지만 네트워크 에지에서 콘텐츠를 캐싱하여 웹사이트 성능을 개선한다.
출처 cloudflare 이렇게 CDN 을 사용하면 좋은 점이 여럿 있는데
멀티 리전환경에서 빠르게 HTML 페이지, JavaScript 파일, 스타일시트, 이미지, 동영상 등 인터넷 콘텐츠를 빠르게 전송할 수 있는 점과
디도스 등의 공격을 받을 때 CDN은 전 세계에 분산된 여러 서버(엣지 서버)를 통해 컨텐츠를 제공하므로, 특정 서버에 집중되는 트래픽을 분산시킴으로 오리진 서버의 부담을 줄여준다.
IP 차단, 레이트 리미팅, WAF(Web Application Firewall) 등의 기술을 사용할 수 있어 비정상적인 트래픽을 필터링해준다.그니까 결국 웹사이트 호스팅은 S3에서 하는데 우리는 aws cloudfront라는 cdn 을 사용하여
고가용성과 보안 그리고 멀티 리전에서의 접속 속도의 이점을 가져가고 있던 것이다.
CDN의 동작 원리
그렇다면 이 cnd 은 어떻게 동작하는걸까?
1. 사용자 요청
사용자가 웹사이트에 접속하면, 브라우저는 DNS(Domain Name System) 요청을 보낸다. DNS는 사용자가 입력한 도메인 이름을 IP 주소로 변환한다.
2. DNS 라우팅
CDN을 사용하면, DNS 요청은 CDN의 DNS 서버로 라우팅된다. CDN의 DNS 서버는 사용자의 지리적 위치를 기반으로 가장 가까운*엣지 서버의 IP 주소를 반환한다.
엣지 서버란 무엇인가?
출처 cloudflare
CDN 에지 서버는 네트워크의 논리적 극단에 위치하는 컴퓨터다.엣지 서버는 개별 네트워크 간의 연결 역할을 하는 경우가 많고 사용자가 요청하는 컨텐츠를 저장하고, 이를 빠르게 제공하는 역할을 한다.
이를 통해 웹사이트의 로딩 속도를 향상시키고, 오리진 서버(원본 서버)에 대한 부하를 줄일 수 있다.
엣지 서버의 특징
컨텐츠 캐싱(Content Caching):
엣지 서버는 오리진 서버로부터 전송된 컨텐츠(이미지, 비디오, CSS 파일 등)를 캐싱한다.
사용자가 웹 페이지를 요청할 때마다, 엣지 서버는 캐시된 컨텐츠를 제공함으로써 응답 시간을 줄인다.
캐싱된 컨텐츠는 TTL(Time To Live) 설정에 따라 일정 기간 동안 유지되며, 이후에는 갱신된다.나는 TTL을 24시간으로 지정해서 사용하고 있다.
그래서 프론트 변경사항이 생긴다면
클라우드 프론트 캐시 무효화를 요청하여 갱신하고 있다.
지리적 분산(Geographic Distribution):
엣지 서버는 전 세계 여러 지역에 분산되어 배치되어 있다.
사용자의 요청이 발생하면, DNS는 사용자의 위치를 기반으로 가장 가까운 엣지 서버로 요청을 라우팅한다.
지리적으로 가까운 서버에서 컨텐츠를 제공하므로 네트워크 지연(latency)이 줄어들어 더 빠른 응답이 가능하다.
부하 분산(Load Balancing):
엣지 서버는 부하 분산 기술을 사용하여 여러 서버에 트래픽을 분산시킨다.
이는 특정 서버에 트래픽이 집중되는 것을 방지하고, 서버 과부하를 피하며 안정적인 서비스를 제공한다.
보안(Security):
엣지 서버는 DDoS 공격을 완화하고, SSL/TLS 인증서를 통해 데이터를 암호화하여 보안을 강화한다.
또한, WAF(Web Application Firewall) 기능을 통해 악성 트래픽을 필터링할 수 있다.
3. 컨텐츠 제공엣지 서버가 요청을 받아 캐싱된 컨텐츠가 있는지 확인한다.
4-1. 캐시 히트(Cache Hit)캐싱된 컨텐츠가 있을 경우, 엣지 서버는 즉시 컨텐츠를 사용자에게 제공한다.
4-2. 캐시 미스(Cache Miss)캐싱된 컨텐츠가 없을 경우, 엣지 서버는 오리진 서버에 요청하여 컨텐츠를 가져온다. 이후 해당 컨텐츠를 캐싱하고 사용자에게 제공한다.
그니까 결국 CDN은 전 세계에 분산된 엣지 서버들의 네트워크인 것이다!!!!
'Infra' 카테고리의 다른 글
[프론트 배포] index.html 에 버저닝과 nginx 프록시로 브라우저 캐시문제 해결 (3) 2025.02.02 [Keycloak] 키클락 import error 해결 (4) 2024.10.21 [Network] Virtual Host (0) 2024.08.20