[AWS] Global Infrastructure

Gaeun·2023년 5월 14일
0

참고 자료

https://www.udemy.com/course/best-aws-certified-solutions-architect-associate/

1. Amazon CloudFront

  • Content Delivery Network (CDN) 콘텐츠 전송 네트워크
  • 콘텐츠를 서로 다른 엣지 로케이션에 미리 캐싱하여 읽기 성능을 향상시키는 것
  • 사용자 경험 향상
  • 전세계에 총 216개의 엣지 로케이션 (Point of Presence)를 보유하고 있음
  • DDos 공격에서 보호받을 수 있으며(콘텐츠가 전세계적으로 분산되어 있기 때문), Shield, AWS 웹 애플리케이션 방화벽과 통합

🧐 CloudFront - Origins

S3 bucket

  • 파일을 분산하고 엣지에 캐싱하는데 사용됨
  • Origin Access Control (OAC)를 통한 강화된 보안
  • OAC는 Origin Access Identity(OAI)를 대체함
  • CloudFront를 통해 버킷에 데이터를 보내는 방법 (Ingress)으로 사용될 수 있다.

Custom Origin (HTTP)

  • 애플리케이션 로드 밸런서
  • EC2 인스턴스
  • S3 웹사이트 (먼저 버킷을 활성화하여 정적 웹사이트로 설정해야 함)
  • 원하는 모든 백엔드 HTTP

CloudFront at a high level

  1. 전세계에 퍼져있는 CloudFront의 엣지가 있고, 여기에 연결할 원본 (S3 혹은 HTTP 서버)가 있음.
  2. 클라이언트가 연결해서 엣지 로케이션에 HTTP 요청을 보내면 엣지는 이것이 캐싱되어 있는지 확인함
  3. 캐싱되어 있지 않는 경우에는 원본으로 가서 요청 결과를 가져오고, 이를 로컬 캐시에 저장해서 다른 클라이언트가 같은 콘텐츠를 같은 엣지에 요청할 시 사용함.

CloudFront - S3 as an Origin

  1. AWS 클라우드의 어떤 리전에 있는 S3 버킷이 원본. 그리고 전세계의 엣지 로케이션이 있음. 여기서는 LA를 예로 들 것임.
  2. LA 엣지에 접근하는 사용자는 LA 엣지가 직접 콘텐츠를 제공하게 됨. 하지만 먼저 내부 AWS 망을 통해 S3 버킷 원본을 받아옴
  3. 이 버킷은 OAS로 보호받으며, S3 버킷 정책에 의해서만 수정할 수 있음

CloudFront와 엣지 로케이션을 이용해 특정 리전에 속한 S3 버킷을 전세계의 엣지 로케이션으로 분산시킬 수 있음

CloudFront vs S3 Cross Region Replication

CloudFront:

  • Global Edge network
  • 파일은 TTL 동안 캐싱된다. (일반적으로 하루)
  • 전세계적으로 사용 가능한 정적 콘텐츠에 적합함

S3 Cross Region Replication:

  • 각 복제를 원하는 리전마다 설정해야 함 - 전세계를 대상으로 한 것이 아님
  • 파일은 거의 실시간으로 갱신됨
  • 읽기 전용
  • 일부 리전을 대상으로 동적 콘텐츠를 낮은 지연 시간으로 제공할 때 적합함

CloudFront는 전세계에 걸친 콘텐츠 전송 네트워크이며, S3 교차 리전 복제는 다른 리전으로 버킷을 복제하는 것.

CloudFront – ALB or EC2 as an origin

ALB

  • ALB는 퍼블릭으로 설정되어야 함.
  • 백엔드의 EC2 인스턴스는 프라이빗 설정을 해도 상관 없음. 로드 밸런서와 인스턴스 간에 가상 프라이빗 네트워크가 설정되어 있기 때문.
  • 단순히 EC2 인스턴스의 보안 그룹이 로드 밸런서를 허용하게 설정하면 됨.
  • 사용자는 엣지 로케이션으로 접근하기 때문에 연결이 맺어질 수 있도록 애플리케이션의 공용 IP가 로드 밸런서의 보안 그룹 정책에 허용이 되어 있어야 함

EC2

  • 사용자들이 CloudFront를 통해 접근하길 원함. 사용자들은 CloudFront 엣지 로케이션에 접근할 것이고, 애플리케이션이 EC2 인스턴스에 요청을 보낼 것임. 따라서 이 둘은 모두 퍼블릭으로 설정되어야 함.
  • 그렇지 않으면 CloudFront에는 가상 프라이빗 클라이언트가 없기 때문에 EC2 인스턴스에 접근할 수 없게 됨.
  • 엣지 로케이션의 모든 공용 IP가 EC2에 접근할 수 있도록 하는 보안그룹 역시 설정해주어야 함.
  • CloudFront의 IP 목록: http://d7uri8nf7uskq.cloudfront.net/tools/list-cloudfront-ips

🌏 CloudFront Geo Restriction

  • 사용자의 지역에 따라 배포 객체 접근을 제한할 수 있음
    • Allowlist: 사용자가 승인된 국가 목록에 있는 경우에만 콘텐츠에 액세스할 수 있도록 허용
    • Blocklist: 사용자가 차단된 국가 목록에 있는 경우 콘텐츠에 액세스하지 못하도록 차단
  • "국가"는 서드 파티 Geo-IP DB를 사용하여 결정됨
  • 사용 사례: 저작권 법률을 준수하여 콘텐츠에 대한 액세스를 제어함

