탄력적인 클라우드 자원 활용 기술: 오토스케일링(Auto Scaling)

탄력적인클라우드자원활용기술-오토스케일링(auto scaling)

클라우드 컴퓨팅의 대표적인 장점으로 필요에 따라 서비스를 빠르게 확장하거나 축소할 수 있는 유연성을 들 수 있습니다. 오토스케일링(Auto Scaling)은 클라우드의 유연성을 돋보이게 하는 핵심기술로 CPU, 메모리, 디스크, 네트워크 트래픽과 같은 시스템 자원들의 메트릭(Metric) 값을 모니터링하여 서버 사이즈를 자동으로 조절합니다. 이를 통해 사용자는 예상치 못한 서비스 부하에 효과적으로 대응하고 비용 절감 효과를 볼 수 있습니다.

클라우드 서비스를 이용하는 기업의 운영자는 벤더가 제공하는 자원 관리 기능을 활용해 자동 조절 정책(Auto-Scaling Policy)을 설정합니다. 자동 조절 정책은 서버들의 묶음 단위인 오토스케일링 그룹(Auto-Scaling Group)에 연결하여 서비스가 유휴 상태일 때는 서버의 개수를 최소로 유지하고 부하가 발생하면 최대로 늘려 안정적이고 유연한 서비스를 구현합니다. 오토스케일링 기능에 대한 이해를 돕기 위해 본 아티클에서는 AWS(Amazon Web Services)를 예로 들어 설명하겠습니다.

AWS의 오토스케일링 그룹에 설정하는 항목을 간략히 정리하면 다음과 같습니다.

AWS 오토스케일링 그룹
속성 설명
Desired 오토스케일링 시 서버 수 지정
Launch Configuration 오토스케일링 그룹에서 생성될 서버의 사양/설정 정의
MinSize 오토스케일링 그룹의 최소 유지 서버 수 (Desired > = MinSize)
MaxSize 오토스케일링 그룹의 최대 보유 서버 수 (Desired < = MaxSize)
Health Check Type 오토스케일링 그룹의 서비스에 대한 정상 구동 여부 체크 방식 지정
- 서버 정상 구동 여부 체크 방식
- 로드밸런서(Load Balancer)에 의한 URL 헬스 체크 방식
Health Check Grace Time 오토스케일링 그룹에서 신규 생성된 서버가 정상적인 서비스를 실행하기 위해 필요한 초기 준비 시간(이 시간 동안은 헬스 체크 대상에서 제외)
Cool Down Time 오토스케일링에 의해 서버가 확장 및 축소될 때 서비스가 안정화 되기까지의 워밍업 시간(모니터링 서비스에서 발생한 알람이 무시되며 서버 확장 후 그룹 내 서비스가 정확한 부하분산을 할 수 있을 때까지 대기)
AWS 오토스케일링 그룹

오토스케일링 발생 기준을 판단하기 위한 시스템 메트릭 지표

시스템 메트릭이란 가상 서버의 컴퓨팅 자원에 해당하는 CPU, 메모리, 네트웍과 같은 클라우드 리소스의 사용량 정보를 의미합니다. 오토스케일링 그룹에 포함된 가상 서버의 시스템 메트릭 값이 미리 지정한 임계치를 초과할 경우 가상서버 수를 늘리고(Scale-out), 임계치 미만이면 가성서버 수를 줄이도록(Scale-in) 설정할 수 있습니다. AWS의 서버 인스턴스에 대한 모니터링 메트릭 지표는 다음과 같습니다.

모니터링 메트릭 지표
모니터링 항목 상세 항목
CPU used (%)
Network in/out (bytes)
in/out (packets)
Disk I/O read/write
read/write operations
Load Average 1분, 5분, 15분, 1시간, 6시간 단위
모니터링 메트릭 지표

CPU는 사용률을 백분율로 가늠하고 네트워크는 입출력 바이트 혹은 패킷으로 판단합니다. 평균부하 유지기간은 1분, 5분, 15분 단위로 설정할 수 있습니다. 특이한 점은 디스크 성능 지표를 백분율 계측 방식이 아닌 디스크에 실제로 읽고(read) 쓴(write) 바이트 수와 디스크 액세스 오퍼레이션 횟수로 측정해 정밀한 성능 판단 자료를 제공한다는 것입니다.

서버 생성을 위한 시작 구성 템플릿

