[EC2] EC2 Auto Scaling Group 적용 (1) - 도입배경, 이론

1.Auto Scaling Group (ASG) 쉬운 설명: 무인 카페 예시

  • 무인 카페가 있고, 총 5개의 커피머신을 놓을수 있다고 가정합시다.
  • 해당 무인카페는 렌탈업체가 기계상태를 모니터링하고 있다고 가정합니다.

1) 무인카페 운영 시작

  • 무인카페에 커피 머신이 하나만 있는 상황입니다. 손님이 오면 커피 머신이 그 일을 처리합니다.
  • 1개의 EC2 인스턴스 가 동작하는 것과 같습니다.

2) 손님이 늘었을 때(트래픽 증가)

  • 손님이 많아지면 커피 머신이 이를 감당하지 못하고 과부하 에 걸리게 됩니다.
  • 렌탈업체에서 이를 감지하고, 더 많은 커피 머신을 자동으로 배치합니다.
  • 이는 ASG 가 EC2 인스턴스를 추가 하는 것과 같습니다.
  • 예를 들어, Backend Instance CPU 사용량이 높아지면, AWS는 트래픽을 처리할 수 있도록 자동으로 새로운 인스턴스를 추가합니다.

3) 손님이 줄었을 때(트래픽 감소)

  • 손님이 줄면, 커피머신들의
  • 이때, 모니터링 시스템은 불필요한 커피 머신을 제거할 필요가 있다는 것을 감지하고, 커피 머신을 회수합니다. 이건 EC2 인스턴스를 자동으로 종료하는 것과 같습니다.
  • 이렇게 하면 비용을 절감할 수 있죠.

4) 커피 머신 고장

  • 만약 커피 머신이 고장난다면, 모니터링 시스템이 이를 자동으로 감지하고, 고장 난 커피 머신을 교체합니다. 이건 인스턴스 헬스 체크를 통해 문제가 있는 인스턴스를 종료하고 새로운 인스턴스를 시작하는 것과 같습니다.
  • 이렇게 해서 가용성을 유지할 수 있습니다.

2. Auto Scaling Group (ASG) 이란?

  • 트래픽 변화에 맞춰 자동으로 EC2 인스턴스 수를 동적으로 관리하는 그룹입니다.
  • ASG를 통해 애플리케이션의 가용성을 유지하고 리소스를 최적화할 수 있습니다.

1) 수평확장/축소(Scale-out/Scale-in)

  • 정해진 EC2 인스턴스를 동적으로 수평 확장/축소 하여 트래픽 변화에 따라 인스턴스 수를 조절합니다.
  • 유연성 : 트래픽 변화에 따라 대응하여 과부하를 방지할수 있습니다.
  • 비용 효율성 : 불필요한 리소스를 제거하여 비용을 최적화합니다.
  • 무중단 확장 : EC2 인스턴스를 종료하지 않고도 인스턴스수를 늘릴 수 있습니다.

2) Scaling Policies

  • 스케일링 작업 조건을 설정하여(CPU, 메모리 사용률 등) 자동으로 스케일링을 진행합니다.

3) Health Check

  • EC2 인스턴스의 상태를 일정주기마다 점검하여 비정상 인스턴스를 삭제, 새로운 인스턴스를 추가합니다.
  • Health Check API: Health Check를 위한 API 가 인스턴스 내에 있어야 하며, HTTP 200 응답을 반환해야 합니다. 응답이 정상적이지 않을경우 비정상 인스턴스로 판단됩니다.

4) Launch Template

  • 인스턴스를 추가할때 사용할 템플릿 정보입니다. 기본적으로 EC2 인스턴스 생성과 유사합니다.
  • AMI: EC2 인스턴스의 운영 체제와 애플리케이션 구성등을 포함하는 EC2 이미지 입니다. EC2 인스턴스로 쉽게 생성할 수 있습니다.
  • 인스턴스 유형 : CPU, 메모리, 네트워크 성능 등을 선택합니다.
  • 보안 그룹: 네트워크 트래픽에 대한 접근 제어(In Bound, Out Bound)합니다.
  • EBS 볼륨: 스토리지 크기를 결정합니다.

5) Elastic Load Balancer와 통합

  • AWS의 Load Balancer와 통합하여 생성된 인스턴스들의 트래픽을 관리할 수 있습니다.

3. 설계

  • 백엔드 인스턴스를