본문 바로가기

AWS

컴퓨터 용량을 자동으로 조정하는 방법 : Amazon EC2 Auto Scaling

728x90

조정(scaling)은 어떤 컴퓨터의 용량을 줄이거나 늘리는 기능

 

어떤 특정 시간에 가장 높은 수요를 충족하도록 컴퓨터 용량을 프로비저닝 한다고 하자.

그러면 대부분의 다른 시간에 활용도가 낮은 상태로 리소스를 실행하게 된다

-> 이러면 비용이 최적화되지 않는다

혹은 더 적은 용량을 할당하여 비용을 줄이는 것인데, 이러면 특정 시간에는 용량이 부족하게 된다

https://www.oreilly.com/library/view/cloud-architecture-patterns/9781449357979/ch04.html

이를 막기 위한게 자동 용량 조정

위 그림처럼 유동적인 서비스 수요를 지원하는데 필요하다

조정 기능이 없다면 애플리케이션의 성능이 저하되거나 사용자가 전혀 사용할 수 없을지도 모른다

 

클라우드에서 컴퓨팅 파워는 프로그래밍 방식의 리소스이다 -> 유연한 방식으로 조정할 수 있다는 소리

 

Amazon EC2 Auto Scaling

: 애플리케이션의 가용성을 유지하면서 사용자가 정의한 조건에 따라 EC2 인스턴스를 자동으로 추가하거나 제거할 수 있는 AWS 서비스이다

EC2 Auto Scaling의 플릿 관리 기능을 사용하여 플릿의 상태와 가용성을 유지할 수 있음

애플리케이션 요구 사항에 최적화되도록 규모를 조정하는 방법을 제공함

- 일정에 따라서나, 수요 변화에 대응하여 AWS Auto Scaling과 연동하여 EC2 인스턴스를 자동으로 추가하거나 제거 할 수 있음

 

ex) 미국의 블랙프라이데이 때 시기적 요인으로 트래픽 피크가 발생하는데, 가장 높은 사용량을 수용할 수 있도록 고정 용량을 사용하여 서버를 프로비저닝 하면 리소스의 76%(반 이상이!)가 대부분 유휴 상태로 남아있게 된다. 그래서 Auto Scaling을 사용하여 트래픽이 많을 때는 컴퓨터 용량을 늘리고 그렇지 않을 때는 평소대로 적게 둔다는 소리

 

Auto Scaling 그룹

: 논리적 그룹으로 취급되는 EC2 인스턴스의 모음

  • Auto Scaling 그룹의 크기는 사용자가 원하는 용량으로 구성한 인스턴스 수에 따라 달라짐
  • 수동이나 자동 조정을 사용하여 수요에 맞게 크기 조정 가능
  • 각 Auto Scaling 그룹의 최소 인스턴스 수를 지정 가능. Amazon EC2 Auto Scaling은 그룹의 크기가 그 이하로 축소되지 않도록 함
  • 각 Auto Scaling 그룹의 최대 인스턴스 수 지정 가능. Amazon EC2 Auto Scaling은 그룹의 크기가 이 한도를 넘지 않게 함
  • Amazon EC2 Auto Scaling은 사용자가 원하는 용량을 지정할 경우, 그룹을 생성할 때나 나중에 언제든지 이 그룹의 크기를 조정하여 지정된 수의 인스턴스 유지
  • 조정 정책을 지정하면 Amazon EC2 Scaling이 애플리케이션의 감소/증가하는 수요에 따라 인스턴스를 시작하거나 종료할 수 있음

https://digitalcloud.training/amazon-ec2-auto-scaling/

위 그림에 나와있는 Auto Scaling 그룹의 경우

최소 인스턴스 수(Minimum size) 1개, 원하는 용량(Desired capacity) 인스턴스 2개, 최대 인스턴스(Maximum size) 수 4개가 됨