AWS는 서버를 손쉽게 생성하기 위해 오토스케일링 그룹 내에 시작 구성(Launch Configuration) 템플릿을 제공합니다. 운영 중인 서비스에 부하가 가해져 자동으로 서버 생성이 필요한 경우 시작 구성의 설정 내용에 따라 서버 인스턴스를 빠르게 만들어 장애를 방지할 수 있습니다. 시작 구성은 서버 OS 이미지 타입, 서버 스케일 사양 명세(CPU 코어 개수, 메모리 용량, OS 기본 스토리지 용량, 초기화 스크립트) 등을 정의합니다. 이 구성은 한 번 생성하면 변경할 수 없고 삭제만 가능합니다. 또한 시작 구성이 제공하는 초기화 스크립트(Init Script)를 통해 초기 서버 설정값을 손쉽게 세팅할 수 있습니다. (예: 비즈니스 서비스 로직을 위한 라이브러리 다운로드 및 서비스 네트워크 설정 등)

오토스케일링의 동작 원리

AWS가 제공하는 오토스케일링 기능의 동작 원리는 아래 [그림 1]과 같습니다.

AWS가 제공하는 오토스케일링 기능의 6단계 동작원리 
Metrics, Alarm 발송, Scale out 발생, 서버프로비저닝, LB Heath check(ping), LB , AutoScaling의 단계를 거친다. [그림 1] AWS 오토스케일링 6단계 동작 원리

단계마다 수행하는 기능은 다음과 같습니다.

AWS 오토스케일링 수행 단계
단계 설명
1 특정 주기마다 로드밸런서의 네트워크 정보와 서버의 시스템 리소스 메트릭 정보들을 모니터링 서비스로 수집합니다.
2 모니터링 서비스(AWS CloudWatch)에서 지정한 임계치 조건을 벗어나는 것(이상/이하/초과/미만)을 감지하면 오토스케일링 그룹으로 알람(Alarm)을 발송합니다.
예를 들어 위의 정책지표 기준으로는 그룹의 CPU 평균사용률이 70% 이상인 상태가 5분 동안 지속 발생하면 오토스케일링 정책이 트리거(Trigger)됩니다
3 오토스케일링 정책은 서버 수를 늘리거나 줄이는 방식입니다.
예시는 서버 수를 한 번에 3대 추가하는 정책이 적용되었습니다. (AWS의 서버 수 확장은 △ 고정 개수로 지정, △ 현재 서버 수의 특정 비율만큼 추가, △ 지정한 증분 개수만큼 추가하는 방식이 있습니다.)
4 등록한 정책에 부합하는 경우, 지정된 서버 수만큼 프로비저닝 작업을 시작합니다. AWS의 경우 현재 서비스 중인 머신 이미지와 동일한 형상(서버 사양, 응용서비스, 필요한 미들웨어 등)으로 사전에 커스텀 이미지를 AMI(Amazon Machine Image)로 만들어 놓으면 서버 확장 시점에 빠른 프로비저닝이 가능합니다.
5 AWS의 ELB(Elastic Load Balancing)에서 생성한 신규 서버의 서비스 상태 확인을 위해 단순 URL(/ping)에 HTTP 요청과 200 OK 응답 결과로 서비스 시작 여부를 확인할 수 있습니다.
6 서버 상태 확인을 완료하면 서버를 서비스 로드밸런서에 추가하여 다른 서버와 동일하게 클라이언트의 요구 트래픽을 처리하기 시작합니다.
AWS 오토스케일링 수행 단계

오토스케일링은 △ 주기적으로 특정 시간대에 트래픽이 집중하는 서비스(혹은 서버 리소스가 적게 필요한 경우), △ 일괄 작업, 주기적 분석과 같은 패턴의 서비스, △ 특정 기간에 급증하는 트래픽 패턴 등 일 또는 주 단위로 트래픽 흐름이 변화하는 서비스에 유용합니다.

지금까지 살펴본 바와 같이 클라우드 환경에서 오토스케일링 기술은 시시각각 변화하는 워크로드의 요구사항에 즉각 대응할 수 있어 비즈니스 특성에 부합하는 응용솔루션을 효율적으로 운영할 수 있도록 합니다. 시스템 리소스를 수분 내에 제어할 수 있고 응용 서비스 패턴에 맞추어 트래픽을 유연하게 배분하여 서비스 성능 및 가용성을 보장받을 수 있을 뿐만 아니라, 비용 절감 효과도 거둘 수 있습니다. 클라우드 서비스의 핵심 기술인 오토스케일링을 백분 활용하여 뛰어난 탄력성을 가진 인프라를 구현해 보길 바랍니다.

# References
[1] https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html
[2] https://docs.aws.amazon.com/autoscaling/ec2/userguide/AutoScalingGroup.html



▶  해당 콘텐츠는 저작권법에 의하여 보호받는 저작물로 기고자에게 저작권이 있습니다.
▶  해당 콘텐츠는 사전 동의 없이 2차 가공 및 영리적인 이용을 금하고 있습니다.


공유하기 열기
손병창
손병창 클라우드 전문가

에스코어㈜ 소프트웨어사업부 엔터프라이즈플랫폼그룹

클라우드 아키텍처 및 플랫폼 개발을 담당하고 있습니다.