클라우드 컴퓨팅 & NoSQL/PaaS 클라우드

Heroku에서 스케일링 하기

Terry Cho 2016. 3. 22. 12:30

Heroku 스케일링 (scaling)에 대해서


조대협 (http://bcho.tistory.com)

 

스케일링이란, 더 큰 다이노(더 많은 CPU와 메모리)를 사용함으로써 각 다이노의 성능을 올리거나, 더 많은 다이노를 추가함으로써 여러 다이노로 부하를 분산해서 전체 성능을 올리는 방법을 이야기 한다.

 

더 큰 다이노를 사용하는 것을 수직 스케일링 (vertical scaling), 더 많은 다이노를 사용하는 것을 수평 스케일링 (horizontal scaling)이라고 한다.

 

그러면 Heroku에서 스케일링을 어떻게 하는지 알아보자

스케일링은 다음과 같이

 

heroku ps:scale 다이노타입=다이노개수:다이노크기

 

 지정하면 된다. 이 스케일링은 무료 티어에서는 사용이 불가능 하기 때문에, 과금을 위한 신용 카드 정보를 등록해야 한다. 대쉬보드에서 “Manage Account > Billing” 메뉴에서 아래와 같이 신용 카드 정보를 추가한다.

 



Figure 1 계정 정보에 신용카드 정보 추가

 

수직 스케일링

 

수직 스케일링에서 다이노의 크기를 늘리는 것을 스케일 업 (scale up), 줄이는 것을 스케일 다운 (scale down)이라고 한다.

현재 하나의 Free 타이의 웹 다이노가 돌고 있을 때, 이를 standard-1x 한개로 스케일 업을 하고자 하면

 

%heroku ps:scale web=1:standard-1x

 

로 하면 간단하게 스케일 업을 할 수 있다.

반대로 스케일 다운을 하려면 더 작은 다니오 타입을 지정하면 된다. 다음은 현재 다이노를 free 타입으로 스케일 다운 하는 명령어 이다.

 

%heroku ps:scale web=1:free

 

수평 스케일링

 

수평 스케일링에서 다이노를 추가 하는 것을 스케일 아웃, 다이노를 빼는 것을 스케일 인이라고 한다.

스케일 아웃과 인은 heroku ps:scale 명령에서 다이노의 개수만 조정해주면 된다.

 

%heroku ps:scale web=2:standard-1x

 

아래는 standard-1x 다이노 2개로 스케일 아웃을 한후 ps 명령을 이용하여 2개의 다니노가 기동된것을 확인 한후, 다시 1개의 free 다이노로 스케일인 & 다운을 한 화면이다.

 



Figure 2 스케일링 테스트 결과

 

스케일 아웃이나 스케일 인이 되면, 자동으로 웹 로드밸런서에 붙어서 부하가 분산된다.

참고로, freehobby의 경우에는 1개의 웹 다이노만 사용이 가능하다. (스케일 아웃이 불가능하다)

 

제약 사항


스케일링에는 몇가지 제약 사항이 있다.

·         free hobby 1개의 웹다니오만 사용이 가능하기 때문에, 스케일 아웃이 불가능하다.

·         같은 타입의 다이노는 같은 크기의 다이노만을 사용해야 한다. 즉 웹은 standard-1x를 사용하면 모든 웹 다이노는 standard-1x만 사용해야 한다. Freehobby, standard-2x 등은 섞어 쓸 수 없다.

·         전체 다이노를 합쳐서 최대 100개의 다이노까지만 스케일링이 가능하다. (고객지원센터에 연락하면 이 한계를 풀 수 있다.)

·         perofmance 다이노의 경우 10개만 사용이 가능하다.

 

과금 방식


헤로쿠의 과금 방식은 초당 과금이다. (아마존의 경우 시간당 과금으로 1시간 1초를 사용해도 2시간 사용분이 과금된다.)  이 부분은 참 좋은듯.

 

오토 스케일링


 서버 부하에 따라서 자동으로 다이노를 늘리고 줄여주는 오토 스케일링은 헤로쿠에서 지원하지 않고, 추가 add-on을 설치해야 한다. 주로 사용되는 오토스케일링 add-on으로 adept (https://www.adeptscale.com/) hirefire (https://www.hirefire.io/) 등이 있다.