Web Application - High Availability 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 Availability of Web Application

Elastic Load Balancer (ELB)

네트워크 트래픽을 분산하여 애플리케이션 확장성 개선

Traffic
Protocol
Port
  EC2 Auto Scaling
AWS Lambda
IP Address
ECS/Fargate
EKS/Fargate
1. Listeners 2. Routing Rules 3. Target &
Target Groups

 

 

ELB workflow

 

 

AWS ELB Family

Application
Load Balancer
(ALB)
Network
Load Balancer
(NLB)
Gateway
Load Balancer
(GWLB)
Classic
Load Balancer
(CLB)

 

 

 

Gateway Load Balancer

기존 Appliance 디자인 Gateway Load Balancer 연결
  • HA 구성의 어려움
  • 확장성의 한계와 Passive 장비 활용도 문제
  • 관리 포인트 증가
  • 3rd Party 제품에 높은 고가용성 기반 설계
  • 수평적 확장 가능
  • BYOL, On-Demand 기반의 비용 고려 설계
  • 지속적인 상태 및 성능 지표 모니터링

 

 

Application Load Balancer (ALB)

Targets Requires
Instances

AWS Lamba

Containers

IP
Layer 7 routing
HTTP2/gRPC
Redirects, web sockets
Fixed response
Authentication : basic Auth, IdP federation, mTLS (X.509) (new)
Web Application Firewall, AWS Outposts/AWS Local Zones
Cookie stickiness, HTTP Desync Mitigation
Best option for the AWS Load Balancer Controller for containers

 

 

Network Load Balancer (NLB)

Targets Requires
Instances

ALB

Containers

IP
Low latency
Zonal isolation
Long-lived TCP connections
Connection-based LAyer 4 load balancing
PrivateLink Support
Elastic IP support
Hybrid architecture support
AWS Fargate support direct to K8s pod

 

 

AWS ELB 비교

Layer 3 gateway
Layer 4 load balancer
Layer 4 Layer 7 Layer 4/7
Target Group
EC2 instances
IP


Target Group
EC2 instances
Containers
ALB
IP
Target Group
EC2 instances
Containers
AWS Lambda
IP
Target Group
EC2-Classic



Protocol Listener
IP


Protocol Listener
TCP/UDP
TLS

Protocol Listener
HTTP/HTTPS
gRPC

Protocol Listener
TCP
SSL/TLS
HTTP/HTTPS
  Security
SSL Offload
SNI/ALPN

Security
SSL Offload
SNI/ALPN
사용자 인증
Security
SSL Offload
사용자 인증

 

 

ELB Front Door Integration

Amazon Route S3

Amazon CloudFront

AWS Global Accelerator
Application Load Balancer

Network Load Balancer

 

 

Routing to backend Target / Target Groups

Application
Load Balancer
Host header
	Host: www.example.com
Path
	/webapp
HTTP headers
	X-MyApp-Source: ‘Cloudfront’
HTTP methods
	GET, POST
Query parameters and query string
	?Stage=Production
Source IP addresses
	99.87.0.0/17

 

Load Balancer Routing Algorithm

  • Round Robin (기본)
    • 용량이나 사용률에 관계없이 요청이 대상 그룹의 모든 대상 간에 균등하게 배포
  • Least Outstanding Requests (선택가능)
    • 새로운 요청이 수신될 때 미처리 요청이 가장 적은 대상에 해당 요청을 전송
  • Weighted Random
    • 대상 그룹에서 정상인 대상 전체에 무작위 순서로 요청을 균등하게 라우팅
    • Automatic Target Weights (ATW) (new)

 

 

ALB as an NLB target with Private Link

 

 

EC2 Auto Scaling

정의된 조건에 따라
애플리케이션 로드를 자동으로
추가하거나 제거하여
애플리케이션 가용성을 유지하기 위한
완전 관리형 서비스
Groups
수요를 충족시키기 위해 확장 가능한 EC2 인스턴스틔 컬렉션

