본문 바로가기
카테고리 없음

[AWS] ELB & ASG

by 집돌이디벨로퍼 2025. 3. 12.

Scalability (확장성)

- 확장성은 애플리케이션이나 시스템이 변화하는 상황에 맞춰 더 많은 부하를 처리할 수 있는 능력을 의미합니다.

 

- 수직적 확장성( Vertical Scalability) 기존 서버의 성능을 물리적으로 또는 가상으로 업그레이드하는 방식입니다. 물리적인 서버에서 하드웨어를 업그레이드하거나, 클라우드 환경에서 더 강력한 인스턴스로 변경하는 것을 의미합니다.

(인스턴스 크기 증가) + ex) 시니어와 주니어의 실력차이, t2.micro => t2.large 또한 수직적 확장성은 하드웨어의 한계가 있어 제한적임

 

- 수평적 확장성( Horizontal  Scalability)은  네트워크 환경에서 여러 대의 서버(또는 인스턴스)를 추가하는 방식으로 확장합니다. 이를 통해 클라우드와 같은 분산 환경에서 더 많은 트래픽을 처리할 수 있습니다. AWS와 같은 클라우드에서는 이 방법을 주로 사용합니다.

=> ex) 사원수의 증가

=> 분산시스템이 필요

=> 현대 어플리케이션에서 보편적인 확장방법

=> EC2 같은 클라우드를 제공하기 쉬워짐

 

High Availiability

- 수평적 확장성과 밀접한 관련이 있음

- 적어도 2개의 가용성 존에서 어플리케이션이 동작되고 있음을 의미

- 고가용성의 목표는 데이터센터의 손실(재해)에서 살아남는 것

 

Scalability vs Elasticity vs Agility

- Scalcability : 하드웨어를 스케일업함으로써 로드를 더 크게 수용할수있는 능력 또는 노드의 확장 감소

- Elasticity :시스템의 규모가 한번 커지면 스케일업, 스케일 아웃 할수있다. 일종의 자동 스케일링이 발생하는 것을 의미한다. 시스템이 수신하는 부하에 따라 스케일링을 할 수 있다.

ex) pay-per-use,match demand, optimize costs

 

-Agility 는 확장상과 탄력성과는 관련이 없다. 개발자들에게 리소스를 제공하는 시간이 얼마나 단축될수있는지를 의미한다.

 


What is load balancing?

- 로드 밸런싱은 부하 분산기라고 생각하면 된다.

- 로드 밸런서는 인터넷 트래픽을 여러 서버(EC2 인스턴스)로 전달하는 서버이다.

- 로드 밸렁서는 사용자가 많을수록 다중 EC2 인스턴스에 걸쳐 더 많은 부하를 균형잡게 되고 백엔드를 더 잘 스케일 할 수 있게 해준다.

 

Why use a load balancer?

- Spread load across multiple down stream instances

- Expose a single point of access(DNS) to your application

- Seamlessly handle failures of downstream instances

- Do regular health checks to your instances

- Provide SSL termination (HTTPS) for your websites

- High avilibility across zones

Elastic Load Balancer
 
ELB 는 관리자 부하 분산장치이다.
- AWS가 직접 업그레이드, 유지보수, 고가용성을 봐주는 것이다.
- AWS는 소수의 구성 옵션만 제공합니다.
 
사용자가 직접 셋업, 유지보수 하게되면 비용을 아낄수 있지만 노력이 많이 필요할것(당연한거아닌가..)
 
AWS에서 제공하는 load balnacer 
1. Application Load Balancer(HTTP/HTTPS only) - Layer7 => 키워드 : HTTP /HTTPS / gRPC protocols
2. Network Load Balancer(TCP/ UDP) - Layer4  => TCP / UDP protocols 수백만요청도 높은 고가용성으로 처리가능
3. Gateway Load Balancer - Layer3 ==> 키워드 : GENEVE protocols on IP Packets
4. Classic Load Balancer (구버전이라 시험에 안나올듯)

 

부하분산기 연습

- 인스턴스 2개를 한 그룹으로 만든다

- Load balancing에서 새로운 그룹을 create 해주고 인스턴스2개 그룹을 넣어주면 시스템의 부하를 양쪽의 인스턴스에 부담할수있어 안정성이 높아진다.

- Taget Group 에서 인스턴스의 건강상태를 확인할수있다.

 


