Web Application - High Performance of Web Application

2023. 12. 22. 11:43클라우드/AWS

12월 AWS Enablement (12/22)

  1. Build Web Application Hands-On
  2. High Availability of Web Application
  3. Hands-On ALB AutoScaling
  4. High Performance of Web Application
  5. Hands-On CloudFront
  6. Web Application Architecture

 

 


 

 

High Performance of Web Application

Cache on Edge - Amazon CloudFront

  • 600개 이상의 POP으로 구성된 글로벌 네트워크를 기반으로하는 콘텐츠 전송 네트워크(CDN) 서비스
  • 낮은 대기시간과 높은 전송 속도로 데이터, 비디오, 애플리케이션 및 API를 전 세계 고객에게 안전하게 제공
  • AWS 글로벌 인프라스트러겿와 긴밀하게 연결되어 있으며 

 

 

Amazon CloudFront - 사용 사례

  • Media Streaming
  • Static web reesources
  • Large file download
  • Whole web site
  • Mobile App (API)

 

 

Amazon CloudFront - Point of Presence (PoP)

AWS Edge network50개국 100개가 넘는 도시에 걸쳐

600개 이상의 PoP과

13개의 Regional Edge Cache로 구성

 

 

Amazon CloudFront - Network hop을 최소화

 

 

Amazon CloudFront - Network congestion을 최소화

 

 

HTML 페이지는 서버로부터 어떻게 전달되는가?

 

 

Amazon CloudFront가 적용 된다면?

 

 

Amazon CloudFront - DNS 기반 라우팅

  • Performance
  • PoP health
  • Server capacity
  • Network capacity
  • Traffic characteristics

 

 

Amazon CloudFront - Cache Miss

 

 

Amazon CloudFront - Cache Hit

 

 

Amazon CloudFront - Refresh Miss

 

 

Amazon CloudFront - Cache 계층 구조

Viewer CloudFront
Origin
Edge location
Edge location
Edge location
Edge location
Regional Edge Cache
Regional Edge Cache

Origin Shild
(option)

 

  • 엣지 로케이션에 계층화된 캐시 구성
    • L1 - Connection termination, hot object 캐싱
    • L2 - 메인 캐시 계층, Hash를 이용한 캐시 볼륨 최적화
    • L3 - Origin과의 Connection 관리, 컨텐츠 압축
  • 레이어 선택은 동적이며 트래픽 유형에 맞게 조정

 

 

Amazon CloudFront

  • Connection Collapsing : 동일한 객체에 대한 복수개의 동시 요처은 캐시 계층을 거치면서 축소
  • Byte streaming : 각 캐시 계층은 첫번째 바이트가 도착하는 동시에 다음 계층으로 바로 전송 시작

 

 

Amazon CloudFront - Cache 계층 구조

Viewers PoP REC Origin

 

 

Amazon CloudFront - Origin Shiled

 

 

Amazon CloudFront - Cache 계층 구조

Viewers PoP REC REC (Origin Shiled) Origin

 

 

Amazon CloudFront - Viewer Access Control

  • Signed URL / Signed Cookie를 이용하여 승인된 사용자만 다운로드 허용
  • Geo-based allow / deny
  • AWS WAFShiled Advanced와 통합

 

 

Amazon CloudFront - Origin Access Control

  • S3 Origin
    • S3에 대한 공개 액세스 차단
    • Origin Access Identity(OAI) 혹은 Origin Access Control(OAC)를 사용하여 CloudFront만 액세스 허용
  • Custom origin
    • Managed prefixes list 활용
    • 사전에 정의된 custom header를 기반으로 origin에서 액세스 제어

 

 

Amazon CloudFornt - Field level Encryption (FLE)

  • POST 요청시 민감한 파라미터는 고객이 제공한 공개 키를 사용하여
    CloudFront에서 암호화할 수 있으며 개인 키를 통해서만 복호화

 

 

Amazon CloudFront - Origin Failover

  • Senario : Origin 접근 실패시 (캐시된 객체가 존재하지 않거나, 동적 컨텐츠 요청)
  • Solution : Secondary Origin으로 자동 Failover
  • CloudFront benefit :
    • Origin의 응답 코드별 Failover 동작 설정
    • 타임아웃 및 재시도 관련 세부 설정 가능

 

 

Amazon CloudFront - Origin Persistent Connection

  • TCP/TLS 핸드 셰이크 오버헤드 최소화
  • 확장된 TCP congestion window 유지
  • 캐시가 불가능하거나 짧은 캐시 TTL을 기반으로 동작하는 API 성능을 개선
  • Origin에서 TCP/TLS 관련 connection 부하를 절감

 

 

Amazon CloudFront - Faster with TLS 1.3

 

 

Amazon CloudFront - Content compression

Response Headers
accept-ranges: bytes;
access-control-allow-origin: *
age: 6256 cache-control: public, max-age=15552000, must-revalidate
content-encoding: br
content-type: application/javascript
Response Headers
accept-ranges: bytes;
access-control-allow-origin: *
cache-control: public, max-age=15552000, must-revalidate
content-encoding: gzip
content-type: application/javascript

 

 

HTTP : Past, Present and Future

HTTP 1.0 HTTP 1.1 HTTP 2.0 HTTP 3.0

 

 

Amazon CloudFront - Enable HTTP/3

UDP 기반

 

 

Amazon CloudFront - Edge Computing

Lambda@Edge

Ideal for complex, longer-running functions

 

CloudFront Functions

Ideal for high-scale, latency-sensitive functions

 

 

Lambda@Edge vs CloudFront Functions

