CDN / LB

jinjoo-jung·2024년 5월 29일

CDN
물리적 거리의 한계를 극복하기 위해 소비자와 가까운 곳에 콘텐츠 서버를 두는 기술

  • 한국에 있는 사용자가 미국에 있는 서버에서 이미지를 다운로드 하는 경우, 아무리 인터넷이 빨라도 서버와 사용자 사이에는 굉장히 큰 물리적 거리가 있기 때문에 다운로드에 시간이 오래걸린다.
  • 이미지 CDN은 이미지에 특화된 CDN 기본적인 CDN 기능을 더불어, 이미지를 사용자에게 보내기 전에 특정 형태로 가공하여 전해주는 기능까지 있다. 예를 들어, 이미지 사이즈를 줄이거나, 특정 포맷으로 변경하는 등의 작업이 가능하다.

CDN의 역할

  • 전 세계의 분산된 서버 네트워크를 통해 컨텐츠를 효율적으로 전송한다.
  • CDN을 사용하면 사용자는 지리적으로 가까운 서버 또는 가장 빠르게 서비스를 제공할 수 있는 서버를 통해 컨텐츠를 다운로드 할 수 있으므로, 다운로드 시간이 단축되고 웹사이트나 애플리케이션의 성능이 향상된다.

정적캐싱과 동적캐싱

  • CDN에 캐싱되는 데이터는 언제 캐싱?

정적 캐싱

  • 캐싱할 것들을 미리 각 엣지에 보내는 것

동적 캐싱

  • 사용자가 요청을 보낼 때마다 보낼 컨텐츠가 엣지에 있는지 먼저 확인한 다음에 있으면 바로 사용자에게 보내고, 없으면 서버에 요청을 받아오는 것

LB(Load Balancing)

  • 네트워크나 애플리케이션에서 들어오는 트래픽을 여러 서버에 분산시키는 기술이다. 이를 통해 서버의 부하를 고르게 분산하고 , 성능을 최적화하며 , 서비스 가용성을 높이는 역할을 한다.
    로드 밸런싱을 수행하는 장비나 소프트웨어를 로드 밸런서라고 부른다.

로드 밸런싱의 기본 개념

로드 밸런싱의 기본 개념은 들어오는 트래픽이나 요청을 여러 서버에 분산하여 한 서버에 과도한 부하가 걸리지 않도록 하는 것입니다. 이렇게 하면 다음과 같은 장점을 얻을 수 있습니다:

성능 최적화: 각 서버가 담당하는 요청 수를 줄여서 처리 속도를 개선합니다.
서버 부하 감소: 과도한 트래픽이 특정 서버에 집중되는 것을 방지하여 서버 과부하를 예방합니다.
고가용성: 하나의 서버가 장애를 일으켜도 다른 서버가 요청을 처리할 수 있어 서비스가 계속 운영됩니다.

로드 밸런서의 역할

로드 밸런서는 클라이언트의 요청을 여러 서버에 분산시킴으로써 트래픽을 관리하고 서버 자원을 효율적으로 사용하도록 합니다. 주요 역할은 다음과 같습니다:

트래픽 분산: 들어오는 요청을 여러 서버로 고르게 분산합니다.
서버 상태 확인: 각 서버의 상태를 모니터링하고, 장애가 발생한 서버를 자동으로 제외합니다.
세션 지속성 관리: 특정 클라이언트의 요청을 동일한 서버로 유지하여 세션을 지속합니다.
로드 관리: 각 서버의 부하 상태를 모니터링하고, 부하가 적절하게 분산되도록 관리합니다.
로드 밸런싱의 유형
로드 밸런싱은 여러 가지 방법으로 구현될 수 있습니다. 주요 로드 밸런싱 유형은 다음과 같습니다:

  1. 라운드 로빈 (Round Robin)

각 서버에 차례대로 요청을 분배하는 방식입니다. 예를 들어, A, B, C 세 개의 서버가 있을 때, 첫 번째 요청은 서버 A로, 두 번째 요청은 서버 B로, 세 번째 요청은 서버 C로 보내는 식입니다. 간단하고 구현이 용이하지만, 각 서버의 부하를 고려하지 않습니다.

  1. 최소 연결 (Least Connections)

