2. 목차
1. 기초 지식 - 클라우드 비용 최적화 방법
2. 스팟 인스턴스 소개 및 활용 - 90% 비용 절감 해보기
3. 왜 레진코믹스는? AWS Spot Instance 를 적극적으로 사용하는가
4. 스팟 주요 기능 - Block & Fleet
5. 스팟 인스턴스 활용 7가지 모범 사례
7. 예약 인스턴스(Reserved Instance)란?
예약 기간: 1 년 혹은 3년 활용 가능
• Amazon EC2
• Amazon RDS
• Amazon DynamoDB
• Amazon Redshift
• Amazon ElastiCache
* Dependent on specific AWS service, size/type, and region
•
•
•
8. 스팟 인스턴스(Spot Instance)란?
* Compared to On Demand price based on specific EC2 instance type, region and availability zone
•
•
10. 과금 단위 변경: 시간 ▶초 단위
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 등 서비스에 적용
▶
11. 적절한 용량과 탄력적 아키텍처의 적용
트래픽에 맞는 서버 인스턴스 타입을 선택!
35 m4.xlarge @ $0.246/hr
$258 / mo*
*기준: Linux instances in Seoul Region at 720 hours per month
12. 적절한 용량과 탄력적 아키텍처의 적용
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
트래픽에 맞는 서버 인스턴스 타입을 선택!
13. 오토 스케일링과 구매 옵션의 조합
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
/SpotOn Demand
Spot (80-90%)
Reserved Instance (40-60%)
9AM 12AM 3PM 6PM 9PM
트래픽
14. % Instances turned off daily
% of Instances Right-Sized
% Always on Resources Covered by RIs
% RI Utilization
✔
✔
✔
✔
✘
✘
✘
✘
• AWS를 사용하시면서 내부적으로 비용 관리를 위한 KPI를 만들고, 각각 수치에
대한 기준 마련 및 추적을 해야 합니다.
• 각 수치를 달성하기 위해, 새로운 비용 절감 방식을 꾸준히 연구하고, AWS와의
아키텍처 리뷰 등을 통해 개선합니다.
3. 지속적 개선을 통한 비용 절감
15. 다양한 비용 관리 도구 제공
비용 절감을 위한 Trusted Advisor 및 Cost Explorer 같은 다양한 분석
도구와 추천 정보를 살피고 적용합니다.
16. 클라우드 환경에서의 IT 비용 관리
계획 구축 실행
구축
모니터링
설계
Months Minutes
과거 현재 - AWS
예전에는 기획하고, 구축하고 실행해 버리면 다시
수정하는 것이 쉽지 않았습니다. 결과가 좋으면
다행이지만 만약에 결과가 좋지 않다면 재앙입니다.
AWS 환경에서는 설계하고 구축하고 모니터링 하다가
뭔가 문제가 있거나 혹은 더 좋은 것이 있면 바로
설계에 반영하여 배포하는데 몇 분 걸리지도 않습니다.
20. 스팟 인스턴스 원리 - Spare capacity at scale
• AWS는 컴퓨팅 용량 설계에
따라, 고객을 위해 항상 여유
자원을 가지고 있으며, 이
자원은 규모에 따라 분산 및
확장이 가능하다.
• 스팟은 시장 가격에 따라,
고객간의 경매 방식에 따라
제공함으로서 효율적인 컴퓨팅
활용을 가능하게 해준다.
21. 스팟 인스턴스 원리 - Capacity pools
AZ1
AZ2
Seoul Region - Total Capacity
T2 C4 M4 I2 R3 D2
Shared
Dedicated
Shared
Dedicated
22. $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
On
Demand
$0.88
$0.44
$.22
$0.11
인스턴스 패밀리에 따라
인스턴스 크기에 따라
가용 영역(AZ)에 따라
리전(Region)에 따라
Spot Market은 분리 되어 있음
스팟 인스턴스 원리 - Capacity pools
23. 50% Bid
75% Bid
Market Price
여러분이 직접
지불하는 금액
25% Bid
¢
스팟인스턴스 원리 - Bid vs. Market Price
Bid Price
여러분이 구매를 위해
책정하는 금액
24. • Spot Bid Advisor을 통해 경매
작업을 쉽게 처리 가능
• 고의적인 Pool 선택 및 입찰을
통해 스팟 인스턴스를 필요한
만큼 유지 가능
• Spot Fleet/Block과 같은
기능으로 다양한 선택 가능...
Spot Bid Advisor 활용하기
https://aws.amazon.com/ko/ec2/
spot/bid-advisor/
25. 스타트업 고객 사례 - 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.
26. 스타트업 고객 사례 - 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.
43. • 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 을 그대로 사용
44. • bidding price 를 달리한 Launch configuration 을 준비
• bidding 에 문제가 있을 것으로 예상되면 더 높은 bidding
price 를 가진 Launch configuration 으로 스위칭
• 현재 bidding price 보다 계산값이 낮으면 더 높은 bidding
price 를 가진 Launch configuration 으로 스위칭
• bidding price 가 ondemand price 보다 비싸지면
ondemand 로 전환
45. • Bidding 이외의 문제에 대한 대응(capacity 등)
ü Lifecycle hook / DescribeSpotInstanceRequests API 등을 활용
• Scaleout - LB ready 까지의 간극
ü spot bidding 은 ondemand scale-out 보다 시간이 걸림
ü scaleout 완료까지 걸리는 시간을 최대한 줄이자
• Termination - Healing 의 리스크
ü Peek traffic 때 일괄적인 spot interruption 을 최대한 회피
46. • Fault-tolerant application
• Notification before termination
• Consider scale-up or down
ü Adjustable application provisioning
ü Weighted Round Robin routing
그 밖에…
53. 스팟 인스턴스 서비스 주요 기능 출시
AWS Batch (2016)
Spot Fleet Auto Scaling (2016)
Amazon EMR (2011)
AWS CloudFormation (2012)
Amazon ECS (2017)
54. 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
55. Spot Fleet - 다양한 스팟 사양 할당 가능
• 1,000개 이상의 스팟을 동시에 띄워
사용할 수 있는 기능
• 유사한 인스턴스 타입 복수 선택 및
가용 영역(AZ) 복수 선택 가능
• 목표 자원을 인스턴스 별 가중치를
나누어 요청 가능 (2015.8)
• 자동 스케일링 기능 추가 (2016.9)
• 자원이 없을 때 잠시 중지후, 재가동
설정 가능 (2017.9)
http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/spot-fleet.html
57. 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) 입찰 진행
58. Spot Fleet - 산정 방법
http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/spot-fleet.html#instance-weighting-walkthrough
61. Tip 1. 스팟 인스턴스 사용시 알아두어야 할 점
• 합리적 입찰 가격 - 온디맨드 보다 낮은 가격으로
• AMI를 통한 자동 구성 필수 - 서버 확장성 대비 구성
• 중요 데이터 정기적 저장 - EBS, Amazon S3 및 DB
• 스팟이 중지 될 때 기본 동작은 “Termninated”
• 단, 특수한 경우, “Close” 시킬 수 있으며, 다시 재시작 가능
• 스팟 인스턴스 중단 공지 활용 - 2분 전 공지 (5초 단위 검사)
• 중단 공지 없이 삭제될 수 있어 내결함성을 가지도록 구성 필요
62. 스팟 인스턴스 상태 체크 - 샘플 스크립트
$ 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
63. 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)
64. 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를 이용한
다양한 관리 스크립트 제공
65. Tip 4. 스팟 관리용 오픈 소스: AutoSpotting
• 기존 오토스케일링 그룹의
온디맨드 인스턴스를 자동으로
Spot으로 교체 및 운용
• 손쉽게 CloudFormation 및
Terraform으로 배포 가능
• 고객 사례 - Here, NewsCorp,
Qualcomm 등이 활용 중
• 주의: 안정 빌드의 경우, 개발자에게
요청하에 지원 가능
https://github.com/cristim/autospotting
66. Tip 5. 스팟 인스턴스 관리형 파트너사
https://www.cmpute.io/
https://spotinst.com/
67. Tip 6. 다양한 스팟 기반 아키텍트
Live/VOD 및 OTT 서비스
Stateless 웹 애플리케이션 Docker 콘테이너 기반 서비스
Queue 프로세스 기반 서비스
https://www.youtube.com/results?sp=EgIIBVAU&search_query=ec2+spot+instances+amazon+web+services
68. Tip 7. 스팟 인스턴스 제한 사항 및 해결 방법
• 스팟 미지원 인스턴스
타입: T2, HS1
• 스팟 입찰 가격 제한:
온디맨드 10배
• 스팟 요청 제한:
리전당 20개로 제한
(필요시 증가 요청)
http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/using-spot-limits.html
70. 맺으면서
• 다양한 구매 옵션 활용
• 오토 스케일링을 통한 확장
• 중단을 고려한 아키텍처
• 스팟 인스턴스를 활용한 비용 절감
• 담당 AM 및 솔루션즈 아키텍트의
도움을 받으세요!
구축
모니터링
설계
Minutes
민첩한 배포 및 운영
AWS 환경에서는 설계하고 구축하고 모니터링 하다가
뭔가 문제가 있거나 혹은 더 좋은 것이 있면 바로 설계에
반영하여 배포하는데 몇 분 걸리지도 않습니다.
비용 절감
AWS에서는 아키텍처 최적화 및 구매 옵션을 활용하여
다양한 비용 절감을 할 수 있는 방법을 제공하고
있으며, 이를 즉시에 반영할 수 있습니다.