[2017 aws startup day] aws 비용 최대 90% 절감하기: 스팟 인스턴스 deep-dive

71
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 윤석찬, AWS 테크 에반젤리스트 신근우, 레진엔터테인먼트 AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep Dive

Upload: amazon-web-services-korea

Post on 23-Jan-2018

1.645 views

Category:

Technology


1 download

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가지모범사례

1. 클라우드비용최적화방법

클라우드비용최적화를위한 3가지모범사례

1.�다양한구매옵션활용

온디맨드 vs�예약인스턴스가격

예약인스턴스(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

2.�탄력적아키텍처구성

과금단위변경: 시간▶초단위

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. 지속적개선을통한비용절감

다양한비용관리도구제공

비용절감을위한 Trusted�Advisor�및 Cost�Explorer�같은 다양한분석도구와추천정보를살피고적용합니다.

클라우드환경에서의 IT 비용관리

계획 구축 실행구축

모니터링

설계

Months Minutes

과거 현재 - AWS

예전에는기획하고,�구축하고실행해버리면다시수정하는것이쉽지않았습니다.�결과가좋으면다행이지만만약에결과가좋지않다면재앙입니다.

AWS�환경에서는설계하고구축하고모니터링하다가뭔가문제가있거나혹은더좋은것이있면바로설계에반영하여배포하는데몇분걸리지도않습니다.�

2. 스팟인스턴스활용방법90% 비용절감해보기

$ 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�를 적극적으로사용하는가

신근우, 레진엔터테인먼트

신근우DevOps�@�Lezhin�Entertainment

LINE+NAVER

• 왜레진코믹스는하이브리드로시작했는가?

• 왜레진코믹스는안드로이드부터개발했는가?

• 왜레진코믹스는하이브리드로시작했는가?

• 왜레진코믹스는안드로이드부터개발했는가?

• 왜레진코믹스는구글앱엔진을선택했나?

• 왜레진코믹스는하이브리드로시작했는가?

• 왜레진코믹스는안드로이드부터개발했는가?

• 왜레진코믹스는구글앱엔진을선택했나?

• 왜레진코믹스는 AWS를쓰기시작했나?

• 왜레진코믹스는하이브리드로시작했는가?

• 왜레진코믹스는안드로이드부터개발했는가?

• 왜레진코믹스는구글앱엔진을선택했나?

• 왜레진코믹스는 AWS를쓰기시작했나?

• 왜레진코믹스는 Spot�Instance�를 적극사용하나?

Traffic�Cycle

Daily�rotated

웹툰공개시간

Scheduled�Scaling

대부분의서비스들이다그렇죠?

Ondemand?�Reserved?

Spot�Instance!

Ondemand?�Reserved?

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%

비용비교

Interrupt

when�the�spot�price�rises�above�bid�price

Monitoring

via�CloudWatch�Event�Rule�and�Lambda

• 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

비용절감

87.84%↓

Ondemand�대비

비용절감은 Spot�Instance!비용줄이는건가장티나는성과입니다

4.�스팟주요기능 - Block�&�Fleet

오토스케일링기반스팟페일오버

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�- 다양한스팟사양할당가능

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

Spot�Fleet�- Amazon�EMR�및 ECS�지원

5.�스팟인스턴스 7가지모범사례

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�5.�스팟인스턴스관리형파트너사

https://www.cmpute.io/ https://spotinst.com/

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에서는아키텍처최적화및구매옵션을활용하여다양한비용절감을할수있는방법을제공하고있으며, 이를즉시에반영할수있습니다.

Q&A�윤석찬아마존웹서비스코리아, 테크에반젤리스트

[email protected]

http://bit.ly/awskr-feedback

@channyun