클라우드 컴퓨팅의 가장 큰 장점 중 하나는 자동 확장(Auto scaling)이죠. 이게 되어야 낭비 없이 알뜰하게 클라우드 컴퓨팅의 경제성을 누릴 수 있습니다. 현재 많은 이들이 알고 있는 자동 확장은 주로 CPU 사용률에 따른 것입니다. CPU 사용률이 치솟으면 자원을 늘리는 식의 대응이죠. 이것만으로 충분할까요? 절대 아닙니다. 그래서 구글이 클라우드 컴퓨팅(GCP) 환경에서 작업 큐(Queue) 대기 상태를 보고 자동 확장을 할 수 있는 기능을 공개했습니다.
큐 기반 자동 확장
다음 예제 그림이면 설명 끝입니다. 쉬운 개념이지만, 실제 눈앞에서 자동 확장이 일어나면 입이 떡 벌어집니다.
이제 간단히 설정 방법을 알아보겠습니다. 참고로 이 기능은 여러 가상 머신(VM)을 그룹으로 묶어 관리하는 매니지드 인스턴스 그룹을 사용할 때 적용할 수 있습니다. GCP 관리자는 Stackdriver 모니터링 메트릭에 따라 관리하는 인스턴스 그룹을 대상으로 이 기능을 적용할 수 있습니다.
예를 들어 보겠습니다. 구글의 Cloud Pub/Sub 서비스로 메시지를 받는 상황을 가정하겠습니다. Cloud Pub/Sub는 일종의 메시지 처리 미들웨어라 보면 되는 거 아시죠. 실시간 데이터 스트림, API 호출, 로그 생성 등 엔터프라이즈 환경에서 일어나는 여러 메시징 작업을 처리합니다. Cloud Pub/Sub에 처리되지 않은 메시지가 쌓이면, 작업 대기 상태에 놓이죠. 대기 중인 큐가 생기면 이를 어떻게 알 수 있을까요? Stackdriver 모니터링 메트릭을 통해 알 수 있습니다. 본 예에서는 이 메트릭을 통한 모니터링 정보를 참조해 대기 중인 큐를 줄이기 위해 자원을 어떻게 늘리는지 살펴보겠습니다.
“작업 큐 대기 상황을 파악해 자원을 자동으로 늘린다!”
설정을 한번 해보죠. 먼저 매니지드 인스턴스 그룹을 만듭니다. 이때 오토 스케일링을 활성화합니다. 본 예에서는 워커 이미지를 바로 배포할 수 있는 Pub/Sub 큐 관련 인스턴스 템플릿을 만들어 두었다고 가정하겠습니다.
위 그림과 같이 옵션을 선택한 다음 자동 확장 관련 세부 항목 설정을 진행합니다.
위 설정까지 마쳤다면 이제 남은 것은 확장과 원래 상태로 복귀를 어느 정도로 할 것인지를 정하는 것입니다.
다음과 같이 확장 정책을 ‘Single instance assignment’로 선택하고 할당 값을 ‘2’로 지정하면 큐에 처리되지 않은 메시지가 2개가 될 때 한 개의 워커 인스턴스가 배치되는 것을 뜻합니다. 인스턴스 수 관련해 아래의 경우 최소는 ‘0’ 그리고 최대는 ’20’으로 잡았습니다. 이는 큐에 쌓인 것이 없으면 확장을 하지 않고, 최대 20개까지 대기 중인 큐에 대한 자동 화장을 한다는 것을 뜻합니다. 무한 자동 확장이 아니라 일정 범위 내에서 자동 확장을 하는 것이죠.
CPU 사용률을 기본, 이제는 대기 큐 양에 따른 자동 확장도 가능합니다. GCP 환경에서의 자동 확장을 통한 비용 절감을 더 자세히 알고 싶다면, 메가존으로 문의 부탁드립니다.