Overview
2022.11.11 - [Networking, Security, Protocols] - CDN이란?
이전에 CDN에서 대해선 자세히 공부한 내용이 있다.
AWS Cloudfront 설정방법과 요소에 대해 공부해보려고 한다.
AWS Cloudfront(CDN)란?
Amazon CloudFront는 뛰어난 성능, 보안 및 개발자 편의를 위해 구축된 콘텐츠 전송 네트워크(CDN) 서비스이다.
CloudFront는 정적 및 동적 웹 페이지, 이미지, 비디오, API와 같은 웹 콘텐츠를 전 세계 사용자에게 빠르게 제공하도록 설계되었다. 엣지 로케이션 네트워크 전체에 콘텐츠를 배포함으로써 지연 시간을 줄이고 성능을 개선하며 웹 애플리케이션의 사용자 경험을 향상시킨다.
AWS CloudFront의 주요 기능 및 이점
글로벌 배포(Global distribution)
CloudFront는 여러 지리적 지역에 분산된 엣지 로케이션 네트워크를 사용하여 콘텐츠를 사용자에게 더 가까이 제공할 수 있으므로 지연 시간이 줄어들고 로드 시간이 빨라진다.
다른 AWS 서비스와의 통합(Integration with other AWS services)
CloudFront는 Amazon S3, Amazon EC2, Elastic Load Balancing 및 AWS Lambda@Edge와 같은 다른 AWS 서비스와 쉽게 통합될 수 있으므로 AWS 플랫폼에서 포괄적이고 확장 가능한 솔루션을 구축할 수 있다.
동적 콘텐츠 가속(Dynamic content acceleration)
CloudFront는 연결 유지, TCP 최적화 및 콘텐츠 압축과 같은 기술을 활용하여 정적 콘텐츠와 동적 콘텐츠의 제공을 모두 최적화할 수 있다.
캐싱 및 캐시 제어(Caching and cache control)
CloudFront는 엣지 로케이션에서 콘텐츠를 캐싱하여 오리진 서버의 부하를 줄이고 사용자의 지연 시간을 줄인다. 또한 캐시 동작 및 캐시 제어 헤더를 구성하여 다양한 콘텐츠 유형에 대한 캐싱 정책을 미세 조정할 수 있다.
보안 기능(Security features)
CloudFront는 SSL/TLS 암호화, DDoS 보호를 위한 AWS Shield, AWS WAF(Web Application Firewall) 통합, 민감한 데이터를 위한 필드 레벨 암호화 등 다양한 보안 기능을 제공한다.
사용자 지정(Customization)
CloudFront에서는 Lambda@Edge(에지 위치에서 서버리스 기능 실행), 사용자 지정 헤더, 서명된 URL 및 쿠키, 사용자 지정 오류 페이지와 같은 기능을 사용하여 CDN의 동작을 사용자 지정할 수 있다.
비용 효율적(Cost-effective)
CloudFront는 선불 비용이나 장기 약정 없이 종량제 요금 모델을 사용한다. 사용한 데이터 전송 및 요청에 대해서만 비용을 지불하면 되며 대용량 워크로드에 대해 예약된 용량 요금을 활용할 수도 있다.
모니터링 및 분석(Monitoring and analytics)
CloudFront는 콘텐츠 전송의 성능과 사용량을 모니터링하고 분석하는 데 도움이 되는 실시간 지표, 로깅 및 보고 기능을 제공한다.
AWS Cloudfront Continuous deployment
Cloudfront의 지속적 배포를 사용하면, Staging 서버에 먼저 테스트하여 변경 사항을 Primary 서버에 안전하게 배포할 수 있다. 그래서 새로운 CDN 구성으로 일부 트래픽을 보내고 예상한 대로 잘 작동하는지 확인할 수 있다.
Cloudfront 2가지 유형의 트래픽 구성
헤더 기반(Header-based)
스테이징 베포로의 리디렉션은 클라이언트 요청에서 헤더를 감지하여 수행할 수 있다. 그러나 이를 위해서는 클라이언트가 CloudFront에 대한 HTTP 요청의 일부로 미리 정의된 사용자 지정 헤더를 포함해야 한다. 해당 방식은 소규모 테스트를 수행하는데 적합하다.
가중치 기반(Weight-based)
일반적으로 카나리아 배포(Canary deployment) 라고 하는 가중치 기반을 사용하면 프로덕션 트래픽의 백분율을 정의하여 스테이징 배포로 푸시할 수 있다. 백분율 값은 작게 시작하여 시간이 지남에 따라 증가할 수 있으므로 애플리케이션이나 클라이언트를 변경할 필요 없이 대규모 테스트를 원할하게 수행할 수 있다.
Canary 및 Blue-Green 배포란?
Canary 및 Blue-Green 배포는 애플리케이션의 새 버전 도입 위험을 최소화하기 위해 소프트웨어 개발에서 널리 사용되는 두 가지 전략이다. 이러한 전략은 업데이트를 점진적으로 롤아웃하거나 새로운 변경 사항을 완전히 구현하기 전에 테스트할 수 있는 병렬 환경을 갖추는 데 중점을 둔다.
카나리아(Canary) 배포
카나리아 배포는 새로운 기능, 업데이트 또는 버그 수정이 전체 사용자 기반에 배포되기 전에 소수의 사용자에게 점진적으로 출시되는 전략입니다. 이 접근 방식의 목적은 실제 환경에서 새 버전을 테스트하고 모니터링하여 모든 사람이 사용할 수 있도록 하기 전에 잠재적인 문제를 파악하고 사용자 반응을 측정하는 것이다.
카나리아 배포에서는 애플리케이션의 새 버전이 현재 버전과 함께 배포됩니다. 처음에는 사용자 트래픽의 일부가 새 버전으로 전달되고 대부분의 트래픽은 기존 버전에서 계속 제공된다.
개발자는 새 버전의 성능, 안정성 및 사용자 피드백을 모니터링하여 필요한 조정을 한다. 새 버전이 성공적이라고 판단되면 롤아웃이 완료될 때까지 나머지 사용자 트래픽은 점진적으로 새 버전으로 이동된다. 문제가 발생하면 프로세스가 중단되거나 취소되어 전체 사용자 기반에 미치는 영향을 제한할 수 있다.
아래의 이미지는 애플리케이션이 버전 V1.0이고 새 릴리스 또는 배포가 V2.0을 배포한다고 가정한다. 이 배포는 4단계로 이루어진다. 1단계에서 릴리스는 클러스터에 있는 노드의 25%에서 발생하며 사용자 집합에 의해 테스트된다. 그런 다음 2단계에서는 노드의 50%가 V2.0을, 3단계에서는 75%가, 마지막으로 4단계에서는 노드의 100%가 새 버전을 받게 된다.
장점
- 점진적 롤아웃
- 카나리아 배포를 통해 새로운 기능을 제어되고 점진적으로 릴리스할 수 있으므로 전체 사용자 기반에 영향을 주지 않고 문제를 식별하고 수정하는 데 도움이 된다.
- 실제 테스트
- 새 버전은 소수의 실제 사용자에게 노출되어 프로덕션 환경에서 응용 프로그램이 작동하는 방식에 대에 테스트 한다.
- 낮은 위험
- 소수의 사용자만 새 버전에 노출되기 때문에 문제의 잠재적인 영향이 최소화된다.
단점
- 복잡성
- 카나리아 배포는 사용자 트래픽의 일부를 새 버전으로 보내고 해당 성능을 모니터링하기 위한 메커니즘이 필요하기 때문에 다른 전략보다 설정 및 관리가 더 복잡하다.
- 긴 배포 시간
- 카나리아 배포의 점진적 특성은 특히 롤아웃 프로세스 중에 문제가 발견되는 경우 애플리케이션의 새 버전을 완전히 릴리스하는 데 더 오래 걸린다.
- 전체 성능 영향
- 최종 사용자의 노드 수를 제한하면 전체 성능에 영향을 미칠 수 있다.
블루-그린(Blue-Green) 배포
블루-그린 배포는 블루와 그린으로 알려진 두 개의 프로덕션 환경이 병렬로 실행되는 전략이다. 한 환경은 활성 상태이고 사용자 트래픽에 서비스를 제공하는 반면 다른 환경은 유휴 상태이다. 애플리케이션의 새 버전을 배포할 준비가 되면 유휴 환경에 배포된다.
배포 후 새 버전이 유휴 환경에서 올바르게 작동하는지 확인하기 위해 테스트가 수행된다. 새 버전이 확인되면 트래픽이 활성(Blue) 환경에서 유휴(Green) 환경으로 점진적으로 전환된다.
이 프로세스는 로드 밸런서 또는 기타 트래픽 관리 도구를 사용하여 수행할 수 있다. 트래픽 이동 중 또는 이후에 문제가 감지되는 경우 트래픽을 원래 환경으로 다시 전환하기만 하면 이전 버전으로 쉽게 되돌릴 수 있다.
아래는 블루-그린 배포가 무엇인지에 대한 간단한 설명이다. 블루와 그린은 두 개의 동일한 프로덕션 환경을 의미한다.
즉, 우리는 두 개의 동일한 프로덕션 환경이 필요하다. 하나는 Blue 또는 스테이징 환경이고 다른 하나는 Green 또는 Production 환경이며 그 중 하나는 한 번에 최종 사용자에게 서비스를 제공한다.
장점
- 다운타임 최소화
- 블루-그린 배포는 애플리케이션 버전 간에 원활한 전환을 가능하게 하여 배포 프로세스 동안 다운타임을 줄이거나 제거한다.
- 손쉬운 롤백
- 새 버전에서 문제가 발견되면 원래 환경이 그대로 유지되므로 이전 버전으로 간단하고 빠르게 되돌릴 수 있다.
- 예측 가능한 환경
- Blue-Green 배포는 각 환경이 격리되고 전용이므로 새 애플리케이션 버전을 테스트하고 검증하기 위해 보다 예측 가능한 환경을 제공한다.
단점
- 리소스 집약적
- 두 개의 병렬 환경을 실행하면 배포 프로세스 중에 두 배의 인프라 용량이 필요하므로 리소스 집약적일 수 있다.
- 제한된 실제 노출
- Canary 배포와 달리 Blue-Green 배포는 트래픽이 새 버전으로 전환되기 전에 실제 사용자에게 실제 테스트를 제공하지 않는다. 이로 인해 새 버전이 활성화될 때 발견되지 않은 문제가 발생할 수 있다.
- 높은 비용
- Identical Two 프로덕션 환경이 있기 때문에 인프라 비용이 매우 많이 든다.
블루-그린 배포 과정
롤링(Rolling) 배포
롤링 배포는 카나리아 배포와 같다. 그러나 차이점은 롤링 배포에서 최신 버전을 단일/방어된 인스턴스 수로 업데이트한다는 것이다.
업데이트를 하나씩 프로세스로 릴리스합니다. 즉, 처음 두 인스턴스에서 배포가 발생하고 그 다음 두 인스턴스에서 점진적으로 그 반대의 경우가 발생한다. 따라서 릴리스의 각 배치에서 테스트가 수행된다.
Reference
AWS CDN 서비스
CDN 작업
Using CloudFront continuous deployment to safely test CDN configuration changes
Amazon CloudFront 지속적 배포를 사용하여 CDN 변경 사항을 안전하게 검증하기
Canary vs Blue-Green vs Rolling Deployment
what is Blud Green Deployment?
'AWS' 카테고리의 다른 글
AWS IRSA(IAM Roles for Service Accounts)란? (0) | 2023.05.28 |
---|---|
AWS VPC란? (0) | 2023.04.07 |
AWS Secrets Manager란?(OAuth, SSO) (0) | 2023.04.01 |
AWS CLI 정리 (0) | 2023.03.31 |
AWS IAM이란? (0) | 2023.03.30 |