Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive

7,080 views

Published on

연사: AWS 윤석찬 Tech Evangelist & 레진코믹스 DevOps팀 신근우님

https://aws.amazon.com/ko/events/start-up/

Published in: Technology
  • Dating for everyone is here: ❶❶❶ http://bit.ly/39mQKz3 ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/39mQKz3 ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

[2017 AWS Startup Day] AWS 비용 최대 90% 절감하기: 스팟 인스턴스 Deep-Dive

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

×