사용자가 정의한 조정 정책에 따라 지정한 조건을 기준으로 최소/최대 인스턴스 수 내에서 인스턴스 수가 조절됨

 

 

확장 : Amazon EC2 Auto Scaling에서 인스턴스를 시작하는 것

축소 : 인스턴스를 종료하는 것

 

작동 방식

1. 시작 구성

Auto Scaling 그룹은 인스턴스 구성 템플릿인 시작 구성을 사용하여 EC2 인스턴스를 시작함

시작 구성을 생성할 때, 조정 시에 인스턴스에서 사용할 정보를 지정

지정하는 정보에는 AMI의 ID, 인스턴스 유형, IAM 역할이나 보안그룹, EBS 볼륨이 포함됨

 

2. 조정할 위치 지정

Auto Scaling 그룹의 최소/최대 인스턴스 수와 원하는 용량을 정의

그런 다음 VPC 내의 서브넷에서 시작

Amazon EC2 Auto Scaling은 Elastic Load Balancing과 통합되어 하나 이상의 로드 밸런서를 기존 Auto Scaling 그룹에 연결 가능

로드 밸런서를 연결한 후에 로드 밸런서가 자동으로 인스턴스를 그룹에 등록하고 해당 인스턴스 간에 수신 트래픽을 분산함

 

3. 이벤트를 언제 조정할지 지정

지정된 수의 실행 인스턴스를 항상 유지하도록 Auto Scaling 그룹을 구성 가능

현재 인스턴스 수준을 유지해야 할 수도 있음 -> Amazon EC2 Auto Scaling은 Auto Scaling 그룹에서 실행 중인 인스턴스에 대해 주기적인 상태 확인을 수행

비정상 인스턴스를 발견하면 Amazon EC2 Auto Scaling은 해당 인스턴스를 종료하고 새 인스턴스로 교체

수동 조정을 선택하면 Auto Scaling 그룹의 최대 용량과 최소 용량, 원하는 용량의 변동만 지정

예약된 조정을 사용하면 날짜 및 시간에 따라 조정 작업이 자동으로 수행됨

동적 조정을 구성하면, 조정 정책을 사용하여 조정 프로세스를 제어하는 파라미터를 정의 가능. CloudWatch를 사용함

Amazon EC2 Auto Scaling과 AWS Scaling을 함께 사용하여 예측 조정 구현 가능 -> 예측된 수요에 따라 용량이 조정됨

 

동적 조정 구현

- EC2 인스턴스나 로드 밸런서에 수집된 성능 정보를 기반으로 CloudWatch 경보를 생성하는 것

- 성능 임계값을 초과하면 CloudWatch 경보가 Auto Scaling 그룹의 EC2 인스턴스에서 확장/축소되는 Auto Scaling 이벤트를 트리거함

 

∴ Amazon EC2 Auto Scaling을 사용한 EC2 인스턴스 조정에 대해 알아봄

AWS Auto Scaling과 Amazon EC2 Auto Scaling을 함께 사용하여 예측 조정 수행 가능

 

AWS Auto Scaling은 애플리케이션을 모니터링하는 별도의 서비스이다

- 용량 자동 조정 -> 최저비용으로 안정적이고 예측 가능한 성능 유지

- 간단하고 강력한 사용자 인터페이스를 제공 -> EC2 인스턴스, 스팟 플릿, Amazon Elastic Container Services, Amazon DynamoDB 테이블/인덱스, Amazon Aurora 복제본 등 리소스에 대한 규모 조정 계획 수립 가능

 

 

즉, AWS Auto Scaling은 EC2 뿐만 아니라 ECS, DynamoDB 등 다른 서비스도 스케일링이 가능하다

완전하게 확신할 수 없지만, Auto Scaling이라는 큰 틀 안에 EC2 Auto Scaling가 있는 것이다

어쨌든 EC2 Auto Scaling은 다른 별도의 서비스라는 것

728x90