💸 Pricing

https://aws.amazon.com/ko/cloudfront/pricing/

  • CloudFront 엣지 로케이션은 전세계적으로 분포되어 있음
  • 엣지 위치별 데이터 전송 비용은 다양함.

    (왼쪽에서 오른쪽으로 갈 수록 비용이 비싸짐)

Price Classes

https://aws.amazon.com/ko/cloudfront/pricing/

  • 비용 절감을 위해 CloudFront를 분산할 엣지 로케이션의 수를 줄일 수 있음
  • 세 가지의 가격 등급이 있음
    1. 요금 계층 전체: 모든 지역 - 최상의 성능
    2. 요금 계층 200: 대부분의 지역, 가장 비싼 리전은 제외
    3. 요금 계층 100: 가장 저렴한 리전만 사용 가능 (북미, 유럽 엣지 로케이션 제공)

🤓 Cache Invalidations

  • 백엔드 오리진을 업데이트할 때, CloudFront는 이 업데이트 사항을 알지 못하며, TTL이 만료된 후에서야 백엔드 오리진으로부터 업데이트된 콘텐츠를 받게 됨
  • CloudFront Invalidation를 통해 전체 캐시 또는 일부 캐시를 강제로 새로고침하여 TTL을 모두 제거할 수 있음
  • 모든 파일 (*) 또는 특정 경로 (/images/*)를 무효화할 수 있음

2. AWS Global Accelerator

전세계 사용자가 직접 액세스하려는 글로벌 애플리케이션을 배포했다. 애플리케이션은 한 리전에 배치되어 있지만 사용자들은 전세계에 걸쳐있다. 사용자들이 애플리케이션에 접근할 때는 공용 인터넷을 통하게 되는데 라우터를 거치는 동안의 수많은 홉(hops)로 인해 상당한 지연이 발생할 수 있다. 따라서 지연 시간을 최소화하기 위해 AWS 네트워크를 통하는 것이 좋은데, 이를 위해 Global Accelerator를 사용할 수 있다.

🔎 Unicast IP vs Anycast IP

  • 유니캐스트 IP: 하나의 서버가 하나의 IP 주소를 보유
  • 애니캐스트 IP 모든 서버가 동일한 IP 주소를 가지며 클라이언트는 가장 가까운 서버로 라우팅된다.

🛣️ AWS Global Accelerator

  1. 애플리케이션을 라우팅하기 위해 AWS 내부 글로벌 네트워크를 활용
  2. 애플리케이션을 위해 2개의 애니캐스트 IP가 생성됨
  3. 애니캐스트 IP는 사용자와 가장 가까운 엣지 로케이션으로 트래픽을 직접 전송함
  4. 엣지 로케이션은 훨씬 안정적이고 지연 시간이 적은 사설 AWS 네트워크를 거쳐 애플리케이션 로드 밸런서로 트래픽을 전송함
  • 탄력적 IP, EC2 인스턴스, ALB, NLB와 함께 작동하며 퍼플릭일 수도, 프라이빗일 수도 있음
  • 안정적인 성능
    • 가장 짧은 지연 시간과 신속한 리전 장애 극복을 위한 지능형 라우팅
    • 클라이언트 캐시와는 문제가 없음 (IP가 변경되지 않기 때문)
    • 내부 AWS 네트워크
  • Health Checks
    • Global Accelerator가 애플리케이션에 대해 상태 확인을 실행
    • 애플리케이션을 글로벌하게 만들어 줌. (상태 확인을 실패하면 자동화된 장애 조치가 1분 안에 정상 엔드포인트로 실행됨_
    • 재해 복구에 탁월함
  • 보안
    • 단 2개의 외부 IP만 화이트리스트에 등록하면 됨
    • AWS Shield를 통한 DDos 보호 기능이 있음

❕ AWS Global Accelerator vs CloudFront

공통점

  • Global Accelerator와 CloudFront는 둘 다 글로벌 네트워크를 사용하고 AWS가 생성한 전세계의 엣지 로케이션을 사용한다.
  • 둘 다 AWS Shield와 통합하여 DDos 보호를 제공한다.

CloudFront

  • 캐시 가능한 콘텐츠(이미지 및 동영상 등)의 성능을 개선함
  • API 가속 및 동적 사이트 전달과 같은 동적 콘텐츠에도 적용됨
  • 콘텐츠는 엣지에서 제공됨

Global Accelerator

  • TCP 또는 UDP를 통해 다양한 애플리케이션의 성능을 개선함
  • 패킷은 엣지 로케이션으로부터 하나 이상의 AWS 리전에서 실행되는 애플리케이션으로 프록시됨. 이 경우 모든 요청이 애플리케이션 쪽으로 전달되며 캐싱은 불가능함.
  • UDP 기반의 게임, MQTT를 사용하는 IoT, 음성 통화 등과 같은 HTTP가 아닌 사용 사례에 적합
  • 글로벌하게 고정 IP 주소가 필요한 HTTP 사용 사례에 적합
  • 결정적이고 신속한 리전 장애 조치가 필요한 HTTP 사용 사례에 적합
profile
🌱 새싹 개발자의 고군분투 코딩 일기

0개의 댓글