가장 적은 수의 연결을 처리하고 있는 서버로 요청을 분배하는 방식입니다. 서버의 현재 부하 상태를 고려하여 트래픽을 분산시키므로, 부하가 고르게 분산됩니다.

  1. IP 해시 (IP Hash)

클라이언트의 IP 주소를 해싱하여 특정 서버에 할당하는 방식입니다. 동일한 클라이언트는 항상 같은 서버에 연결되므로 세션 일관성을 유지할 수 있습니다.

  1. 가중치 기반 라운드 로빈 (Weighted Round Robin)

서버의 성능에 따라 가중치를 부여하고, 가중치에 따라 요청을 분배하는 방식입니다. 예를 들어, 성능이 높은 서버에 더 많은 요청을 할당할 수 있습니다.

  1. 최소 대기 시간 (Least Response Time)

응답 시간이 가장 짧은 서버로 요청을 분배합니다. 서버의 현재 부하와 응답 속도를 모두 고려하여 트래픽을 효율적으로 분산시킵니다.

로드 밸런싱의 구현 방식

로드 밸런싱은 여러 가지 방식으로 구현될 수 있습니다:

하드웨어 기반 로드 밸런서:

하드웨어 장비를 사용하여 트래픽을 분산시킵니다. 고성능이지만, 비용이 높습니다.
소프트웨어 기반 로드 밸런서:

소프트웨어 애플리케이션을 사용하여 트래픽을 분산합니다. 유연성과 확장성이 뛰어나고, 클라우드 환경에서 자주 사용됩니다.
예: Nginx, HAProxy
클라우드 기반 로드 밸런서:

클라우드 서비스 제공자가 관리하는 로드 밸런서로, 쉽게 설정하고 확장할 수 있습니다.
예: AWS Elastic Load Balancing (ELB), Azure Load Balancer, 알리바바 클라우드의 SLB

로드 밸런서의 주요 기능

부하 분산:

서버 간의 부하를 고르게 분산하여 특정 서버에 과도한 부하가 걸리지 않도록 합니다.
트래픽 관리:

들어오는 트래픽을 모니터링하고, 특정 트래픽 패턴에 따라 트래픽을 효율적으로 분산합니다.
장애 대응:

서버 장애 시 자동으로 해당 서버를 제외하고, 정상적인 서버로 트래픽을 라우팅합니다.
보안 강화:

로드 밸런서를 통해 HTTPS 암호화, DDoS 방어 등의 보안 기능을 추가할 수 있습니다.
성능 향상:

부하가 분산됨으로써 응답 시간을 줄이고, 사용자 경험을 개선합니다.
예시: 클라우드 환경에서의 로드 밸런서 설정
예를 들어, 알리바바 클라우드에서 로드 밸런서를 설정하는 과정을 살펴보겠습니다.

로드 밸런서 인스턴스 생성:

알리바바 클라우드 콘솔에 로그인하여 네트워크 & 보안 > 로드 밸런서 > 로드 밸런서 생성을 클릭합니다.
네트워크 유형과 리전을 선택하여 인스턴스를 생성합니다.
리스너 추가:

생성된 로드 밸런서 인스턴스를 선택하고, 리스너 탭에서 리스너 추가를 클릭합니다.
HTTP 또는 HTTPS와 같은 프로토콜을 선택하고, 포트를 설정합니다.
백엔드 서버 설정:

백엔드 서버 그룹을 구성하여 트래픽을 분산할 서버를 추가합니다.
서버 추가 후, 부하 분산 방식을 선택합니다(예: 라운드 로빈, 최소 연결).
모니터링 및 조정:

로드 밸런서의 성능을 모니터링하고, 필요한 경우 설정을 조정하여 트래픽을 효율적으로 관리합니다.

출처
https://velog.io/@ses2201/%EC%9D%B4%EB%AF%B8%EC%A7%80-CDN%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%B4-%EC%84%B1%EB%8A%A5%EC%B5%9C%EC%A0%81%ED%99%94%ED%95%98%EA%B8%B0-feat.-Properly-size-images

profile
개인 개발 공부, 정리용 🔗

0개의 댓글