What's an Auto Scaling Group?

- 클라우드에서 서버를 생성, 제거가 가능함

- Load Balancer에 자동적으로 등록할수있게함

- unhealthy 한 인스턴스를 대체함

- 또 다른 혜택은 비용을 많이 절감할수잇음 - 항상 최적의 용량으로 실행하고있기 때문

 

ASG는 정의된 조건에 따라 EC2 인스턴스 수를 자동으로 조정하는 기능을 제공합니다. 예를 들어, 트래픽이 증가하면 ASG가 자동으로 인스턴스를 추가하여 부하를 분산하고, 트래픽이 줄어들면 인스턴스를 줄입니다.

Load Balancer는 여러 인스턴스가 있을 때 트래픽을 균등하게 분산해주는 역할을 합니다. 만약 인스턴스가 1개뿐인 상태에서 Load Balancer를 사용한다면 ASG가 자동으로 인스턴스를 늘려주는 것이 아니라, 트래픽을 분산할 대상이 없기 때문에 ASG 설정에 따라 인스턴스를 추가적으로 생성하는 것이 필요합니다. 그런 후 Load Balancer가 추가된 인스턴스로 트래픽을 분산하게 됩니다.

정리하자면:

  • ASG는 인스턴스를 자동으로 늘리고 줄이는 역할을 하고,
  • Load Balancer는 여러 인스턴스가 있을 때 트래픽을 분산해주는 역할을 합니다.

따라서 ASG가 자동으로 인스턴스를 늘려주면, Load Balancer가 그 인스턴스들로 트래픽을 리다이렉트하는 것이 맞습니다.


Auto Saling Groups

- Desired capacity 를 2에 맞춰놓고 1개 인스턴스를 종료시켰더니

 - 자동적으로 인스턴스를 관리해주니 중요한 기능인것 같다

 


Auto Scaling Groups - Scaling Strategies

1. Manual SCaling : Update the size of an ASG manually

2. Dynamic Scaling : Respond to changing demand

- Simple / Step Scaling : 예를들어 클라우드 알람이 시작되었을때 CPU용량이 70% 이상이라면 2개 인스턴스 추가 요런식

-  Target Tracking Scaling : 내 ASG CPU가 40% 근처에 머물길 원하면 그렇게 만들어줌

- Scheduled Scaling : 사용량 패턴을 알고있을때를 기반으로 하여 예측하여 스케일 증가시켜달라고 걸어두는 것

- Predictive Scaling : 머신러닝을 사용해 과거의 패턴을 기반하여 미래의 트래픽을 예측함

시간에 기반한 패턴을 가지고 있을 때 매우 도움이 된다.

 


ELB & ASG - Summary

- High Availability vs Scalability vs Elasticity vs Agility in the cloud

 

- Elastic Load Balancers (ELB)

1. Distribute traffic across backend EC2 instances, can be Multi - AZ

2. Supports health checks

3. 4types : Classic (old), Application( HTTP - L7), Network(TCP - L4), Gateway(L3)

 

- Auto Scaling Groups (ASG)

1. Implement Elasticity for your application, across multiple AZ

2. Scale EC2 instances based on the demand on your system, replace unhealthy

3. Integrated with the ELB

 

 


문제

1. High Availability means applications running at least in two AZs to survive a data center loss.

2. A Network Load Balancer can handle millions of requests per second with low-latency. It operates at Layer 4, and is best-suited for load-balancing TCP, UDP, and TLS traffic with ultra high-performance.

3. Vertical scaling means increasing the size of the instance. Changing from a t3a.medium to a t3a.2xlarge is an example of size increase.

4. An Auto Scaling Group (ASG) can automatically and quickly scale-in and scale-out to match the changing load on your applications and websites.

 

5. Auto Scaling Groups can add or remove instances, but from the same type. They cannot change the EC2 Instances Types on the fly. - 같은 타입의 인스턴스를 추가/삭제할수있지 다른 타입으로는 안댐

 

7. Auto Scaling Strategies include: Manual Scaling, Dynamic Scaling (Simple/Step Scaling, Target Tracking Scaling, Scheduled Scaling), and Predictive Scaling.

 

8. Auto Scaling Groups (ASG) offers the capacity to scale-out and scale-in by adding or removing instances based on demand.

 

9.Load Balancers cannot help with back-end autoscaling. You should use Auto Scaling Groups.