[2017 aws startup day] aws 비용 최대 90% 절감하기: 스팟 인스턴스 deep-dive
TRANSCRIPT
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
윤석찬, AWS 테크에반젤리스트
신근우, 레진엔터테인먼트
AWS�비용최대 90%�절감하기:�스팟인스턴스 Deep�Dive
목차
1. 기초지식 - 클라우드비용최적화방법
2. 스팟인스턴스소개및활용 - 90% 비용절감해보기
3. 왜 레진코믹스는?�AWS�Spot�Instance�를 적극적으로사용하는가
4. 스팟주요기능 - Block�&�Fleet
5. 스팟인스턴스활용 7가지모범사례
예약인스턴스(Reserved�Instance)란?
예약기간: 1�년 혹은 3년활용가능
• Amazon�EC2�• Amazon�RDS• Amazon�DynamoDB• Amazon�Redshift• Amazon�ElastiCache
* Dependent on specific AWS service, size/type, and region
•
•
•
스팟인스턴스(Spot�Instance)란?
* Compared to On Demand price based on specific EC2 instance type, region and availability zone
•
•
과금단위변경: 시간▶초단위
https://aws.amazon.com/ko/blogs/korea/new-per-second-billing-for-ec2-instances-and-ebs-volumes/
2017년 10월 2일부터 Amazon�EC2,�EBS,�EMR,�Batch�등 서비스에적용
▶
적절한용량과탄력적아키텍처의적용
트래픽에맞는서버인스턴스타입을선택!
35 m4.xlarge @ $0.246/hr$258 / mo*
*기준: Linux instances in Seoul Region at 720 hours per month
적절한용량과탄력적아키텍처의적용
35 m4.xlarge @ $0.246/hr$258 / mo*
65 t2.medium @ $0.064/hr$124 / mo*
*기준: Linux instances in Seoul Region at 720 hours per month
트래픽에맞는서버인스턴스타입을선택!
오토스케일링과구매옵션의조합
1. 24시간켜놓아야하는가장최소인스턴스는예약인스턴스로구성
2. 오토스케일링그룹을통한트래픽에대한탄력적대응
3. 피크타임에서스팟인스턴스로먼저생성하고,�필요하면추가온디맨드인스턴스로대응
0
2
4
6
8
10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
/Spot On Demand Spot (80-90%)Reserved Instance (40-60%)
9AM 12AM 3PM 6PM 9PM
트래픽
%�Instances�turned�off�daily
%�of�Instances�Right-Sized
%�Always�on�Resources�Covered�by�RIs
%�RI�Utilization
✔✔✔✔✘
✘
✘
✘
• AWS를사용하시면서내부적으로비용관리를위한 KPI를 만들고, 각각 수치에대한기준마련및추적을해야합니다.
• 각수치를달성하기위해, 새로운비용절감방식을꾸준히연구하고, AWS와의아키텍처리뷰등을통해개선합니다.
3. 지속적개선을통한비용절감
클라우드환경에서의 IT 비용관리
계획 구축 실행구축
모니터링
설계
Months Minutes
과거 현재 - AWS
예전에는기획하고,�구축하고실행해버리면다시수정하는것이쉽지않았습니다.�결과가좋으면다행이지만만약에결과가좋지않다면재앙입니다.
AWS�환경에서는설계하고구축하고모니터링하다가뭔가문제가있거나혹은더좋은것이있면바로설계에반영하여배포하는데몇분걸리지도않습니다.�
$ aws ec2 request-spot-instances --spot-price "2.5" --instance-count 1--type "persistent" --launch-specification file://deeplearning.json
{ "ImageId": "ami-1a2b3c4d","KeyName": "my-key-pair","SecurityGroupIds": [ "sg-1a2b3c4d" ],"InstanceType": "p2.8xlarge", "Placement": { "AvailabilityZone": "ap-northeast-2a" },"SubnetId": "subnet-1a2b3c4d","IamInstanceProfile":
{ "Arn": "arn:aws:iam::1234:instance-profile/my-iam-role"
} }
스팟인스턴스요청 - API로 한방에!
스팟인스턴스원리 - Spare�capacity�at�scale
• AWS는컴퓨팅용량설계에따라, 고객을위해항상여유자원을가지고있으며, 이자원은규모에따라분산및확장이가능하다.
• 스팟은시장가격에따라,고객간의 경매방식에따라제공함으로서효율적인컴퓨팅활용을가능하게해준다.
스팟인스턴스원리 - Capacity�pools
AZ1
AZ2
Seoul Region - Total Capacity
T2 C4 M4 I2 R3 D2
Shared
Dedicated
Shared
Dedicated
$0.27 $0.29$0.50
1b 1c1a
8XL
$0.30 $0.16$0.214XL
$0.07 $0.08$0.082XL
$0.05 $0.04$0.04XL
$0.01 $0.04$0.01L
C3
$1.76
OnDemand
$0.88
$0.44
$.22
$0.11
인스턴스패밀리에따라
인스턴스크기에따라
가용영역(AZ)에 따라
리전(Region)에 따라
Spot�Market은 분리되어있음
스팟인스턴스원리 - Capacity�pools
50% Bid
75% Bid
Market Price여러분이직접지불하는금액
25% Bid
¢
스팟인스턴스원리 - Bid�vs.�Market�Price
Bid Price여러분이구매를위해
책정하는금액
• Spot�Bid�Advisor을 통해경매작업을쉽게처리가능
• 고의적인 Pool 선택및입찰을통해스팟인스턴스를필요한만큼유지가능
• Spot�Fleet/Block과 같은기능으로다양한선택가능...
Spot�Bid�Advisor�활용하기
https://aws.amazon.com/ko/ec2/spot/bid-advisor/
스타트업고객사례 - Lyft
“By using AWS Spot instances, we've been able to save 75% a month simply by changing four lines of code. It makes perfect sense for saving money when you're running continuous integration workloads or pipeline processing.”
Matthew Leventi, Lead Engineer, Lyft https://aws.amazon.com/solutions/case-studies/lyft-spot/
Lyft could save up to 90 percent on its CI processes by using Spot Instances with more compute capacity.
스타트업고객사례 - AdRoll
https://aws.amazon.com/ko/solutions/case-studies/adroll-tco/
“Leveraging the AWS platform, we’ve been able to seamlessly scale our infrastructure, better serve our customers across the globe, and reduce our fixed costs by 75% and operational costs by 83%.”
Valentino Volonghi CTO
AdRoll uses a combination of On-Demand, Reserved, and Spot Instances to operate the Realtime Bidding platform.
• 왜레진코믹스는하이브리드로시작했는가?
• 왜레진코믹스는안드로이드부터개발했는가?
• 왜레진코믹스는구글앱엔진을선택했나?
• 왜레진코믹스는 AWS를쓰기시작했나?
• 왜레진코믹스는 Spot�Instance�를 적극사용하나?
c4.large c4.xlarge c4.2xlarge c4.4xlarge
Ondemand $0.114 $0.227 $0.454 $0.907
Reserved $0.072 $0.103 $0.294 $0.587
Spot $0.019 $0.033 $0.088 $0.148
Spot/Reserved 27% 32% 30% 25%
Spot/Ondemand 17% 15% 19% 16%
비용비교
• Luanch�configuration을 spot�/�ondemand�각각생성
• CloudWatch�Event�Rule�은 주기적으로 Lambda�function�호출
• Lambda�function�은 Launch�configuration�에 지정된 instance�type�의 spot�price�의 평균및변화율을계산
• bidding�에 문제가있을것으로예상되는경우 spot�launch�configuration�을 ondemand�launch�configuration�으로변경
• bidding�에 문제가없을것으로예상되는경우는 spot�launch�configuration�을 그대로사용
• bidding�price�를 달리한 Launch�configuration�을 준비
• bidding�에 문제가있을것으로예상되면더높은 bidding�
price�를 가진 Launch�configuration�으로스위칭
• 현재 bidding�price�보다계산값이낮으면더높은 bidding�
price�를 가진 Launch�configuration�으로스위칭
• bidding�price�가 ondemand�price�보다비싸지면
ondemand�로 전환
• Bidding�이외의문제에대한대응(capacity�등)
ü Lifecycle�hook�/�DescribeSpotInstanceRequests�API�등을 활용
• Scaleout�- LB�ready�까지의간극
ü spot�bidding�은 ondemand�scale-out�보다 시간이걸림
ü scaleout�완료까지걸리는시간을최대한줄이자
• Termination�- Healing�의 리스크
ü Peek�traffic�때 일괄적인 spot�interruption�을 최대한회피
• Fault-tolerant�application
• Notification�before�termination
• Consider�scale-up�or�down
ü Adjustable�application�provisioning
ü Weighted�Round�Robin�routing
그밖에…
Hours Ondemand Spot
c4.xlarge 1,568 $355.9 $88.6
c4.4xlarge 2,543 $2,306.5 $235.4
Cost Saving $2,662.4 $324.0
비용절감
오토스케일링기반스팟페일오버
6:00 9:00 12:00 15:00 18:00 21:00 0:00
On-Demand Spot Load
Spot�:�5분간평균 CPU이용률 40%On-Demand�:�5분간평균 CPU이용률 60%
6:00 9:00 12:00 15:00 18:00 21:00 0:00On-Demand Spot Load
Spot�확보에실패한경우On-Demand가 Scale-Up
Spot�확보에따른On-Demand�Scale-Down
©정민영, 비트패킹컴퍼니사례공유 https://www.slideshare.net/awskorea/cloud-taekwon-2015
2개의오토스케일링정책구성
스팟인스턴스서비스주요기능출시
AWS Batch (2016)
Spot Fleet Auto Scaling (2016)
Amazon EMR (2011)
AWS CloudFormation (2012)
Amazon ECS (2017)
Spot�Block�- 6시간내리소스지속제공
• 1-6시간을정해서지정한용량을유지해주는옵션 (RI 보다유리)
• 온디맨드대비 35-45% 저렴• C4.large Linux
• 온디맨드 0.114/hour
• 스팟블록: 0.057/hour
• 스팟: 0.020/hour(2017.10.24 현재서울리전현재)
$ aws ec2 request-spot-instances \--block-duration-minutes 360 \--instance-count 2 \--spot-price "0.25" ...
http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/spot-requests.html#fixed-duration-spot-instances
Spot�Fleet�- 다양한스팟사양할당가능
• 1,000개 이상의스팟을동시에띄워사용할수있는기능
• 유사한인스턴스타입복수선택및가용영역(AZ)�복수선택가능
• 목표자원을인스턴스별가중치를나누어요청가능 (2015.8)
• 자동스케일링기능추가 (2016.9)
• 자원이없을때잠시중지후, 재가동설정가능 (2017.9)
http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/spot-fleet.html
Spot�Fleet�- 산정방법사례: (주)스타트업은 게임데이터분석을위해 최소 60GB�메모리와 8개의
vCPU가필요한앱을운용하는데, 20개의 Spot�Fleet을 구성하고자한다.
(1) 인스턴스타입유형및수량산정 (2) 가중치에따른입찰가격지정
수량
1
4
16
$ aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json
(3) 입찰진행
Spot�Fleet�- 산정방법
http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/spot-fleet.html#instance-weighting-walkthrough
Tip�1.�스팟인스턴스사용시알아두어야할점
• 합리적입찰가격 - 온디맨드보다낮은가격으로
• AMI를 통한자동구성필수 - 서버확장성대비구성
• 중요데이터정기적저장 - EBS,�Amazon�S3�및 DB
• 스팟이중지될때기본동작은 “Termninated”�• 단, 특수한경우, “Close”�시킬 수있으며, 다시재시작가능
• 스팟인스턴스중단공지활용 - 2분전공지 (5초 단위검사)• 중단공지없이삭제될수있어내결함성을가지도록구성필요
스팟인스턴스상태체크 - 샘플스크립트
$ if curl -s http://169.254.169.254/latest/meta-data/spot/termination-time | \
grep -q .*T.*Z; then instance_id=$(curl -s http://169.254.169.254/latest/meta-data/instance-id); \
aws elb deregister-instances-from-load-balancer \--load-balancer-name my-load-balancer \
--instances $instance_id; /env/bin/flushsessiontoDBonterminationscript.sh; fi
Tip�2.�AWS�ElasticBeanstalk에서활용하기
http://eclipsejpa.blogspot.kr/2015/02/aws-spot-instances-for-elastic.html
https://github.com/jc1518/Huggies
1. Elastic�Beanstalk 환경설정 (.ebextension 을 통해직접설정하기)
2. 서드파티오픈소스지원도구활용하기 (Huggies)
Tip�3.�스팟관리스크립트: ec2-spot-labs
https://github.com/awslabs/ec2-spot-labs
ec2-spot-labs is a collection of code examples and scripts that illustrates some of the best practices in using Amazon EC2 Spot Instances.
스팟인스턴스 API를 이용한다양한관리스크립트제공
Tip�4.�스팟관리용오픈소스: AutoSpotting
• 기존오토스케일링그룹의온디맨드인스턴스를자동으로Spot으로교체및운용
• 손쉽게 CloudFormation 및Terraform으로배포가능
• 고객사례 - Here,�NewsCorp,Qualcomm등이활용중
• 주의: 안정빌드의경우, 개발자에게요청하에지원가능
https://github.com/cristim/autospotting
Tip�6.�다양한스팟기반아키텍트
Live/VOD�및 OTT�서비스
Stateless�웹 애플리케이션 Docker�콘테이너기반서비스
Queue�프로세스기반서비스
https://www.youtube.com/results?sp=EgIIBVAU&search_query=ec2+spot+instances+amazon+web+services
Tip�7.�스팟인스턴스제한사항및해결방법
• 스팟미지원인스턴스타입: T2, HS1
• 스팟입찰가격제한:온디맨드 10배
• 스팟요청제한:리전당 20개로제한(필요시증가요청)
http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/using-spot-limits.html
ReferenceAWS Cost Optimization:https://aws.amazon.com/ko/pricing/cost-optimization/http://aws.amazon.com/economics/https://awstcocalculator.com
EC2 Spot Documentation:http://aws.amazon.com/ec2/spot/http://aws.amazon.com/ec2/spot/bid-advisor/http://aws.amazon.com/ec2/spot/faqs/
User Guidehttp://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances.htmlhttp://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-fleet.html
Blog:https://aws.amazon.com/ko/blogs/startups/optimizing-your-costs-for-aws-services-part-1/https://aws.amazon.com/ko/blogs/aws/category/ec2-spot-instances/
맺으면서
• 다양한구매옵션활용
• 오토스케일링을통한확장
• 중단을고려한아키텍처
• 스팟인스턴스를활용한비용절감
• 담당 AM및솔루션즈아키텍트의도움을받으세요!
구축
모니터링
설계
Minutes
민첩한배포및운영
AWS�환경에서는설계하고구축하고모니터링하다가뭔가문제가있거나혹은더좋은것이있면바로설계에반영하여배포하는데몇분걸리지도않습니다.�
비용 절감
AWS에서는아키텍처최적화및구매옵션을활용하여다양한비용절감을할수있는방법을제공하고있으며, 이를즉시에반영할수있습니다.