Search
Duplicate

클라우드 컴퓨팅 과제 2

Auto Scaling 적용

컴퓨터공학과 21913660 김형준

오토 스케일링 (Auto Scaling)

오토 스케일링 (Auto Scaling)은 리소스의 사용량에 맞추어서 가상 머신 (VM)을 자동으로 증가시키거나 감소시켜주는 기술을 말한다. 이 오토 스케일링은 인스턴스 그룹을 통해 설정을 할 수가 있는데, 이를 통해 어플리케이션의 트래픽 증가와 감소를 처리할 수 있다는 장점이 있다. 예를 들면 만약 갑자기 서비스가 확장되어 트래픽이 증가할 경우라도 동종 인스턴스들을 자동으로 생성시켜 이를 분산시켜준다면 감당이 가능해질 것이다. 그리고 반대로 트래픽이 감소할 경우에도 자동으로 인스턴스들을 감소시켜줌으로써 비용을 절감 시켜줄 수 있다.
오토 스케일링을 사용하기 위해서는 기준을 정해야 하는데,
1) CPU 사용률
2) 클라우드 로드 밸런싱 (Cloud Load Balancing) 사용량
3) 클라우드 모니터링 측정항목
4) 일정
보통 가장 기본적으로 CPU 사용률을 많이 사용하는데, 이 정책은 오토 스케일링 측에서 VM 인스턴스 그룹의 평균 CPU 사용률을 관찰하고 원하는 사용률을 유지하기 위해 그룹에서 인스턴스를 추가하거나 제거한다. 이 정책은 CPU를 많이 사용하지만 CPU 사용량이 변동할 수 있는 구성에 유용하다. 두번째로 많이 사용되는 것이 로드 밸런싱 (Load Balancing) 사용량이다. 클라우드 로드 밸런싱에서 사용량을 관찰하고 VM 인스턴스가 용량 초과 또는 미만일 때 확장한다. 인스턴스의 제공 용량은 로드 밸런서의 백엔드 서비스에서 정의가 된다. 이처럼 로드 밸런싱을 사용하면 트래픽에 대한 걱정없이 개발에만 집중할 수가 있고, 오토 스케일링 기능으로 비용까지 절감할 수 있다는 장점이 있다.

실습 과정

먼저 오토 스케일링 테스트를 수행하기 위해 스냅샷과 디스크를 만들어주었다.
그 후, 이미지를 만들고, 부팅 디스크로 만들었던 이미지로 설정하여준다.
그리고 인스턴스 1과 템플릿을 테스트를 위해 하나의 인스턴스 그룹으로 만들어 주었다.
위 web-lb는 로드 밸런싱을 위한 부하 분산기이고, 밑 web-lb2는 오토 스케일링을 위한 부하 분산기이다. 이제 기본적인 세팅은 마쳤고, 테스트를 진행하여 보았다.
우선 스트레스 테스트를 위해 Artillery 테스트 도구를 사용하였다. Artillery는 Node.js로 작성된 스트레스 테스트 도구이다. 이 도구는 HTTP(S), Socket.io, Websocket 등 다양한 프로토콜을 지원하고 시나리오 테스트까지 할 수 있다. 그리고 JS로 로직을 작성하여 추가할 수 있고, statsd를 지원해서 Datadog이나 InfluxDB 등에 실시간으로 결과를 등록할 수 있으며, 풍부한 CLI 커맨드를 제공해준다는 장점이 있다.
npx artillery quick --count 100 -n 100 http://34.64.140.7/ # --count 옵션 : 가상의 사용자 수 # -n 옵션 : 요청 횟수 # --rate 옵션 : 초당 요청
Shell
복사
우선 가볍게 100명의 가상 사용자가 100번의 요청 횟수를 주는 것으로 테스트를 진행하였다. 100명의 가상 사용자가 100번의 요청을 각각 보내는 것이므로, 총 10000번의 요청이 서버로 전달될 것이다. 하지만 10000번의 요청은 그렇게 많은 양이 아니다.
위 결과처럼 인스턴스의 수는 2개까지 늘어났고, 자동 처리 사용률도 조금 늘어난 것, 그리고 요청을 다 수행한 후에는 다시 인스턴스 수가 줄어들고 자동 확장 처리 사용률 또한 줄어든 것을 확인할 수가 있었다. 하지만 인스턴스의 수를 점점 늘려보고 싶어져서 조금 더 테스트를 진행하여 보았다.
npx artillery quick --count 300 -n 200 http://34.64.140.7/ # --count 옵션 : 가상의 사용자 수 # -n 옵션 : 요청 횟수 # --rate 옵션 : 초당 요청
Shell
복사
다음으로 300명의 가상 사용자가 200번의 요청 횟수를 주는 것으로 테스트를 진행하여 보았다.
그랬더니 이번에는 인스턴스의 수가 6개까지 늘어난 것을 확인할 수가 있었다.
그리고 시간이 지나고는 다시 인스턴스의 수가 1개로 줄어들고 자동 확장 처리 사용률도 줄어든 것을 확인하였다.
CPU 사용률 또한 약 60000만번의 부하가 가해졌을 때 확 늘어났다가 인스턴스의 수가 6개까지 늘어나고 자동 확장 처리 사용률 또한 늘어나자 CPU 사용률은 조금 줄어들어 평균치를 내려가는 것 또한 확인해 볼수가 있었다.