Configuration templates
EC2 인스턴스를 시작하기 위한 템플릿

Scaling options
Auto Scaling group을 동적 혹은 지침에 따라 확장하기 위한 방법

 

 

EC2 Auto Scaling

애플리케이션의 로드를 처리할 수 있는 정확한 수의 Amazon EC2 인스턴스를 유지

Fleet management
비정상 인스턴스 교체
Dynamic Scaling
수요에 맞게 확장

 

 

EC2 Auto Scaling 이점

내결함성 향상 애플리케이션 가용성 향상 비용 관리 향상
  • 인스턴스 수명주기 관리
  • 가용 영역 전반에 배포
  • 수요에 따르는 용량
  • 선제적 Provisioning
  • 여러 인스턴스 유형, 구매 옵션, 아키텍처 구성 확장
  • Over-provisioning 감소

 

 

EC2 Auto Scaling - 구성 템플릿 (Configuration Template)

Launch Template 혹은 Launch Configuration 사용

시작 파라미터
Instance type
EBS volume
AMI ID
Network interface
tags
User data
Block device mapping
Placement



Console
CLI
API
Launch Instances
  • 일관된 경험
  • 단순한 권한
  • 거버넌스 및 모범 사례
  • 생산성 향상

 

 

EC2 Auto Scaling - Target Group 구성

여러가지 인스턴스 유형, 구매 옵션으로 그룹 구성

 

 

EC2 Auto Scaling - Scaling Option

애플리케이션의 컴퓨팅 용량을 증가 혹은 감소

고려 사항 Role
  • Increase
  • Decrease
  • Maintain
Maintain (min, max, desired)

Manual Scaling (desired)

Scheduled Scaling (schedule action)

Dynamic Scaling (policy)

Predictive Scaling (policy)
Cost
  • When and How to scale
  • Selection of Pricing
Metrics
  • Amazon CloudWatch metrics

 

 

EC2 Auto Scaling - Scaling Policy

Dynamic Scaling    
Simple/Step Scaling Target Tracking Scheduled Scaling Predictive Scaling
Metric 모니터링 하여
지정한 단계별로
인스턴스 추가/제거
지정된 Metric 목표치를
유지하기 위해
인스턴스 추가/제거
지정된 스케줄에 따라
인스턴스 시작/종료
이전 경향에 따라
선제적으로
용량 확보
Manually calculate capacity
Reactive
Automated
Reactive
Manually calculate capacity
Proactive
automated
Proactive

 

 

EC2 Auto Scaling - Scaling Option

Scaling Cooldown
  • Simple Scaling Policy에서 동작
  • Scaling 정책에 따라 인스턴스가 조정되는 동안 또다른 인스턴스 추가/삭제 방지
  • Simple Scaling Policy 보다는 Target Tracking Policy 추천
Instance Warmup
  • Dynamic Scaling Policy에서 사용
  • 인스턴스가 시작된 상태가 아닌 traffic을 서비스 가능 시점에 Metric 구적에 포함
  • Target Tracking, Step Scaling Policy에서 사용을 추천
Warm Pool
  • 사전 초기화 된 인스턴스 pool을 유지
  • Scaling 과정에서의 latency를 최소화
  • 실시간 응답성이 매우 중요한 애플리케이션에서의 빠른 응답 성능 확보

 

 

EC2 Auto Scaling - Scaling with Metric

Scaling with Aamzon SQS Scaling with Custom Metric

 

 

EC2 Auto Scaling - Lifecycle Hooks

인스턴스의 수명 주기 이벤트에 대응하여 사용자 액션을 수행

 

[Example]

Scale out (Instance Launching) :

인스턴스가 대기 상태일 때 스크립트 구동하여

소프트웨어 설치, 서비스 구성, 에셋 다운로드 등 수행

 

 Scale In (Instance Terminating) :

인스턴스가 대기 상태에서 Lambda 함수 혹은 인스턴스 연결하여

로그 및 데이터 다운로드 등 수행