Whether you’re a cash-strapped startup or an enterprise optimizing spend, it pays to run cost-efficient architectures on AWS. This session reviews a wide range of cost planning, monitoring, and optimization strategies, featuring real-world experience from AWS customers. We cover how to effectively combine Amazon EC2 On-Demand, Reserved, and Spot instances to handle different use cases; leveraging Auto Scaling to match capacity to workload; choosing the optimal instance type through load testing; taking advantage of Multi-AZ support; and using Amazon CloudWatch to monitor usage and automatically shut off resources when they are not in use. We discuss taking advantage of tiered storage and caching, offloading content to Amazon CloudFront to reduce back-end load, and getting rid of your back end entirely by leveraging AWS high-level services. We also showcase simple tools to help track and manage costs, including Cost Explorer, billing alerts, and AWS Trusted Advisor. This session is your pocket guide for running cost effectively in the Amazon Cloud.
Attendees of this session receive a free 30-day trial of enterprise-level Trusted Advisor.
2. What you’ll get out of this session
• Best practices on how to lower your AWS bill
• A more scalable, robust, dynamic architecture
• More time to innovate
• Real-world customer examples
• Easy to implement
5. AWS pricing philosophy
Ecosystem
Global Footprint
New Features
New Services
More AWS
Usage
More
Infrastructure
Lower
Infrastructure
Costs
Reduced
Prices
More
CustomersInfrastructure
Innovation
57 price reductions
since 2006
Economies
of Scale
11. Free Trusted Advisor Trial!
• Free trial begins on 12/6/16
• Runs for 30 days
• Full suite of checks and best practice
recommendations available
• For customers not already on
business/enterprise support plans
• No action required:
Just log in and start using!
https://console.aws.amazon.com/trustedadvisor
21. Turn off unused instances
• Developer, test, training instances
• Use simple instance start and stop
• Or tear down and build up all together
using AWS CloudFormation
• Instances are disposable!
28. Use Spot Instances
• Price based on supply/demand
• You choose your maximum price/hour
• Your instance is started if the Spot price is lower
• Your instance is terminated if
the Spot price is higher, with 2 minutes notice
• But: You did plan for fault tolerance, didn’t you?
32. Spot Instances recap
• Very dynamic pricing
• Opportunity to save 80-90% cost
• But there are risks
• Different prices per AZ
• Leverage Auto Scaling!
• One group with Spot Instances
• One group with On-Demand
• Get the best of both worlds
• Spot fleets – Manage thousands of
Spot Instances with one API call
34. Amazon EC2 Container Service
• Easily manage Docker containers
• Flexible container placement
• Designed for use with other AWS services
• Extensible
• Performance at Scale
• Secure
37. Get rid of idle time with AWS Lambda
• Automatic scaling
• Automatic provisioning
• No need to manage infrastructure
• Just bring your code
• $0.20 per million requests, 1M free
• 100 ms payment granularity
• Never pay for idle
Less than 40% utilization?
Consider using AWS Lambda instead!
41. Cache really everything!
Cache hit ratio 25-30% Cache hit ratio 89-95%
Without negative caching With negative caching
Hit
Miss
42. Cache invalidation
“There are only two hard things in Computer Science:
cache invalidation and naming things” -- Phil Karlton
Two ways to cache:
Time to Live (TTL) with invalidation
Keep the cache in sync all the time
43. Synchronous writes
Sync/check in the app with after-write return values
DynamoDB
ElastiCache
write/update always
write/update always
45. Think of strategies for optimizing CU use
• Use multiple tables to support varied access patterns
• Understand access patterns for time series data
• Compress large attribute values
Consider read (4K) vs. write (1K) sizes
Use Amazon SQS to buffer over-capacity writes
Resize capacity units dynamically
50. Leverage existing services
• Use Amazon RDS, DynamoDB,
ElastiCache for Redis or
Amazon Redshift
• Instead of running your own database
• Amazon Elasticsearch Service
• Instead of running your own cluster
• Amazon SQS
• Amazon Kinesis,
Amazon Kinesis Firehose, Amazon SNS, and more …
AWS has experts for each service
RDS
Amazon Redshift
Amazon
Elasticsearch
Service
Amazon Kinesis
SQS
51. DynamoDB
Pick the right tool for the job
Key/Value
Scalable
throughput
Low latency
Amazon Aurora
More complex
data/queries
Scalable
storage
Amazon
Redshift
Big (complex)
data
Higher
latency
ElastiCache
for Redis
Key/Value
In-Memory
(Very) low
latency
52. There is not one database to rule them all
MongoDB
Tracking
API
RTB
Engine
User&Stats
API
Tracking
API
RTB
Engine
DynamoDB
Decoupled
Amazon
Aurora
Amazon
Redshift
User&Stats
API
53. Advantages
• No undifferentiated heavy lifting
(= cost savings)
• AWS operates the DB
infrastructure for us
• Simple and more granular scale out
• No interference between
RTB/Tracking and User/Stats
54. Let’s recap
1. Use AWS TCO/cost/billing tools
2. Use Reserved Instances
3. Avoid idle instances through automation
4. Use Spot Instances
5. Optimize database utilization
6. Pick the right tool for the job
7. Offload your architecture
55. But wait! There’s even more!
https://youtu.be/SG1DsYgeGEk
AWS re:Invent 2015
ARC302 Running Lean Architectures: Optimizing for Cost Efficiency
• DynamoDB GSI Tweaking
• Using CloudFront to avoid
multi-region setups
• Amazon S3 storage tiering
• … and much more!