CDN에서는 갑작스러운 부하 증가 시에도 인프라가 높은 성능과 복원력을 유지할 수 있도록 새롭고 혁신적인 방법을 지속적으로 개발하고 있습니다. 이것은 종종 우리가 사용하는 기존 기술에 대한 최적화를 탐구하는 것을 포함합니다. 더욱이 새로운 접근 방식을 검증하는 것은 새로운 변경 사항이 프로덕션 환경에 긍정적인 영향을 미칠 것으로 예상되므로 이 프로세스의 중요한 부분입니다.
컨텐츠가 대중화되면 데이터 센터/POP(Point of Presence)의 여러 서버에 복제됩니다. 이를 통해 로드 밸런싱을 개선하고 이러한 급증에 대처하여 서버 과부하 위험을 줄일 수 있습니다. 이 복제 메커니즘을 ‘핫 파일링’이라고 하고, 인기 있는 컨텐츠를 ‘핫 파일’이라고 합니다. 당사는 최근 트래픽 급증에 대한 탄력성을 높여 기존의 핫 파일링을 개선하는 적응형 로드 밸런싱(ALB) 최적화를 개발했습니다. 특히 정적 임계값에 의존하지 않고 서버 로드를 측정하여 필요한 복제 양을 동적으로 결정합니다. 이를 통해 POP의 모든 서버에 로드가 보다 균등하게 분산되어 모든 POP 및 CDN의 전체 요청 처리 용량이 증가합니다. 적응 로드 밸런싱 시스템 평가에 대한 이전 기사에서는 이러한 최적화의 메커니즘에 대해 자세히 설명합니다.
이 게시물에서는 이러한 최적화가 생산에 미치는 긍정적인 영향을 검증합니다. 먼저 영향을 측정하는 데 사용한 메트릭을 정의합니다. 다음으로, 예제를 통해 이러한 각 메트릭에 대한 최적화의 영향을 보여 줍니다. 마지막으로, 최적화가 배포된 모든 POP에 걸쳐 최적화가 미치는 총 영향을 보여 줍니다. 요약하자면, 전체 시간 서버에서 사전 정의된 임계값을 초과하는 과도한 부하가 70% 이상 감소한 반면, 거의 모든 POP는 이 지표에서 개선된 것으로 나타났습니다. 이 최적화는 이제 모든 고객 트래픽에 대해 전 세계적으로 활성화됩니다.
메트릭 정의
이 새로운 최적화가 생산에 미치는 영향을 평가하기 위해 다음 세 가지 지표를 정의하고 모니터링했습니다.
- 서버 왜곡도: POP의 모든 서버에 대한 중간 부하에 대한 서버의 부하의 비율입니다.
- 핫 파일 수: 지정된 시간에 핫 파일링 메커니즘에 의해 복제된 파일 수입니다. 핫 필링은 로드 분산의 기본 메커니즘이므로 적응 로드 밸런싱은 핫 파일의 수를 늘릴 것으로 예상됩니다.
- 서버가 대상 왜곡도에 소비하는 시간: 이 지표는 적응 로드 밸런싱의 효과를 평가합니다. 목표 왜곡도 임계값을 특정 값으로 설정할 때 대부분의 서버의 왜곡도가 일반적으로 해당 값보다 작음을 확인해야 합니다.
모니터링되는 메트릭에 대한 최적화의 영향
목표 왜곡도 달성
아래 그림은 POP에서 서버의 부하 분산 스냅샷을 두 개 보여줍니다. 왼쪽(적응 로드 밸런싱 제외)에는 왜곡도 대상(빨간색 상자)을 초과하는 다수의 서버가 POP 중앙값의 1.8배 이상으로 로드됩니다. 오른쪽(적응 로드 밸런싱 사용)에서는 중앙값의 1.8배가 넘는 부하가 발생하는 서버가 없는 서버 간의 균형이 더 잘 맞습니다.
적응 로드 밸런싱을 통한 부하 분산 변경. 과부하가 걸리는 서버의 수가 줄어드는 것을 알 수 있습니다.
핫 파일 수 및 로드 분산
다음으로 핫 파일 수가 어떻게 영향을 받는지, 각 서버의 로드에 대한 변경 사항을 살펴보았습니다. 아래 플롯은 POP에서 ALB가 활성화되었을 때 핫 파일 수가 증가했음을 보여줍니다. 이 메커니즘은 로드가 높은 서버에서 파일이 오프로드될 가능성을 선택적으로 높이기 때문에 예상된 동작입니다.
기본적으로 핫 파일링 및 ALB는 특정 파일을 서비스하는 서버 수를 늘려 개별 서버의 부하를 줄입니다. 이렇게 하면 각 서버의 스토리지 부하가 증가합니다. 그러나 특정 시간에 복제하도록 선택된 추가 파일은 오프로드가 필요한 이상값 서버에서만 선택되기 때문에 POP에서 제공되는 총 파일에 비해 상대적으로 낮습니다. 대부분의 경우 사용된 추가 캐시 공간은 총 디스크 공간에 비해 매우 작습니다. 따라서 트레이드 오프는 가치가 있지만 식별하고 인식하는 것이 중요합니다. 구현에는 캐시 사용량이 이 최적화에 의해 부정적인 영향을 받지 않는지 확인하기 위한 상태 검사가 포함되었습니다.
핫 파일 수입니다. 이상값 서버가 오프로드되기 때문에 Adaptive Load Balancing이 켜지면(빨간색 마커) 숫자가 증가합니다.
두 번째 도표는 해당 POP에서 동일한 기간 동안 각 서버가 전달한 트래픽의 양을 보여줍니다. 적응 로드 밸런싱이 활성화되면(빨간색 점선) 서버 간의 로드 밸런싱이 더욱 균형을 이루는 것을 관찰했습니다. 이로 인해 서버가 들어오는 트래픽에 보다 탄력적으로 대응하고 서버 과부하 위험을 줄일 수 있었습니다.
2004년 5월 2일부터 5월 5일까지 POP의 부하 분산(Mbps) 적응 로드 밸런싱을 켜면 더 많은 서버가 중앙값에 더 가까운 트래픽을 전송하여 분산이 더욱 원활해집니다. 이렇게 하면 서버에 새로운 트래픽이 과부하될 위험을 줄일 수 있습니다.
목표 왜곡도를 초과하는 데 소요된 시간
여기서 우리는 POP가 1.6x의 목표 왜곡도를 유지하도록 설정된 실험을 고려했습니다. 아래 그림에서 주황색 선은 실험 기간 동안 “서버 왜곡”의 분포를 보여줍니다. 이 분포를 기준 기간의 각 분포(적응 로드 밸런싱 없음)인 파란색 선과 비교하여 중간값 쪽으로 로드가 이동하는 것을 확인했습니다. 특히, 분포의 “꼬리”도 크게 감소하여 99번째 백분위수가 목표 왜곡도보다 2.12에서 1.52로 떨어졌습니다.
적응 로드 밸런싱은 최대 서버 로드를 줄이고 서버 로드를 중앙값에 가깝게 만듭니다.
배포에서 이러한 “꼬리”를 줄이는 것이 최적화의 주요 목표입니다. 그 이유는 해당 꼬리의 서버, 즉 부하가 가장 높은 서버는 새로운 트래픽 급증으로 인해 과부하가 발생할 위험이 높기 때문입니다. 이러한 감소를 더욱 수치화하기 위해 Adaptive Load Balancing을 사용하거나 사용하지 않은 실험 기간 동안 서버가 타겟을 통해 트래픽을 전송한 시간(분)도 측정했습니다.
적응 로드 밸런싱은 서버가 대상 임계값에 부하를 전달하는 데 소비하는 시간을 줄여줍니다.
이 경우, 이 POP에서 목표 왜곡도에 소요되는 시간이 88% 감소하는 것을 관찰했습니다. 이는 적응 로드 밸런싱이 원하는 값에 대한 부하 분포의 왜곡도를 유지할 수 있다는 좋은 지표입니다.
글로벌 배포 결과
선택한 POP 몇 개에서 최적화를 테스트하고 측정 지표에서 좋은 결과를 확인한 후, 모든 POP에 시스템을 배포하여 시간에 따른 집계된 영향을 수치화했습니다. 이전과 마찬가지로 POP에서 지정된 목표 왜곡도(POP에서 서버 로드 중간값을 1.8배로 설정)를 초과하여 트래픽을 전송하는 데 소요되는 총 시간(분)을 측정했습니다. 다음 도표는 75개의 팝에서 해당 임계값을 초과하는 데 소요된 두 분포의 분포를 보여 줍니다. 파란색 선은 기준 데이터의 4일에 해당하고 주황색 선은 적응 로드 밸런싱 데이터의 4일에 해당합니다. 분포가 전체적으로 왼쪽으로 이동하면 적응형 로드 밸런싱을 실행하는 POP의 서버가 임계값보다 적은 시간을 소비했음을 알 수 있습니다.
모든 PoP에 대해 지정된 임계값(1.8 * 중간값)보다 높은 로드를 전달하는 서버에서 소요한 시간을 집계합니다. 적응 로드 밸런싱을 사용하면 분포가 왼쪽으로 이동되어 메커니즘이 서버 부하를 중앙값에서 목표 편차 아래로 더 오랜 시간 동안 유지한다는 것을 알 수 있습니다.
개별 POP에 미치는 영향을 자세히 파악하기 위해 각 POP에 대한 이 메트릭의 백분율 변화도 기록했습니다. 그 결과 POP의 절반이 대상 왜곡도를 초과하는 총 서버 시간이 70-95% 감소했으며, 거의 모든 POP가 임계값을 초과하는 데 소요되는 시간이 감소한 것으로 나타났습니다.
Akamai는 CDN의 성능과 안정성을 지속적으로 개선하기 위한 지속적인 노력의 일환으로 최근 POP 내에서 트래픽의 로드 밸런싱 방식을 최적화하고 평가했습니다. 이 최적화는 나머지 POP와 비교하여 지정된 임계값을 초과하여 로드된 서버를 식별하고 이러한 서버의 부하를 분산하여 새로운 트래픽 급증 시 성능에 미치는 영향을 완화합니다. 생산 결과는 서버 부하 분산을 원하는 편중도 내에서 유지하는 데 있어 최적화의 효율성을 보여주는 이전 시뮬레이션 결과와 일관된 상당한 개선 사항을 보여줍니다. 그 결과, 모든 고객 트래픽에 대해 전 세계적으로 이러한 최적화를 구현했습니다.
이 메커니즘의 구현 및 배포에 협력해 주신 Angela Chen에게 특별히 감사드립니다. 또한 데이터 수집과 시각화를 지원해 주신 Scott Yeager, Derek Shiell, Marcel Flores, Anant Shah 및 Reed Morrison에게 감사드립니다.