Search
Duplicate

오토 스케일링 생성 및 운영

컴퓨터공학과 21411861 신수형

1. 오토 스케일링의 역할과 목적

오토 스케일링(Auto Scaling)은 바로 Scale Out을 자동화(Auto) 하기 위해 나온 서비스라고 보면 된다. 애플리케이션을 모니터링 하고 용량을 자동으로 조정하는 역할을 하며, 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능을 유지 한다. 그래서 몇 분만에 손쉽게 여러 서비스 전체에서 여러 리소스에 대해 애플리케이션 규모 조정을 설정 할 수 있다.

오토 스케일링의 목표

1.
정확한 수의 EC2 인스턴스를 보유하도록 보장
그룹의 최소 인스턴스 숫자와 최대 인스턴스 숫자를 관리
만약 애플리케이션을 실행하기 위해 인스턴스가 3개가 필요하다면, 3대 이상의 인스턴스가 항상 떠있을 수 있게 보장한다.
최소 숫자 이하로 내려가지 않도록 인스턴스 숫자를 유지 (인스턴스 추가)
최대 숫자 이상 늘어자니 않도록 인스턴스 숫자 유지 (인스턴스 삭제)
2.
다양한 스케일링 정책 적용 가능
CPU의 부하에 따라 인스턴스 크기 늘리기/줄이기 (오후 2시가 되면 게임 접속 트래픽이 많으니 인스턴스 확 올리고, 새벽 2시가 되면 접속 트래픽이 낮으니 인스턴스를 내린다.)
3.
가용영역에 인스턴스가 골고루 분산될 수 있도록 인스턴스를 분배
서비스 장애가 발생하더라도 문제없이 서비스 이용

2. 오토 스케일링 적용 과정 및 설명

부하분산기 과제를 진행할 때 만들었던 인스턴스를 활용해 진행할 예정이다.

1) 스냅샷 생성

2) 디스크 생성

3) 이미지 생성

4) 인스턴스 템플릿 설정

5) 인스턴스 그룹 생성

3) 부하분산기 생성

3. 오토 스케일링 결과 확인 및 분석

접속 링크 : http://34.117.27.242
이전에 만들었던 리액트앱이 잘 작동하는 것을 확인할 수 있다. 이제 요청을 많이 보낸 뒤, 어떤 식으로 동작하는지 알아보자.
하나의 인스턴스에서 stress 명령을 활용해 아래처럼 cpu stress를 100%로 만들어주었다. 그리고 해당 시간동안 요청을 무한히 보내보았다.
정의해둔 템플릿에 따라 인스턴스가 추가로 생기거나, 요청이 줄었을 때에는 다시 삭제하는 장면을 확인할 수 있었다. 아래 사진은 모니터링 화면을 캡쳐한 것이다.

4. 결론

과제를 진행하면서, 부하분산기, 오토스케일링 모두 서버 사용비용을 줄이는데 좋은 솔루션인 것 같다. 하지만 이 솔루션을 사용하는데에도 비용이 들고, 자주 업데이트 되는 서비스의 경우 일일이 해당 과정을 진행할 수 없기 때문에 자동화를 진행할텐데 자동화에도 많은 비용 및 인력이 들 것 같았다. 서버 트래픽이 크지 않고, 감당 가능한 수준이라면 굳이 이러한 솔류션들을 사용하지 않는 것이 비용측면 및 개발 시간에서 더 좋아보인다.
물론 GCP, AWS등에서 막아주겠지만, DOS공격 등 외부에서 과도한 요청을 고의적으로 보내는 경우에 비용이 기하급수적으로 올라갈 수 있기 때문에 이러한 부분을 고려하지 않는다면 요금 폭탄을 맞을 수 있을 것 같았다.