CDN이란 Content Delivery Network의 약자로
컨텐츠( 이미지, 동영상, 각종 파일)등을 유저가 가장 가까운 서버에서 받을 수 있게 해주는 서비스이다.
더욱 나아가 CDN으로 얻을 수 있는 장점은??
속도가 빨라지고 안정성이 높아지는 것이 가장 큰 장점이다.그 외에도 있다.
- Improve page load speed
- Handle high traffic loads
- Block spammers, scrapers and other bad bots
- Localize coverage without the cost
- Reduce bandwidth consumption
- Load balance between multiple servers
- Protect your website from DDoS attacks
- Secure your application
일반적으로 End-User가 사용하는 그림을 그려보자면 아래와 같다.
모든 유입 트래픽에 대해서 gateway가 존재해야 한다.
CDN 에서는 DNS server를 통해서 gateway 역할을 한다.
gateway란 어떠한 네트워크 영역(라우터)라고 할 수 있다.
DNS server가 가지고 있는 네트워크와 연결하려면 DNS server를 거쳐야 한다는 말과 같다.
Domain을 통해서 CDN이 가지는 point 들에게 각각 Routing을 해준다.
CDN이 가진 컨텐츠는 유저에게 보내진다.
이렇게 간단한 작업이다.
이러한 목적을 어떤 방식으로 달성하느냐..?
Reverse Proxy를 사용한다.
Reverse Proxy는 따로 정리하겠다.
[컴퓨터(Computer Science)/네트워크, Network] - Proxy, 프록시, 중개자
덕분에 보안성과 안정성을 높일 수 있었다.
Security
외부의 인가되지 않은 접근으로부터 CDN을 막는 것이다.
즉, CDN 자체에서 막는 것이 아닌, 요청부터 걸러서 CDN에 접근조차 하지 못하게 하는 것이다.
일반적으로 DDoS 같은 것을 막을 수 있다.
Load Balancing
트래픽을 막는 것 뿐만 아니라 트래픽을 분산시킬 수 있다.
Traffic Congestion이 일어나면 서비스 수준이 급격하게 떨어지기 시작한다.
Request의 양을 파악하여 서비스 수준이 낮아지는 것을 막기 위해 Reverse Proxy를 이용하여 LB를 할 수 있다.
먼저 구조를 알아보자
일반적으로 위와 같은 형태를 띄고 있다.
CDN => points of Presense(Pops) => 지역 거점이라고 해석해도 무방하다.
CDN의 목적은 Regional content distribution이다.
regional data centers 를 이용해서 communication with user in their proximity를 한다.
다시 말해서 컨텐츠에 접근하는 RTT 를 낮출 수 있다.
그럼으로써 지역에 상관없이 유저들은 쾌적한 환경, 서비스를 제공받을 수 있다.
**regional Data center가 필요하기 때문에 AWS, GCP, Azure 등 대기업들만 가능하다는 소리를 듣는다.
하지만 우리는 대기업이 세워놓은 인프라를 이용하기만 하면 된다.
이런 구조는 왜 그렇게 되어있냐면?
사용자에게 CDN 본연의 역할을 하기 위한 CDN이 가져야 할 특성이 있다.
1. Caching
2. Coonection Optimization
3. Security Solution (위 그림의 Scrubbing Servers)
대표적인 것이 3가지다.
이러한 특성은 CDN이 해야 할 일인 사용자에게
regular hosting (by reducing bandwidth),
minimizing latency,
providing scalability를 제공하는데 필수적이다.
각 Component들은 위의 특성을 가지고 위의 기능들에 대해서 수행하기 위함이다.
CDN의 4가지 필수요소
- Performance
CDN의 궁극적 목적 중 하나는 Latency를 최소화시켜 유저들에게 빠르게 서비스를 제공하는 것이다.
구조적인 관점에서 보자면 주요 Regional Point의 최적의 연결화 작업을 해야한다는 것과 마찬가지다.
결국 물리적 위치는 당연히 가까울수록 중요하다.
다시 말하면 AWS가 강점을 가지고 있는 것은 이러한 점 때문에 절대적 우위를 가진다.
**실제로 물리적위치가 가까우면 빠른 것은 당연한 것이고 그 이외에도 네트워크를 어떻게 처리하느냐가 중요하다.
- Scalability
실제로 컨텐츠는 다양할 수 있다.영상과 같이 실시간으로 보내야하는 경우도, 아니면 엄청난 볼륨을 가진 파일을 제공해야 할 수도 있다.
CDN는 이러한 트래픽을 잘 처리할 수 있어야 한다.
즉, 캐싱을 해서라도 edge location에서 빨리 보내야하는 경우도 있을 것이고 각 서버들에 대한 Load Balancing을 하여 수많은 트래픽에 관해서 신속하게 처리해야 하는 경우도 있을 것이다.
또한 이러한 트래픽 중 실제로 DDos 공격과 같은 엄청난 트래픽에 대한 성격을 파악하여 차단할 수도 있어야 유저들에게 안정적인 서비스를 제공할 수 있다.
Scrubbers 라는 server를 중간에 끼워넣어 각각의 트래픽들을 관리할 수도 있다.
- Reliability
CDN 이라는 엄청난 크기의 규모인만큼 결함이 없다는 것은 말이 되지 않는다.
하지만 SLA(Service Level Agreement) 서비스 수준 계약에서는 고가용성과 탄력성을 99.9%까지 보장하는 경우가 많다.
일반적으로 제공하는 CDN service는 Fail-Over, Disaster Recovery를 지원한다.
다운된 서버에도 서비스가 가능케하는 것이다.
서버의 헬스체크를 해서 다운된 서버로 가는 트래픽 유실을 막고 정상 작동되는 서버로 보낸다는 따위의 일이다.
- Responsiveness
Global-sized 네트워크에서는 빠른 반응성을 유지하기 위해 CDN의 역할이 크다.
즉, 작은 Configuration 수정이 있다하더라도 모든 Cache Server에 있는 파일에 Purge가 필요하며 CDN 사이즈가 크면 클수록 파급력이 더욱 커진다.
즉, Origin에서의 조그마한 수정사항이라도 발생한다면 실제로 유저가 접근하는 CDN에 빠르게 적용되어 무중단 서비스가 제공되는 것이 중요하다.
알아야 하는 단어
RTT(Round-Trip Time)
물리적거리, 중간 노드의 개수, 트래픽의 양, 전송 매체 등에 의해 좌우되며
실제로 Client의 Request 부터 Server의 Response가 다시 Client에 도착할 때 까지의 총 시간을 말함.
참고 링크
https://www.imperva.com/learn/performance/cdn-architecture/
'DevOps' 카테고리의 다른 글
SVN_Command (0) | 2023.01.21 |
---|---|
CDN, Content Delivery Network - 2 (0) | 2022.11.27 |
Source tree, 소스트리로 형상관리 쉽게 하기 (0) | 2022.11.12 |
PlantUML, UML 직접 그리지 말고 코드로 그리자 (0) | 2022.11.12 |
GSLB, 트래픽이 높을 때 로드밸런싱하기 (0) | 2022.11.12 |