Search
Duplicate

[기술포스트]CDN과 로드 밸런서를 활용한 부하 분산

태그
CDN
Load Balancer
1 more property

기존 웹서비스 아키텍처

기존 웹사이트의 문제점

1.
서버(web, app server) 부하로 인한 장애
네트워크 트래픽이 특정 서버로 집중되어 트래픽 분산이 필요
2. 느린 페이지 로딩 속도로 인한 고객 이탈
첫 페이지 내에 로딩해야 하는 고용량 이미지 파일이 많아 웹 페이지 로딩속도가 느림
3. 대용량 파일 다운로드, 스트리밍시 느린 속도로 인한 사용자의 불만
동시에 많은 사용자가 동일한 컨텐츠에 접근하여 서버 부하로 인한 속도 저하

CDN과 Load Balancer를 활용한 부하 분산

로드 밸런서 도입

Web Server 3대, App Server 2대로 인입되는 트래픽을 로드밸런서를 도입하게 되면, 사전에 설정한 로드밸런서가 분기하는 방식(Round Robin, Least Connection, Source IP Hash)에 따라 분산 처리가 가능합니다.
즉, 로드밸런서에 연결된 서버 중 특정 서버에 장애 발생 시, 자동으로 다른 서버로 부하를 분산하도록 하여 높은 안정성을 보장하게 됩니다.

로드 밸런서의 분산 방식

로드 밸런서의 중요 기능

1) SSL 인증 설정
CA에서 발급받은 SSL 인증서를 Certificate Manager에 등록 후 적용 가능
2) LoadBalancer 모니터링
Concurrent Connection, Connection Per Second, Traffic 등의 모니터링 항목 제공
3) 세션 관리
Connection idle timeout, HTTP Keep-alive 설정 가능
4) 다양한 서버 부하 분산 방식 제공
Round Robin, Least Connection, Source IP Hash 방식으로 분산 기능 제공

CDN 도입을 통한 부하 분산

CDN 도입의 이유

CDN도입 전에는 사용자가 브라우저를 통해 Http(https) 프로토콜로, 사용자의 모든 요청 중 Static Contents에 대해 Web Server를 통해 결과를 리턴하게 됩니다.
하지만 사용자의 요청이 증가하고 트래픽이 갑자기 증가하거나 Contents 양이 증가하는 경우 Web Server의 부하가 집중되어 서비스 안정성이 저해되고 장애가 발생할 가능성이 있습니다. 이때 CDN 도입을 통해 Web Server의 부하를 줄일 수 있습니다.

CDN이란?

콘텐츠의 빠르고 효율적인 전송을 돕는 ‘콘텐츠 전송 네트워크’를 뜻합니다. 분산되어 있는 캐시 서버에 콘텐츠를 옮겨 두었다가 사용자의 요청이 있을 때 사용자에게서 가장 가까운 서버에서 해당 콘텐츠를 전달하는 용도로 사용합니다.
Static Contents에 대해 Web Server가 아닌 CDN을 통해 사용자의 위치와 가까운 곳에 있는 CDN Cache Server에서 데이터를 리턴합니다. 예를 들면 서울에 있는 사용자는 서울에 있는 Edge 서버에서, 부산 사용자는 부산 Edge서버에서 이용하여 사용자가 분산된 서버를 통해 이용하는 효과가 있습니다.
Web site 운영자의 입장에서는 Web Server에만 집중되던 Static Contents에 대한 부하를 분산하고 안정적인 시스템을 유지할 수 있습니다. 또한 Web Site 방문자의 입장에서는 Static Contents에 대한 다운로드에 대해 가까운 Edge Server를 통해 서비스되므로 보다 빠른 속도로 이용이 가능합니다.
예를 들어, 첫 번째 사용자의 경우, 아직 Caching 된 내역이 Edge Server에 없어 Origin인 Object Storage를 통하게 되어 총 100ms의 속도가 걸렸다면(Cache Miss), 두 번째 사용자부터는 CDN에 Cache된 내역을 통해 Contents 이용이 가능하여 90ms를 절감한 10ms의 속도로 서비스 이용이 가능합니다.(Cache hit)
참고자료 :