Little bIT awesome

[ACC] Network - CloudFront, ELB 본문

인프라/AWS

[ACC] Network - CloudFront, ELB

까루카라 2024. 5. 9. 11:11

CloudFront

AWS의 CDN(Content Delivery Network) 서비스이다.

CDN (Content Delivery Network)

콘텐츠 전송 네트워크로, 전 세계적으로 분산된 서버 네트워크를 통해 콘텐츠를 효율적으로 전송하는 서비스. CDN은 웹사이트, 애플리케이션, 미디어 콘텐츠 등을 빠르고 안정적으로 제공하기 위해 사용된다.

 

CDN의 주요 특징

1. 엣지 로케이션: CDN이 콘텐츠를 캐싱하고 Client에게 제공하는 지점 혹은 캐시 서를 의미. 엣지 로케이션은 사용자에게 가까운 위치에 배치되어 있어 콘텐츠에 빠르게 접근할 수 있도록 도와준다.

 

2. 캐싱: CDN은 콘텐츠를 엣지 서버에 캐시하여 사용자가 요청할 때마다 원본 서버로부터 콘텐츠를 다시 받아오지 않고도 제공한다. 이를 통해 네트워크 대역폭을 절약하고 응답 시간을 단축할 수 있다.

 

3. 로드 밸런싱: CDN은 트래픽을 여러 서버로 분산시켜 로드 밸런싱을 수행한다. 이를 통해 서버의 부하를 분산시켜 서비스의 안정성을 높일 수 있다.

 

4. 보안 기능: 일부 CDN은 웹 방화벽, DDoS 공격 방어, SSL/TLS 암호화 등의 보안 기능을 제공하여 콘텐츠의 보안을 강화할 수 있다.

 

5. 비용 효율성: CDN을 사용하면 전 세계의 사용자에게 콘텐츠를 제공하는 데 필요한 인프라 및 대역폭 비용을 절감할 수 있다.

 

6. 콘텐츠 최적화: 일부 CDN은 콘텐츠 압축, 이미지 최적화, 캐시 헤더 조정 등의 기능을 제공하여 콘텐츠를 최적화할 수 있다.

 

CloudFront의 동작 순서

  1. 사용자가 어플리케이션에 요청을 한다.
  2. DNS는 사용자에게 적합한 Edge Location으로 라우팅 한다.
  3. Edge Location에서 캐시를 확인하고 있으면 이것을 사용자에게 반환한다.
  4. 없으면 가장 가까운 REC로 캐시가 있는지 요청한다.
  5. 없으면 CloudFront는 오리진으로 요청을 전달한다.
  6. 오리진은 '오리진 > REC > Edge Location > CloudFront가 사용자에게 전달' 수순을 밟는다. (캐시도 추가된다)
  7. REC에 캐시가 있다면 REC는 콘텐츠를 요청한 Edge Location으로 반환한다.
  8. REC로부터 콘텐츠의 첫 번째 바이트가 도착하는 즉시 Edge Location은 이를 사용자에게 반환한다.
  9. Edge Location은 나중을 위해 이 콘텐츠 캐시를 저장한다.

그 이후 콘텐츠는 TTL 값 동안 Edge Location에 캐싱되어 낮은 지연시간으로 콘텐츠를 요청할 수 있다. 참고로 오리진(Origin)은 콘텐츠가 위치하고 있는 근원을 말한다 (ex. EC2 Instance, S3 Bucket, On-Premise etc...).

 

Static, Dynamic 콘텐츠 모두 처리

다른 CDN과 다르게 CloudFront는 정적인 콘텐츠와 동적인 컨텐츠를 모두 처리해준다.

  • 정적 컨텐츠 : 서버(EC2)가 필요하지 않고 이미지 등과 같은 데이터를 포함한다. 이러한 콘텐츠는 미리 캐시되어 있고 모든 사용자에게 동일하게 전달될 수 있다. 예를 들어, 이미지, CSS 파일, JavaScript 파일 등이 해당된다. 이러한 정적 콘텐츠는 S3 버킷 등에 저장되어 CloudFront 배포를 통해 전송될 수 있다.
  • 동적 컨텐츠 : 서버가 필요한 콘텐츠로, 서버에서 동적으로 생성되거나 데이터베이스에서 가져와야 하는 콘텐츠를 말한다. 예를 들어, 로그인 정보, 실시간으로 업데이트되는 뉴스나 게시물 등이 해당된다. 이러한 동적 콘텐츠는 CloudFront를 통해 캐싱되지 않고 원본 서버로 요청되어 처리된다. 이때 EC2 인스턴스 등의 서버에서 콘텐츠가 동적으로 생성되고 전달된다.

 

