블루믹스에서 Auto-Scaling 사용하기 – Part1(서비스 설정)

블루믹스에서 구동중인 어플리케이션의 처리 용량을 Autu-Scaliling 서비스를 이용하여 자동으로 관리 할 수 있습니다. Auto-Scailing 서비스는 힙 메모리, 시스템 메모리, 초당 트랜잭션 처리량(이하 TPS), 응답시간의 사용자의 스케일링 정책 설정에 따라 런타임 인스턴스 수가 자동으로 조정됩니다.

이번 글에는 간단 자바 어플리케이션을 이용하여 TPS 기준으로 자바 런타임이 스케일링 되는 실습을 해보겠습니다.

사전 준비사항 및 관련 링크들

블루믹스의 설정은 Command Line Interface(CLI) 툴을 이용하여 진행함으로 툴이 설치가 되어 있지 않으시면, 아래 링크를 통해 설치하시기 바랍니다.
(설치 방법은 따로 설명하지 않겠습니다.^^)

  1. 블루믹스 CLI 설치 : Bluemix CLI 설치 링크
  2. CloudFoundry CLI 설치 : CloudFondry CLI 설치 링크
  3. Git 클라이언트 설치 : Git 클라이언트 설치 링크
  4. 자바 소스 (Git URL) : RestJava-Basic
  5. 부하 툴 (Jmeter) : Jmeter

단계1. 자바 어플리케이션 블루믹스에 올리기

1.1 소스 다운로드 및 앱 설정파일 작성

소스를 다운로드 하기위해 적당한 디렉토리 이동후 다음의 명령어를 통해 git 에서 소스를 받습니다.

git clone https://hub.jazz.net/git/ecosysdevcnc/javaplays-restjava-basic

소스를 다운로드가 완료되면 ‘javaplays-restjava-basic’ 디렉토리가 생성된 것을 확인할 수 있습니다. 해당 디렉토리로 이동후 블루믹스에 올리기위한 설정파일인 ‘manifest.yml’를 작성합니다.

cd javaplays-restjava-basic
vi manifest.yml

manifest.yml 파일의 내용은 아래 내용을 참조합니다.
설정파일의 내용 중 ‘name’, ‘host’ 는 유일한 이름이어야 하니 적당하게 새로운 이름으로 입력하시기 바랍니다.(나중에 어플리케이션 접속을 위한 URL 이 됩니다.)

applications:
- path: jpbackendmsktemplate.war
  memory: 512M
  instances: 1
  domain: mybluemix.net
  name: autoScalingTestApp
  host: autoScalingTestApp
  disk_quota: 1024M

1.2 앱 디플로이

여기까지 설정이 되었으면 이제 어플리케이션을 블루믹스로 올리기만 하면 됩니다. 다음의 명령을 통해 블루믹스에 적용합니다.
(로그인 시 필요한 정보는 아래 그림에서와 같이 브라우저로 블루믹스 로그인 후 오른쪽 상단에서 확인 가능합니다)
사용자 정보 확인

[블루믹스에 접속 합니다.]
bluemix api https://api.ng.bluemix.net

[블루믹스에 로그인 합니다.]
bluemix login -u mjkong@kr.ibm.com -o mjkong@kr.ibm.com -s dev

[블루믹스에 어플리케이션을 올립니다.]
cf push autoScalingTestApp

cf push 명령어를 실행하면 아래 그림과 같이 디플로이와 자바 런타임 시작이 동시에 진행됩니다.
블루믹스에 어플리케이션 올리기

위의 과정이 모두 끝났으면 브라우저를 통해 정상적으로 어플리케이션이 동작하는지 확인합니다.
(접속 URL은 앞서 설정한 manifest.yml 파일의 name 항목의 앱이름을 포함하여 https://< 앱이름>.mybluemix.net 입니다.)
블루믹스에 어플리케이션 올리기

단계2. Auto-Scaling 서비스 및 정책 설정

어플리케이션이 정상적으로 블루믹스에 디플로이가 되었으면 이제는 Auto-Scaling을 위한 서비스 및 정책을 설정하겠습니다.
블루믹스 홈페이지에 가서 앞서 디플로이한 앱으로 접근합니다.

2.1 Auto-Scaling 서비스 바인딩

앞서 디플로이한 autoScalingTestApp을 클릭하여 상세 페이지로 들어갑니다.
AutoScaling 설정 1

상세페이지에서 Connect New 버튼을 클릭합니다.
AutoScaling 설정 1

서비스 리스트 중 DevOps 항목에서 Auto-Scaling 서비스를 선택합니다.
AutoScaling 설정 1

Auto-Scaling 서비스 상세 페이지에서 Connect to 항목에 바인딩되어야 할 앱의 이름이 정확히 들어오는 것을 확인하고 Create 버튼을 클릭하여 바인딩합니다.
AutoScaling 설정 1

이후 팝업창에서 Restage 버튼을 클릭하여 새로 추가된 Auto-Scaling 서비스의 정보가 앱에 반영되도록 합니다.
AutoScaling 설정 1

정상적으로 Auto-Scaling 서비스가 추가되었으면 아래 그림과 같은 화면을 확인 할 수 있습니다.
AutoScaling 설정 1

2.2 정책 설정

다음 단계는 스케일링 정책을 설정합니다. 이 글에서는 대표적으로 TPS 기준으로만 테스트하도록 하겠습니다. 스케일링 정책은 각 메트릭별로 추가 가능함으로 실제 운영하기 위한 앱의 환경에 맞추어 정책을 설정하시면 됩니다.

Auto-Scaling 서비스 상세화면에 들어가서 [Policy Configuration] > [Create Auto-Scaling Policy] 버튼을 클릭합니다.
AutoScaling 설정 1

아래 그림과 같이 각 설정항목을 입력하고 최종적으로 저장하시면 Auto-Scaling 테스트를 위한 모든 설정이 완료됩니다.
AutoScaling 설정 1

이상으로 Auto-Scaling을 위한 블루믹스의 서비스 및 관련 설정들을 완료하였습니다.
다음 편에서는 실제 부하툴을 이용하여 부하를 넣으면서 스케일링 테스트를 해보겠습니다.