1. Auto Scaling Lifecycle
auto scaling group 의  EC2 인스턴스는 다른 EC2 인스턴스의와 다른 경로 또는 수명주기를 가지고 있음 
auto scaling group 설정에 따라 인스턴스를 시작하고 서비스에 추가되었을 때 수명주기가 시작됨. 
인스턴스를 종료 할 때 라이프 사이클이 종료되거나 auto scaling group  설정에 따라 서비스에서 인스턴스를 종료할 수 있음 
 
 1) Auto Scaling : Auto Scaling은 사용자가 정의한 정책, 일정 및 상태 확인에 따라 자동으로 Amazon EC2 인스턴스를 시작하거나 종료하도록 설계된 웹 서비스입니다. 
 
auto scaling 룰 자체를 주는 것에 대해서는 무료이지만 인스턴스 사용 요금은 내야함 
 
 2) Auto Scaling types
 - Vertical Scaling : 인스턴스 사이즈 변경, EBS capacity 증가
 - horizontal Scaling : 인스턴스를 추가하거나 삭제, ELB 활용 
 
 3) auto scaling 시나리오 
 - auto scaling group 에 최소/최대 운영할 인스턴스 개수 정의
 - 언제 scaling 할지에 대한 정책 설정 (scaling plan)
 - cloudwatch 를 통해 사용량 데이터 수집 및 scaling 시도
 - 지정한 spot 에 scaling group 에 지정된 형태로 인스턴스 확장
 
 4) 자원 사용량 측정 
 - CloudWatch : 다양한 항목에 대해 사용량을 모니터링 하고 관리할 수 있는 서비스, 
알람을 설정하고 측정되는 데이터를 기반으로 어떠한 액션을 취할 수 있도록 알람을 설정할 수 있다. 
 - CloudWatch Alarm : CloudWatch에서 알람은 특정 기간 동안 하나의 메트릭을 모니터링하는 것이며 메트릭은 모니터링할 대상을 뜻함 (ex. CPU Usage , Network In traffic 등)
 - 모니터링 항목에 대해 지정한 범위 안의 값이 변경되었을 때 알람이 상태를 변경함. 
 
5) Auto scaling group 계획 관리
 - 인스턴스를 생성하고 구성하는데 얼마나 시간이 소요되는지?
 - 어떠한 모니터링 항목이 어플리케이션의 성능을 측정하는데 적정한지?
 - 기존의 어떠한 자원 (EC2 인스턴스나 AMIS) 는 오토스케일링 그룹의 일부로 사용할 수 있음 
 - 몇개의 AZ 에 auto scaling group 이 확장시킬 것인지?
 - 인스턴스를 auto scaling 한 후 application 기동을 수행할 역할 지정 
 
6) auto scaling group 에서의 부하 분산 
 - 들어오는 웹 트래픽에 대해서 자동으로 분산해야 함 
 - 어플리케이션에 접근하기 위한 싱글 포인트 
 - 로드밸러서와 EC2 인스턴스의 사용량 데이터는 CloudWatch 로 보내짐 
 - 어플리케이션을 확장하는데 ELB 모니터링 항목을 사용할 수 있음 
 
 
auto scaling life cycle
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2. Auto Scaling Lifecycle Hooks
 - Auto Scaling lifecycle hooks 는 사용자가 지정한 액션을 오토스케일링이 수행되거나 중단될 때 수행할 수 있게 한다. 
 
aws autoscaling lifecycel hooks
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1)) bootstrapping 이란?
 - bootstrapping 을 통해 수행할 수 있는 일들
  . 최근의 software 를 설치
  . S3 로부터 data copy
  . DNS 에 등록
  . 서비스 기동 
  . 패키지 업데이트 
  . 리부팅 수행 
  . 포트 80 오픈 (ELB 에 등록, 디바이스 마운트)
 
 - bootstrapping 도구 
 . 인스턴스에 포함된 스크립트 (Bash, Powershell)
 . 설정 관리 도구 (chef, Puppet)
 . Amazon Opsworks
 
2) EC2 Metadata 와 UserData
 - 모든 EC2 인스턴스는 로컬 인스턴스의 metadata 와 userdata 서비스에 접근할 수 있다. 
 - metadata : 인스턴스에 대해 변경할 수 없는 정보 
  . 인스턴스에서 http://169.254.169.254/latest/meta-data/ 로 확인할 수 있다. 
 - Metadata 를 통해 Hostname, AMI ID, Instance ID, Public/Private DNS, Availability Zone 등을 검색할 수 있음 
 - 인스턴스 생성 시 text 16KB 까지 사용 가능 
 - text 는 인스턴스에서 설정작업을 위해 스크립트로 parsing 할 수 있어야 한다. 
 - Cloudinit 은 인스턴스 최초 부팅 시 UserData 를 수행할 수 있다. 
 - Cloudinit 은 Amazon Linux, Ubuntu, RHEL AMI 에 설치되어 있다. (각 플랫폼 별 repo 를 통해 설치할 수 있음)
 - EC2Config 는 Windows Server AMIs 에 설치되어 있다. 
 - Userdata 를 통해 Apache 나 MySQL 등의 패키지를 설치하고 EIP 를 연결할 수 있다. 
 
3. 마무리 
1)) 하나의 Autoscaling 그룹으로 모든걸 만족시킬 수 없다. 
 - 적절한 모니터링 항목을 선택할 것 
  . CPU Usage, Queue Depth, 현재 유저의 수 등.. 
 - 너무 공격적으로 확장하지 말 것 
  . Over provisioning 을 비용을 증가시킴
  . 탄력적인 확장 : scaling up 한 이후에 너무 빠른 시간안에 scale back 하게 되면 오히려 비용이 증가됨 
 - 너무 소극적으로 확장하지 말것 
  . 서비스 성능이 저하될 수 있음 
  . 용량 부족으로 서비스 중단될 수 있음 
 - 너무 성급하게 확장하고 천천히 축소하는 것을 지양해야 함 
 
2)) 추가된 기능 (2015년 ;;)
 - auto scaling group 안에 인스턴스를 추가/제외 할 수 있음 
 - 트러블 슈팅을 위해 인스턴스를 스탠바이 상태로 유지할 수 있음 
 - 소프트웨어를 설치하고 로그를 검색하기 위핸 인스턴스를 펜딩 상태로 유지할 수 있음 
 - 기동중인 인스턴스의 launch configuration 을 기반으로 auto scaling group 을 생성할 수 있음 
 
 
 
위 내용은 아래 가이드를 스터디하면서 정리한 내용입니다. 
http://www.slideshare.net/awskorea/kr-webinar-2015-autoscaling-masterclass