Heroku 스케일링 (scaling)에 대해서
스케일링이란, 더 큰 다이노(더 많은 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 스케일링 테스트 결과
스케일 아웃이나 스케일 인이 되면, 자동으로 웹 로드밸런서에 붙어서 부하가 분산된다.
참고로, free와 hobby의 경우에는 1개의 웹 다이노만 사용이 가능하다. (스케일 아웃이 불가능하다)
제약 사항
스케일링에는 몇가지 제약 사항이 있다.
· free와 hobby는 1개의 웹다니오만 사용이 가능하기 때문에, 스케일 아웃이 불가능하다.
· 같은 타입의 다이노는 같은 크기의 다이노만을 사용해야 한다. 즉 웹은 standard-1x를 사용하면 모든 웹 다이노는 standard-1x만 사용해야 한다. Free나 hobby, standard-2x 등은 섞어 쓸 수 없다.
· 전체 다이노를 합쳐서 최대 100개의 다이노까지만 스케일링이 가능하다. (고객지원센터에 연락하면 이 한계를 풀 수 있다.)
· perofmance 다이노의 경우 10개만 사용이 가능하다.
과금 방식
헤로쿠의 과금 방식은 초당 과금이다. (아마존의 경우 시간당 과금으로 1시간 1초를 사용해도 2시간 사용분이 과금된다.) 이 부분은 참 좋은듯.
오토 스케일링
서버 부하에 따라서 자동으로 다이노를 늘리고 줄여주는 오토 스케일링은 헤로쿠에서 지원하지 않고, 추가 add-on을 설치해야 한다. 주로 사용되는 오토스케일링 add-on으로 adept (https://www.adeptscale.com/) 와 hirefire (https://www.hirefire.io/) 등이 있다.
'클라우드 컴퓨팅 & NoSQL > PaaS 클라우드' 카테고리의 다른 글
Heroku에서 newrelic을 이용한 node.js 애플리케이션 모니터링 (APM) (0) | 2016.03.23 |
---|---|
Heroku에서 logentries를 이용하여 node.js 로그 모니터링 하기 (0) | 2016.03.22 |
IBM Bluemix 클라우드의 Openwhisk 소개 (1) | 2016.03.17 |
IBM Bluemix #1 - 첫번째 node.js 애플리케이션 (0) | 2014.08.10 |
IBM 클라우드 bluemix(블루믹스) 소개 (1) | 2014.08.08 |