Cost – and the desire to reduce cost - is always a large factor in IaaS adoption. AWS’ metered ‘pay as you go’ model often presents an enormous savings relative to the cost of building and maintaining data centers. However, the metered model, the proliferation of resource choices, and the overall complexity also means that significant savings can be lost if users are not careful in their usage (for a review of the most common errors and their cumulative cost effects, please refer to CloudCheckr’s March user survey). With that in mind, here are 7 easily implemented tips that will help you avoid common errors, reduce your cloud costs, and avoid sacrificing functionality.
1. Properly size instances. Do not simply accept the defaults. Review your needs and choose the appropriate size – it may be large, but it may also be a medium, small, or even micro. Rather than sizing for peak demand, use the elasticity of the cloud to work for you – through auto-scaling.
2. Discard old EBS snapshots, unused elastic IPs, and other dormant resources. Also delete (as appropriate) unassociated EBS snapshots. Although individually each of these items costs little, in total they combine to create large expenses. Track these resources so that they are not ‘lost in the shuffle’.
3. Keep your eye on data transfer charges. Group resources within regions to avoid unnecessary charges. Keep an accurate resource inventory of not only ‘what’ but also ‘where’ so that you are not wasting money on data transfer.
4. Use S3 lifecycle controls. Object expiration and transitions to RRS and Glacier can significantly reduce your S3 and storage related costs. Pay attention to your storage, what you have, and where/how you are storing it.
5. Purchase resources wisely. Check your utilization and purchase reserved, on-demand, and spot instances as appropriate. Do not be afraid of Spot or Reserved Instances. Just be wise about their use as Spot instances carry the risk of termination and Reserved Instances need to be properly mapped (in our survey, we found 1 in 6 was left dormant because of improper mapping).
6. When possible, use AWS support services such as ELB and pay as you go services such as SES and SQS instead of using dedicated EC2 instances. For most users, the hourly cost of EC2 is far greater than the pay as you go usage charges. Track your costs and determine if this strategy is effective for your usage patterns.
7. Manage your deployment by monitoring and reviewing resource usage. Remain vigilant to insure that you actually using the resources you are buying. In the data center environment, it did not matter if dormant resources were left ‘turned on’. In AWS, it does. All resources are metered and it is critical to make sure that unused ones are turned off.
Most importantly, remember that AWS is dynamic and these 7 steps need to be continually repeated. The management responsibility can be fulfilled either through manually checking each area or through automated reporting and alerts (CloudCheckr and other 3rd parties perform this service). Whichever method is chosen – make no mistake – it needs to be done to avoid significant cost sprawl.