CloudFront - ALB 최적화

은채의 성장통·2025년 2월 10일
0

AWS

목록 보기
57/79

AWS ALB와 CloudFront를 활용한 보안 및 비용 최적화 전략

AWS에서 퍼블릭 ALB(Application Load Balancer)를 활용해 프라이빗 서브넷에 있는 EC2 인스턴스를 안전하게 연결하고, CloudFront를 사용해 보안 및 성능을 최적화할 수 있다.

이 글에서는 ALB + EC2 연결, 지리적 제한(Geo Restriction), 비용 최적화(Price Class), 캐시 무효화(Cache Invalidation) 개념을 정리한다.


1. 프라이빗 EC2를 퍼블릭 ALB에 연결하는 방식

EC2 인스턴스는 프라이빗 서브넷에 위치하며, 외부에서 직접 접근할 수 없다.

이를 위해 퍼블릭 서브넷에 배포된 ALB를 활용하여 트래픽을 안전하게 전달할 수 있다.

(1) ALB와 EC2 연결 방식

1️⃣ ALB는 퍼블릭 서브넷에 위치

2️⃣ EC2는 프라이빗 서브넷에 위치

3️⃣ ALB의 보안 그룹(SG)에 EC2의 보안 그룹을 허용

4️⃣ 사용자는 CloudFront를 통해 ALB에 접근

5️⃣ CloudFront는 엣지 로케이션에서 캐싱하여 성능 최적화

(2) 보안 그룹(Security Group) 설정 예시

📌 ALB 보안 그룹 → 인터넷에서 CloudFront IP 대역만 허용

📌 EC2 보안 그룹 → ALB에서 오는 트래픽만 허용

# ALB 보안 그룹: CloudFront에서 오는 요청 허용
aws ec2 authorize-security-group-ingress \
  --group-id ALB_SG_ID \
  --protocol tcp --port 80 \
  --source-security-group CF_IP_RANGES

# EC2 보안 그룹: ALB에서 오는 요청만 허용
aws ec2 authorize-security-group-ingress \
  --group-id EC2_SG_ID \
  --protocol tcp --port 80 \
  --source-group ALB_SG_ID

프라이빗 EC2는 ALB를 통해서만 접근 가능

CloudFront → ALB → EC2 순서로 보안 유지


2. 지리적 제한(Geo Restriction) 설정

CloudFront는 특정 국가에서의 접근을 허용하거나 차단하는 기능을 제공한다.

이를 활용하면 비즈니스 요구사항에 따라 지역별 트래픽을 제어할 수 있다.

(1) 허용 국가 및 차단 국가 설정

CloudFront Geo Restriction(지리적 제한) 기능을 사용하면, 특정 국가에서 콘텐츠 접근을 제어할 수 있다.

📌 허용 국가 리스트(Whitelist Mode)

  • 설정한 국가에서만 접근 가능

📌 차단 국가 리스트(Blacklist Mode)

  • 특정 국가에서의 접근 차단

(2) Geo Restriction 설정 방법

CloudFront 배포판에서 Geo Restriction 설정을 추가하면 된다.

aws cloudfront create-distribution \
  --origin-domain-name my-origin.s3.amazonaws.com \
  --geo-restriction RestrictionType=whitelist,Locations=KR,JP,US

Whitelist 모드 → 한국, 일본, 미국에서만 접근 가능

Blacklist 모드 → 특정 국가를 차단 가능


3. 비용 최적화(Price Class) 전략

CloudFront는 엣지 로케이션(Edge Location)마다 데이터 비용이 다르다.

이를 최적화하기 위해 Price Class를 설정하면, 비용 효율적인 엣지 로케이션만 사용할 수 있다.

(1) Price Class 옵션

Price Class사용 가능 리전비용
Price Class All모든 리전💲💲💲 (가장 비쌈)
Price Class 200주요 리전 (미국, 유럽, 아시아 일부)💲💲 (중간)
Price Class 100미국, 유럽 일부💲 (가장 저렴)

(2) 비용 최적화를 위한 Price Class 설정

비용 절감을 위해 Price Class 100 또는 200을 선택할 수 있다.

aws cloudfront update-distribution \
  --id DISTRIBUTION_ID \
  --distribution-config PriceClass=PriceClass_100

미국과 유럽 주요 리전만 활용하여 비용 절감 가능

전 세계 배포가 필요하면 Price Class All 유지


4. 캐시 무효화(Cache Invalidation) 원리 및 설정

CloudFront는 백엔드 오리진을 업데이트해도 기존 캐시를 유지한다.

따라서, 업데이트된 파일이 즉시 반영되도록 캐시를 무효화(Invalidate)하는 작업이 필요하다.

(1) 캐시 무효화 원리

1️⃣ 각 엣지 로케이션에는 고유한 캐시가 존재

2️⃣ S3 버킷의 파일을 업데이트해도, 기존 캐시는 그대로 유지

3️⃣ 캐시를 무효화하면 CloudFront가 새로운 파일을 다시 가져옴

(2) 특정 파일의 캐시 무효화 방법

CloudFront에서 특정 파일 또는 전체 경로를 대상으로 캐시를 삭제할 수 있다.

aws cloudfront create-invalidation \
  --distribution-id DISTRIBUTION_ID \
  --paths "/images/logo.png"

특정 파일만 무효화하여 불필요한 비용 절감

전체 캐시 무효화 시 비용 증가 가능 → 주의 필요

(3) 전체 캐시 무효화(비추천)

aws cloudfront create-invalidation \
  --distribution-id DISTRIBUTION_ID \
  --paths "/*"

주의: 전체 캐시를 무효화하면 요청이 모두 원본 서버로 가므로 비용이 급증할 수 있다.


5. 결론 및 정리

AWS ALB와 CloudFront를 조합하면 보안, 성능, 비용 최적화를 동시에 달성할 수 있다.

개념설명
ALB + 프라이빗 EC2ALB는 퍼블릭, EC2는 프라이빗 서브넷에 배치하여 보안 강화
보안 그룹 설정ALB → EC2만 허용, CloudFront → ALB만 허용
Geo Restriction특정 국가에서의 접근을 허용 또는 차단
Price Class비용 최적화를 위해 특정 리전만 활용
Cache Invalidation업데이트된 파일이 즉시 반영되도록 캐시를 무효화

🚀 추천 전략:

  • CloudFront + ALB를 조합하여 보안 및 성능 강화
  • Geo Restriction을 활용하여 국가별 접근 제한
  • Price Class 100 또는 200을 사용하여 비용 절감
  • 필요한 경우에만 캐시 무효화 실행하여 비용 관리

이러한 설정을 적용하면 보안성을 유지하면서도 최적의 성능과 비용 절감을 동시에 실현할 수 있다. 🚀

profile
인생 별거 없어

0개의 댓글