중요한 서비스를 운영하는 웹시스템의 경우 과부하로 인하여 서비스에 문제가  발생하지 않도록 하기 위해 사전에 서버를 증설하여 대비합니다.
지금까지 스케일 아웃형 인프라에서 많이 사용하던 가상화( VM) 보다도 훨씬 가벼운 컨테이너 기반으로 인프라를 구축하고,
자동으로 부하를 감지하여 Auto Scaling 할 수 있다면 예측하기 어려운 부하 상황에서 효율적인 운영이 가능할 것입니다.
Openshift auto scaling demo with KHAN [apm]

오토 스케일링(Auto-Scaling) 이 필요한 이유는 무엇일까요?

오토스케일링을 통한 가장 보편적인 이점 중 하나는 실제 수요에 맞게 애플리케이션 인프라를 확장/축소하여 인프라 비용을 제어하는 것입니다.
클라우드 환경에서는 사용하는 리소스에 대해서만 비용을 지불하는 유틸리티 기반 가격 책정 모델을 적용하기 때문에 오토 스케일링이 더욱 중요합니다.
이것은 피크 수요를 충족시키기 위해 인프라를 배치하는 전통적인 접근 방식과 달리 자원을 많이 사용하지 않기 때문에 TCO 절감에 핵심 요소가 됩니다.
오토스케일링의 또 다른 주요 이점은 애플리케이션의 가용성을 확보하는 것입니다. 즉, 애플리케이션 탄력성을 달성하는 것입니다.
이러한 접근 방식을 사용하면 장애가 발생한 서버 인스턴스를 식별하고 애플리케이션에 원활하게 연결된 상태로 자동으로 대체 할 수있는 솔루션을 개발할 수 있습니다.

컨테이너 기반의 PaaS 플랫폼인 :: Openshift Auto-Scaling 데모 with KHAN

OpenShift는 Kubernetes을 기반으로 한 컨테이너형 애플리케이션 플랫폼이므로 Kubernetes와 마찬가지로 Heapster를 사용하여 CPU의 통계를 수집하고 그 결과에 따라 확장하거나 축소시킵니다.

Auto Scaling 이란?

Auto-Scaling 은 정상적인 운영에 필요한 인프라 환경을 유지하기 위해 애플리케이션에서 필요로 하는 리소스를 동적으로 할당하는 기능입니다.
특히 클라우드 환경에서는 애플리케이션에서 확장이 필요한 경우에 그에 따라 적합한 확장 방법을 결정하는 것이 매우 중요합니다.
가장 일반적인 확장 방법은 수평 확장/ 수직 확장입니다.
첫 번째로 수평 확장의 경우에는 서버 인스턴스를 추가/제거 함으로써 애플리케이션 전체의 인프라를 확대/축소 할 수 있습니다.
이러한 경우에는 전체 부하를 측정하여 동적으로 조정해야 하므로 기술은 복잡하고 비용도 많이 들게 됩니다.
예를들어 웹 서버를 추가하려는 경우 새로운 인스턴스에 대해 멤버로 추가하고 로드밸런싱도 다시 맞추어야만 합니다.
두 번째 수직 확장의 경우에는 수평 확장보다는 덜 복잡하고 비용도 낮아지게 됩니다.
특히 클라우드 환경에서는 이미 프로세서 또는 메모리 추가/제거에 대한 인터페이스를 가지고 있기 때문에 훨씬 손쉽게 구현 가능합니다.

Openshift-Infra Project 소개

OpenShift는 Heapster를 사용한 통계의 수집뿐만 아니라, Hawkular Metrics 와 Cassandra Database 를 이용하여 통계의 축적 및 시각화를 제공하고 있습니다.
Heapster, Hawkular Metrics, Cassandra도 각각 컨테이너로 openshift-infra라는 프로젝트에서 실행됩니다.
Openshift Enterprise 는 하나의 사용자 인터페이스 모든 컨테이너와 컴포넌트 들에 대한 클러스터 메트릭스를 확인할 수 있습니다.
이러한 메트릭스를 사용하여 Horizontal Pod Autoscaler는 언제/어떻게 오토 스케일링 될지를 결정하게 됩니다.
매트릭스 엔진인 Hawkular Metrics 인 Cassandra 에 데이터를 영속화하여 저장하게 됩니다.

References