CloudFront의 추가적인 기능

1. HTTPS 지원 기능:

CloudFront는 HTTPS 통신을 알아서 해주는 기능이 있다. 오리진에 HTTPS를 지원하지 않아도 말이다.

사용자 입장에서 CloudFront와만 HTTPS 프로토콜 통신을 하고, 그 이후 Origin 까지는 HTTP 프로토콜로 통신하는 개념이다. 이 기능이 아니었다면 웹서버에 인증키를 설치하고 기타 등등 귀찮은 작업을 했어야 할 것이다.

 

2. 특정 지역 콘텐츠 접근 제한 기능: 

CloudFront는 특정 지역에 대한 콘텐츠 접근 제한을 설정할 수 있는 기능을 제공한다.

이를 통해 특정 국가 또는 지역에서의 콘텐츠 접근을 차단하거나, 특정 지역에만 제한적으로 콘텐츠를 제공할 수 있다.

이 기능은 Geo-Restriction(지역 제한) 기능으로 알려져 있다.

 

3. Signed URL 기능: 

Signed URL은 CloudFront의 콘텐츠 접근을 제어하기 위한 기능 중 하나이다.

이 기능을 사용하면 특정 사용자 또는 그룹에게만 접근할 수 있는 Signed URL을 제공한다. 예를 들면, 유료 결제를 한 사용자만 스트리밍할 수 있는 동영상 URL이나 쿠키를 구운 독자만 웹툰을 미리 볼 수 있는 미리보기 URL을 제공할 수 있다. 

서명된 URL은 특정 시간 동안 유효하며, 해당 URL을 통해 접속한 사용자는 지정된 콘텐츠에 접근할 수 있다.

이를 통해 콘텐츠의 무단 공유나 접근을 방지할 수 있다.

4. Signed URL 기능: 

Signed URL과 비슷한 개념이지만, 클라이언트의 쿠키를 사용하여 접근 권한을 부여하는 방식이다.

하나가 아닌 다수의 콘텐츠에 사용될 수 있다.

예를 들면 ID/PW를 입력해 로그인 한 유료 회원에게 유료 콘텐츠를 모두 제공하는 상황에 사용될 수 있다. 

 

Signed Cookie를 사용하는 프로세스는 다음과 같다:

 

  1. CloudFront가 url을 확인하는 데 사용되는 공개 키를 품은 신뢰할 수 있는 키 그룹을 지정한다. (인증된 유저 정하기)
  2. 사용자에게 three set-cookie headers (CloudFront-Policy, CloudFront-Signature, CloudFront-Key-Pair-Id)를 사용자에게 보내도록 어플리케이션 개발을 한다. Set-Cookie를 어플리케이션이 사용자가 콘텐츠를 요청하기 전에 보내야 한다.
  3. 사용자가 웹사이트에 로그인하여 자격을 충족한다.
  4. 어플리케이션은 Set-cookie 헤더를 반환하고 사용자는 name-value pairs를 저장한다.
  5. 콘텐츠 요청 시 Cookie에 name-value pairs를 추가한다. (이것이 Signed Cookie 다)
  6. CloudFront는 공개키를 사용해 Signed-Cookie를 검증한다.
  7. Cookie 유효하면 CloudFront는 세팅된 Policy를 참조한다. (접근 가능한 시간 등의 정책을 확인할 수 있다)
  8. CloudFront는 사용자에게 콘텐츠를 제공한다. Edge Location에 콘텐츠가 캐싱되었는지 확인하고 없으면 요청을 오리진에게 전달해 콘텐츠를 사용자에게 반환한다.
 

 

https://bosungtea9416.tistory.com/entry/AWS-CloudFront

 

[AWS] CloudFront 에 대하여