Features Lambda@Edge CloudFront Functions
Runtime 지원 Node.js, Python JavaScript (ECMAScript 5.1 호환)
실행 Location CloudFront Regional Edge Cache CloudFront Edge Locations
함수 Trigger Viewer request / Viewer response
Origin request / Origin response
Viewer request / Viewer response
최대 수행 시간 5 seconds (viewer triggers)
30 seconds (origin triggers)
1 millisecond 이하
Pricing Request 횟수 및 함수 수행 시간 기준 과금 Requet 횟수 기준 과금
최대 Memory 128MB (viewer triggers)
10GB (origin triggers)
2MB
Package 크기 1MB (viewer triggers)
50MB (origin triggers)
10KB
Request Body Access X
Network / File System X

 

Features Lambda@Edge CloudFront Functions
Use Case
    • Long running - msec~sec 실행
    • Adjustable memory or CPU - 대규모 CPU 또는 메모리 사용량이 필요한 워크로드
    • Dependency on third-party libraries - 다른 AWS 서비스와의 통합을 위해 AWS SDK 사용
    • Networks calls - 데이터 처리를 위해 외부 서비스 또는 엔드포인트 호출
  • Cache key normalization - HTTP 요청 속성 변환하여 CloudFront Cache Key를 최적화된 방식으로 구성
  • URL rewrites/redirects - 사용자를 다른 페이지로 redirection 혹은 요청을 origin 서버의 다른 경로로 전달
  • HTTP header manipulation - HTTP header 삽입, 변경 및 삭제
  • Request authorization - 사용자 생성 토큰 (HAMC 또는 JWT등) 생성 및 검증

 

 

Amazon CloudFront - Data Transfer Cost

 

 

Amazon CloudFront - Observability

  • Simple dashboards, Monitoring
    (4xx/5xx error에 대한 알람 구성 등)
  • Real-time custom dashboards, troubleshooting, clickstream, tracking
  • Ad hoc analytic or troubleshooting
  • Trends, monthly reports

 

Amazon CloudFront - 분산 방어로 분산 공격에 대응

  • 각 PoP은 수백 Gbps의 대역폭으로 연결
  • 허용된 포트의 트래픽만 허용
  • 들어오는 패킷을 인라인으로 검사하여 악성으로 판명되면 차단 - WAF Web ACL assocication
  • 인프라(Layer 3 & Layer 4) DDoS 공격으로 부터 보호 - DDoS Shield (Advanced)

 

 

AWS WAF

First Line of Defense to Incoming Threats

AWS WAF

Highly configurable and scalable
cloud-native Web Application Firewall
Amazon CloudFront

Application Load Balancer (ALB)

Amazon API Gateway

AWS AppSync

 

 

WAF 구성

 

 

WAF 동작

 

 

AWS Global Accelerator

Global Application의 AvaliabilityPerformance를 향상 시키는 networking 서비스

Client → Global Accelerator → Aws Applications

 

 

AWS Global Accelerator - Features

고정 IP 주소
단일 혹은 여러 리전의
앱에 대한
고정 진입점 제공
ALBs, NLBs,
EC2 인스턴스의
TCP와 UDP traffic
대한 성능 개선
비정상 엔드포인트 감지로
30초 이내에
트래픽 장애 조치
(Failover)
클라이언트 혹은
DNS 구성 변경 없이
AZ와 리전 간
엔드포인트 이동
모든 트래픽은 AWS backboneㅇ르 통과*
더 큰 대역폭과 트래픽 제어로 DDoS 공격에 대한 복원성을 가짐

* 중국 지역 제외

 

 

AWS Global Accelerator Traffic

Without Gloal Accelerator: routed over public internet

 

 

AWS Global Accelerator Traffic

With Global Accelerator: routed over Amazon global network

 

 

AWS Global Accelerator - Configuration

Accelerator IPs Accelerator

1.2.3.4
Network Zone A

3.4.5.6
Network Zone B
Listeners TCP
1-65535

UDP
1-65535
Endpoint groups us-est-1
Endpoints:
ALB 1, ALB 2

eu-west-1
Endpoints: NLB 1, NLB3

 

 

AWS Global Accelerator - Jitter & Latency

첫번째 바이트 지연(P95)

클라이언트 위치 : US, 엔드포인트 : eu-west-1 (15일)

 

 

AWS Global Accelerator - TCP termination

 

 

AWS Global Accelerator - TCP Througput

  • 양방향에 대한 TCP 파라미터 튜닝
  • 엣지에서 리전의 TCP 느린 시작 비활성화
  • 엣지에서 리전의 점보 프레임 사용
  • 수신 윈도우, TCP 버퍼 크기 증가
  • 혼잡 윈도우 크기 증가

 

 

AWS Global Accelerator - Data Transfer

Response Time

  • WIth GAX : 175ms
  • Without GAX : 325ms

 

 

AWS Global Accelerator - Cost

Fixed Fee
시간당 $0.025
+ Data Transfer - Premium
전송 데이터의 GB당 요금
(트래픽의 주된 방향에 대해 시간당 계산)

 

 

AWS Global Accelerator vs Amazon CloudFront

Key Features AWS Global Accelerator Amazon CloudFront
Description Layer 7 HTTP/S content delivery network Layer 4 TCP/UDP proxy / Global traffic manager
Protocol Support HTTP(S) Any protocol running over TCP or UDP
Content caching Yes No
Routing DNS-based Anycast
Ip addressing Dynamic IP address
Unicast IPs per PoP (고정 IP 주소 획득 optioin) : 예정
2 global static IP addresses,
Bring Your Own IP address ranges 가능
Failover Native origin failover
(HTTP error codes / timeoutes / Route 53 DNS)
Built-in origin failover (↓30sec)
No dependency on DNS TTLs
Application
hosting
Amazon S3 buckets, HTTP servers
Amazon MediaStore
other servers from which CloudFront gets your files
Application Load Balancers
network Load Balancers
EC2 instances + Elastic IPs