Given that spring is very much in the air – at least it is here in Northern Virginia – our attention has turned to tidying up the yard and getting things in good shape for summer. While things are not so seasonally-focused in the world of cloud, the metaphor of taking time out to clean things up applies to unused cloud resources as well. We have even seen some call this ‘cloud pruning’ (not to be confused with the Japanese gardening method).
Cloud pruning is important for improving both cost and performance of your infrastructure. So what are some of the ways you can go about cleaning up, optimizing, and ensuring that our cloud environments are in great shape?
Delete Old Snapshots
Let’s start with focusing on items that we no longer need. One of the most common types of unused cloud resources is old Snapshots. These are your old EBS volumes on AWS, your storage disks (blobs) on Azure, and persistent disks on GCP. If you have had some form of backup strategy then it’s likely that you will understand the need to manage the number of snapshots you keep for a particular volume, and the need to delete older, unneeded snapshots. Cleaning these up immediately helps save on your storage costs and there are a number of best practices documenting how to streamline this process as well as a number of free and paid-for tools to help support this process.
Delete Old Machine Images
A Machine Image provides the information required to launch an instance, which is a virtual server in the cloud. In AWS these are called AMIs, in Azure they’re called Managed Images, and in GCP Custom Images. When these images are no longer needed, it is possible to deregister them. However, depending on your configuration you are likely to continue to incur costs, as typically the snapshot that was created when the image was first created will continue to incur storage costs. Therefore, if you are finished with an AMI, be sure to ensure that you also delete its accompanying snapshot. Managing your old AMIs does require work, but there are a number of methods to streamline these processes made available both by the cloud providers as well as third-party vendors to manage this type of unused cloud resources.
With the widespread adoption of containers in the last few years and much of the focus on their specific benefits, few have paid attention to ensuring these containers are optimized for performance and cost. One of the most effective ways to maximize the benefits of containers is to host multiple containerized application workloads within a single larger instance (typically large or x-large VM) rather than on a number of smaller, separate VMs. In particular, this is something you could utilize in your dev and test environments rather than in production, where you may just have one machine available to deploy to. As containerization continues to evolve, services such as AWS’s Fargate are enabling much more control of the resources required to run your containers beyond what is available today using traditional VMs. In particular, the ability to specify the exact CPU and memory your code requires (and thus the amount you pay) scales exactly with how many containers you are running.
So alongside pruning your trees or sweeping your deck and taking care of your outside spaces this spring, remember to take a look around your cloud environment and look for opportunities to remove unused cloud resources to optimize not only for cost, but also performance.
Today, we share the latest update in ParkMyCloud, which highlights new types of GCP resources you can park, and updates for new and existing users alike.
Park GCP Groups
Now in ParkMyCloud, you can manage and optimize costs for your GCP Managed Instance Groups, both with and without Autoscaling. You can set parking schedules on these groups, but rather than simply turning them “on” and “off”, you can set “high” and “low” stages for your groups, for which you set a maximum and minimum number of resources, respectively. Some additional details:
- GCP Managed Groups with Autoscaling can have a minimum size of 1 instance in the Low/Off state, and thus they can never be fully shut off to zero instances.
- GCP Managed Groups without Autoscaling can have a minimum size of 0 instances in the Low/Off state, and can be fully shut off.
- The Console will show the members of GCP Unmanaged Groups as “regular” resources, allowing them to be scheduled/controlled individually. You wish to assign them to ParkMyCloud Logical Groups in order to start and stop them as a set.
In order to allow ParkMyCloud to support management of GCP Instance Groups, please update your ParkMyCloud Access Role to include the latest set of permissions defined here in the User Guide.
What about other cloud service providers? ParkMyCloud already supports parking for AWS Auto Scaling groups. Management of Azure’s equivalent, Azure scale sets, is coming later this month.
Schedule “Snooze” is now “Override”
ParkMyCloud has long allowed you to “snooze” parking schedules — as in, snooze the on/off actions of the schedule, not the resource. But it was confusing — when people heard “snooze”, they incorrectly assumed it meant, “put the resource to sleep”.
So we’ve renamed it “override”. When you override a schedule on a resource, you can set it to your preferred state of running or parked, either for a set duration (e.g., override the schedule for 3 hours) or until a set time (e.g., override the schedule until 8:00 a.m. on May 16). After that time, normal schedule actions will resume.
For Existing Users…
This release includes a number of other updates that will interest existing users of ParkmyCloud:
- Recommendations Export: The recommendations screen can now be exported to CSV, via a new Export button, for easy sharing and analysis.
- Online Help: Each page on the console now has a “?” link to context-sensitive help from the PMC User Guide.
- Teams: Superadmins now appear as greyed-out users on all team lists, showing their visibility into all teams.
- Notifications: User-level notifications are now more obvious with a link from the org/team-level notifications screen.
- Resources Screen:
- The Schedule/Start/Stop/Team/Group buttons are now always visible, and only enabled when appropriate instances are checked, depending on the function of the button.
- The resources screen is now more mobile-device friendly. There used to be an issue with how the screen scrolled, which is now fixed.
- Performance improvements for customers with large numbers of schedules and recommendations.
For New Users…
Don’t tell the existing users above, but we’ve improved the ParkMyCloud free trial for new users. When you start a 14-day free trial, you will now be given Enterprise tier access to the product – that means unlimited instances, teams, users, and cloud accounts across providers in your trial ParkMyCloud account, access to the user import/export feature, database parking, SmartParking, and more. Check it out with a free trial.
Whether you’re just getting started on public cloud, or you’ve gotten a bill that blew your budget out of the water, it’s a good idea to research ways to get discounts on cloud resources. There’s no reason to pay list price when so many cost-savings measures are available (and your peers are probably taking advantage of them!) Here are our top five ways to get discounts on cloud.
1. Buy in Advance
By purchasing your compute power in advance, you can get a discounted rate — the notable examples being AWS Reserved Instances, Azure Reserved Instances, and Google Committed Use Discounts.
So will these save you money? Actually, that’s a great question. There are several factors that weigh into the answer:
- How much you pay upfront (for example AWS offers all-upfront, partial-upfront, or no-upfront)
- Contract term: 1-year or 3-year term – the longer term will save more, but there’s risk involved in committing for that long
- If the cloud provider cuts their prices during your contract term (and they probably will), you’ll save less
This blog post about AWS Reserved Instances digs into these issues further. Bottom line: paying in advance can save you money, but proceed with caution.
2. Use Your Resources More
The primary example of “spending more to save more” in the cloud computing world is Google Sustained Use Discounts. This is a cool option for automatic savings – as long as you use an instance for at least 25% of the month, GCP will charge you less than list price.
But just like the advanced purchasing options above, there are several factors to account for before assuming this will really save you “up to 60%” of the cost. It may actually be better to just turn off your resources when you’re not using them – more in this post about Google Sustained Use Discounts.
3. If You’re Big: Enterprise Agreements and Volume Discounts
Anyone who’s shopped at Costco isn’t surprised that buying in bulk can get you a discount. Last week, Twitter announced that it will be using Google Cloud Platform for cold data storage and flexible compute Hadoop clusters — at an estimated list price of $10,000,000/month. Of course, it’s unthinkable that they would actually pay that much – as such a high-profile customer, Twitter is likely to have massive discounts on GCP’s list prices. We often hear from our Azure customers that they chose Azure due to pre-existing Microsoft Enterprise Agreements that give them substantial discounts.
If you have or foresee a large volume of infrastructure costs, make sure to look into:
4. If You’re Small: Startup Credits
Each of the major cloud providers offers free credit programs to startups to lure them and get locked in on their services – but that’s not a bad thing. We’ve talked to startups focused on anything from education to location services who have gotten their money’s worth out of these credits while they focus on growth.
If you work for a startup, check out:
So far, history tells us that if you wait a few months, your public cloud provider will drop their prices, giving you a built-in discount.
If you stick with the existing resource types, rather than flocking to the newer, shinier models, you should be all set. The same AWS m1.large instance that cost $0.40/hour in 2008 now goes for $0.175. We’ll just say that’s not exactly on pace with inflation.
It’s Okay if You Don’t Get Discounts on Cloud
What if you’re not a startup, you’re not an enterprise, and you just need some regular compute and database infrastructure now? Should you worry if you don’t get discounts on cloud list prices? No sweat. Even by paying list price, it’s still possible to optimize your spend. Make sure you’re combing through your bill every so often to find orphaned or unused resources that need to be deleted.
Additionally, right-size your resources and turn them off when you’re not using them to pay only for what you actually need – you’ll save money, even without a discount.
When looking to keep Google Cloud Platform (GCP) costs in control, the first place users turn are the discount options offered by the cloud service provider itself, such as Google’s Sustained Use discounts. The question is: do Google Sustained Use discounts actually save you money, when you could just turn the instance off?
How Google Sustained Use discounts work
The idea of the Sustained Use discount is that the longer you run a VM instance in any given month, the bigger discount you will get from the list price. The following shows the incremental discount, and its cumulative impact on a hypothetical $100/month VM instance, where the percentages are against the baseline 730-hour month.
I have to say here that the GCP prices listed can be somewhat misleading unless you read the fine print where it says “Note: Listed monthly pricing includes applicable, automatic sustained use discounts, assuming the instance runs for a 730 hour month.” What this means to us is that the list prices of the instances are actually much higher, but their progressive discount means that no one ever actually pays list price. That said – the list price is what you need to know in order to estimate the actual cost you will pay if you do not plan to leave the instance up for 730 hours/month.
For example, the monthly price shown on the GCP pricing link for an n1-standard-8 instance in the Iowa region is (as of this writing) $194.1800. The list price for this instance would be $194.1800/0.7 = $277.40. This is the figure that must be used as the entry point for the table above to calculate the actual cost, given a certain level of utilization.
What if you parked the VM instance instead?
Here at ParkMyCloud, we’re all about scheduling resources to turn off when you’re not using them, i.e., “parking” them. With this mindset, I wondered about the impact of the sustained use discounts on the schedule-based savings. The following chart plots the cost of that n1-standard-8 VM instance, showing Google sustained use discounts combined with a parking schedule.
In this graph, the blue and orange lines show the percent savings from the sustained use discount and scheduling, respectively, based on the number of usage hours. The grey line shows the blended savings, and the yellow line shows the blended net cost. I am sure the sustained usage discount is described someplace with the typical hype of “the more you spend, the more you save!” But, the reality of the matter is the more you spend…the more you spend!
Looking at what this means for ParkMyCloud users, here is the monthly uptime for a few common parking schedules, and the associated cost:
|Assigned schedule||Uptime per 730-hour month||Actual monthly cost for notional n1-standard-8 instance||Savings compared to sustained-use cost of $194.18|
|7am – 7pm weekdays|
|8am – 6pm weekdays|
|8am – 5pm weekdays|
|9am – 5pm weekdays|
Short version: while the 30% sustained use discount does seem like a great deal, any scheduled off time saves you money. Even with the most wide-open “work day” schedule of running 12 hours per weekday, the cost/month is $93.13, a 52% savings compared to the full sustained-use cost of $194.18. This includes the 20% sustained use discount for the usage over 182.5 hours. A welcome discount to be sure, but not a really huge impact to the bottom line.
Another way our users keep these utilization hours low is by keeping their VM instances “always parked” and temporarily overriding the schedule for a set number of hours (such as for an 8-hour workday) when their non-production resources are needed. When the duration of the override expires, the instance is automatically shut down. This gives the best possible savings, and usually never even hits the first GCP discount tier.
Do Google Sustained Use discounts save you money?
Well, it depends on how you look at it. If you are looking at the cost one hour at a time, and you can see the discounts kick in, then it will probably feel like you are saving money. But if you are looking at the price for a whole month (the way it shows up on your bill), then there is no net savings off the publicly listed (and already discounted) price.
To get the optimal savings on your resources, keep them running only when you’re actually using them, and park them when you’re not. If you meet the usage threshold for any of the Sustained Use Discounts then they will further lower your cost per hour. These two savings options combined will optimize your costs and provide the maximum savings.