Auto scaling으로 알아보자.
클라우드 컴퓨팅의 대표적인 장점으로는 필요에 따라 서비스를 빠르게 확장하거나 축소할 수 있는 유연성을 들 수 있다. 그중 오토 스케일링은 클라우드의 유연성을 돋보이게 하는 핵심 기술로 CPU, 메모리, 디스크, 네트워크 트래픽과 같은 시스템 자원들의 메트릭값을 모니터링하여 서버 사이즈를 자동으로 조절하는 서비스를 말한다.
이를 통해 사용자는 예상치 못한 서비스 부하에 효과적으로 대응하고 최대한 저렴한 비용으로 안정적이고 예측 가능한 성능을 유지할 수 있다.
이러한 오토 스케일링에 대해 알기 앞서 스케일링이 정확히 무엇을 의미하는지 간단하게 알고자 한다.
스케일링이란 인스턴스 혹은 컴퓨팅 파워를 늘리는 것을 말한다.
이런 스케일링의 방법에는 대표적으로 두 가지가 있다.
- Scale-up: 서버가 더 빠르게 동작하게 하기 위해 하드웨어 성능을 올리는 방법
- Scale-out: 하나의 서버보다는 여러 대의 서버가 나눠서 일을 하는 방법
이렇게 두 가지가 있는 것 정도를 알고 있어야 한다.
오토 스케일링의 목표
- 정확한 수의 EC2 인스턴스를 보유하도록 보장
- 그룹의 최소 인스턴스 숫자와 최대 인스턴스 숫자를 관리
- 만약 애플리케이션을 실행하기 위해 인스턴스가 세 개 필요하다면 3대 이상의 인스턴스가 항상 떠 있을 수 있게 보장한다.
- 최소 숫자 이하로 내려가지 않도록 인스턴스 숫자를 유지 (인스턴스 추가)
- 최대 숫자 이상 늘어나지 않도록 인스턴스 숫자를 유지 (인스턴스 삭제)
- 다양한 스케일링 정책 적용 가능
- CPU의 부하에 따라 인스턴스 크기 늘리기/줄이기 (ex. 스타트업을 할 때 낮에는 접속 트래픽이 많으니 인스턴스를 확 올리고 새벽이 되면 접속 트래픽이 낮으니 인스턴스를 내린다.)
- 가용영역에 인스턴스가 골고루 분산될 수 있도록 인스턴스를 분배
- 서비스 장애가 발생하더라도 문제없이 서비스를 이용
오토 스케일링 구성 요소
- EC2 인스턴스를 조정 및 관리 목적의 논리 단위로 취급될 수 있도록 그룹으로 구성
- 그룹을 생성할 때 EC2 인스턴스의 최소 및 최대 인스턴스 수와 원하는 인스턴스 수를 지정하고 이 범위 안에서 Scale out이 일어난다.
- 인스턴스 증감은 이 그룹 안에서 이루어지게 되며 사용자가 지정한 조건을 통해 실행된다.
(ex. 증설 시 어떤 인스턴스 템플릿을 이용할 것인지, 얼마나 많은 서버를 필요로 하는지, 어떤 값을 기반으로 모니터링해서 인스턴스를 증설 또는 감축할 것인지)
- 추가적으로 증설된 인스턴스가 로드밸런서의 멤버로 연결되어야 한다면 로드밸런서를 지정할 수도 있다.
참고 : Auto Scaling 개념 원리