AWS CloudFront 란 AWS CloudFront는 AWS의 CDN (Content Delivery Network) 서비스다. CDN 서비스란 Client의 콘텐츠 요청으로 서버에서 받아온 콘텐츠를 캐싱하고 이후 같은 요청이 왔을 때, 그 캐싱해 둔 것을 제공

bosungtea9416.tistory.com


ELB

 

"Elastic Load Balancer"의 줄임말로, AWS에서 제공하는 로드 밸런서 서비스.

 

로드밸런서

로드 밸런서는 네트워크나 애플리케이션 트래픽을 여러 대의 서버로 분산시켜주는 장치나 서비스를 말한다.

주로 여러 대의 서버에 대한 부하를 분산하고, 가용성과 성능을 향상시키기 위해 사용된다.

 

로드 밸런서의 기능:

  1. 부하 분산: 로드 밸런서는 여러 대의 서버로 들어오는 트래픽을 분산시켜주어 각 서버의 부하를 균등하게 분배한다. 이를 통해 서버의 성능을 최적화하고 과부하를 방지할 수 있다. ELB는 EC2뿐만 아니라 ECS의 컨테이너 Lambda 등을 상대로 부하분산을 실시한다. 또한, On-premise의 L4 스위치처럼 부하분산뿐만 아니라 부하 분산 대상에 대한 헬스 체크(Health Check), 헬스 체크를 통한 다운 서버 제외, 고정 세션(Stiky), SSL Offload(SLL 암복호화) 등이 가능하다. 
  2. AutoScaling: 로드 밸런서는 서버를 동적으로 추가하거나 제거하여 트래픽의 증감에 대응할 수 있다. 이를 통해 시스템이 자동으로 확장하거나 축소하여 최적의 성능을 유지할 수 있다. 
  3. SSL 종단 지원: 일부 로드 밸런서는 SSL/TLS 암호화를 해제하고 서버로 전달하여 서버 측에서는 암호화를 해제하지 않고도 암호화된 트래픽을 처리할 수 있도록 지원한다.

로드 밸런서는 하드웨어 기반으로 구현될 수도 있고, 소프트웨어 기반으로 구현될 수도 있다.

대부분의 클라우드 서비스 제공업체는 로드 밸런서를 클라우드 서비스로 제공하여 사용자가 편리하게 활용할 수 있도록 한다.

AWS의 ELB나 Azure의 Load Balancer 등이 대표적인 클라우드 기반 로드 밸런서 서비스이다.

 

 

  1. 로드 밸런싱 (Load Balancing): 여러 대의 서버에 들어오는 트래픽을 분산시켜 서버 부하를 분산시키는 기술입니다.
  2. ELB 유형: AWS에서 제공하는 ELB에는 Application Load Balancer(ALB), Network Load Balancer(NLB), Classic Load Balancer(CLB) 등이 있습니다. 각각의 특징과 사용 사례를 이해하는 것이 중요합니다.
  3. Health Checks: ELB는 서버의 상태를 주기적으로 확인하여 이상이 있을 경우 해당 서버로의 트래픽을 중단하고 다른 서버로 트래픽을 전달합니다. 이를 위해 Health Checks를 설정해야 합니다.
  4. Listener, Target Group, Routing: ELB의 구성 요소인 Listener, Target Group, Routing에 대한 이해가 필요합니다. 이들은 ELB가 트래픽을 받고, 어디로 보내고, 어떤 조건에 따라 분배하는지를 결정합니다.
  5. Auto Scaling: ELB와 결합하여 인스턴스의 수를 동적으로 조절하여 트래픽 증감에 대응할 수 있는 Auto Scaling의 개념과 설정 방법을 공부할 수 있습니다.
  6. 보안: ELB는 SSL/TLS 암호화, 웹 애플리케이션 방화벽(WAF) 등의 기능을 제공하여 보안을 강화할 수 있습니다.

'인프라 > AWS' 카테고리의 다른 글

[ACC project 2주차 회고록] S3, Presigned_url  (0) 2024.07.28
[ACC 프로젝트 1주차] 회고록  (0) 2024.07.21
[ACC] Computing - EC2, Lightsail  (0) 2024.05.05