Mugo Web main content.

AWS EC2 is cost-effective – with a little planning and smart management

By: Peter Keung | July 30, 2024 | AWS and Business solutions

Amazon Web Services (AWS) EC2 has the reputation of being a pricey option for cloud-based hosting and compute resources. Certainly, that was our initial impression here at Mugo Web years ago when we began standardizing our hosting and site management business on a single cloud platform.

However, we quickly discovered that AWS is actually quite affordable. In fact, our monthly costs for a virtual machine using 8GB of RAM, at 100% usage, is predictably lower with AWS than with other virtualized or traditional data centers. That’s without aggressively tuning our resource usage, which is often the focus of how to optimize AWS pricing.

In this post, I’ll show you how AWS can be a cost-effective option for professionally managed websites. I’ll also take a quick look at some of the additional savings tactics you can employ to get more value from your decision to run on AWS.

The misconception: pay-as-you-go is more expensive for continuous use

If you’ve done any research on cloud hosts, you know that the main cost difference between AWS and its competitors boils down to their pricing models.

AWS has a pay-as-you-go model. It charges a metered hourly usage rate, while its competitors tend to operate on a tiered service model. Effectively, these tiers let you buy compute cycles in bulk, at a lower per-hour cost than Amazon’s base rates.

At AWS, you can stop and not pay for an inactive instance. You can scale horizontally with more servers for a period of time, then turn them off. So you might initially consider EC2 to be more cost-effective for development or staging environments (which don't always need to be on) or production servers whose resource needs fluctuate frequently. You might conclude that tiered services are affordable for always-on production servers.

You’ll often see pricing comparisons like the following:

 vCPUsMemoryPrice (Month)
AWS EC2 T3.large28 GB$60.74*
DigitalOcean Basic Droplet48 GB$48
Linode Shared CPU48 GB$48

*730 hours @ $0.0832/hr

Of course, there’s a lot more to configuring a host than just a basic hourly rate – you have to factor in costs for storage, data transfer, and various other services. But this back-of-the-napkin math is what you’ll most often see in discussions of how AWS is “expensive.”

It’s something we unlearned pretty quickly in our own analysis. First of all, the release of the T4g family provided significant cost savings. The T4g family has become our default choice for standard website needs; the T4g.large 8GB RAM server works out to about $49.06 per month at 100 percent usage at the base hourly rate. Add on the new $3.65 monthly charge per IPv4 address (which we consider a baseline) and your costs are $52.71 per month, about 10% more expensive than DigitalOcean and Linode. But that's not the complete picture…

Optimizing EC2 for cost-effective continuous use

When citing costs, I need to stress that fees can change in the dynamic web hosting market. In fact, as we were doing our own research a few years ago, DigitalOcean went public, and Linode was acquired by Akamai. This led to substantial price hikes for both. Coupled with the release of the T4g family, the cost advantages of EC2 increased dramatically.

Fortunately, hosting services offer detailed pricing calculators (AWS, DigitalOcean, Linode) that will guide you through your own scenarios and research. But, at the time I researched this post, the prices listed here were accurate, and you’ll find the models that drive final costs are fairly constant.

I’ll get right to the numbers:

To meet the needs of a small customer, we can run an 8GB virtual instance with 40GB of EBS storage, 50GB of outbound Internet data, and daily backups for $44.83 a month on AWS EC2. That number includes the IPv4 address fee, which is still included free-of-charge at DigitalOcean and Linode.

The specs on this example instance are:

AttributeConfigNotes
TenancyShared Instances 
Operating systemLinux 
WorkloadConsistent 
Enable detailed monitoringDisabledThis is a minute-by-minute push of performance metrics to AWS’s CloudWatch platform. We find the basic monitoring built into EC2 to be more than adequate.
EBS storage amount40 GB 
Data transfer outbound: Internet50 GB 
Data transfer intra-region0 TBSome global enterprises may need to shift/replicate data between AWS regions, but that’s not our typical use case.

At DigitalOcean, a comparable instance is $62.40 monthly. At Linode, it’s $57.60.

Obviously, this doesn’t line up with the scratch math I just laid out in my table earlier.

So, how can AWS be 28-39% cheaper, despite its higher base hourly rate? It boils down to three key factors:

  1. Discounts for long-term commitments
  2. Greater configuration options
  3. Backup fees

Let me walk through how these factors help shape my $44.83 a month cost estimate for EC2.

1. Discounts for long-term commitments

AWS offers Savings Plans that can dramatically cut your compute hourly rate if you commit to one or three years of service. By dramatically, I mean anywhere between about a third to 50%, based on our direct experience. If your EC2 needs are quite consistent, you should take advantage of Savings Plans.

Compute savings plans allow you to switch between services, instance types, and regions, while EC2 Instance plans lock you into a service region and instance family. Amazon touts the available savings under these plans as “up to 72%,” but your exact cost will vary, based on instance type, configuration and services. There are also Reserved Instances (RIs), whose pricing is similar to the EC2 Instance Savings Plans, and in some ways might be easier to track.

For my EC2 quote of $44.83 a month, we’ve committed to a year-long agreement under the EC2 Instance Savings Plan, with no upfront payment. (We find this is the best fit for most of our customers.) You can realize additional savings if you're willing to pay upfront or even commit to 3 years.

2. Greater configuration options

Most cloud hosts – including DigitalOcean and Linode – offer a wide array of instance configuration bundles. But they can’t match the flexibility of AWS EC2, which lets you independently scale resources such as data transfer and storage.

Case in point – my typical EC2 configuration has two virtual CPUs and 40GB of storage. That's more than adequate for the performance and data requirements of a small client.

However, at both DigitalOcean and Linode, the only way to get 8GB of memory (a baseline for us) is to sign up for a tier with 4 vCPUs and 160 GBs of SSD storage. These tiers also include a cap on data transfers, as you can see in the image below.

image1.png

So, to get our baseline of 8GB memory, we’re looking at a basic tier price of $48 a month at DigitalOcean or Linode – just a few more dollars than my EC2 pricing of $44.83.

And then there are backups.

3. Additional fees

Perhaps the most surprising thing we found during our research is that DigitalOcean and Linode charge a hefty amount for backups – an absolute baseline for any hosting environment. At Linode it’s 20% for daily snapshots; at DigitalOcean it’s either 20% for weekly snapshots or 30% for daily snapshots.

With EC2, backups are priced based on your storage needs only; for our example configuration that's only a few dollars per month.

Again, those pricing calculators are your friend. My best advice is to model out four or five of your typical instance requirements and then run the numbers. You may well find the EC2 is your best bet for predictable cost management.

More ways to manage costs

That covers the rack rate for AWS vs. its main competitors. But there are other cost considerations, which for us tend to favor EC2, as well.

Scaling your usage pays off (big) over time

Many of the conversations surrounding AWS cost optimization focus on shutting down instances that aren’t actively in use. These can be development and staging servers that may not be needed for weeks at a time, or a production application or website with variable usage needs. The pricing comparison above presumes only a single production server, but you will realize additional savings for your other environments. This can add up to hundreds or thousands of dollars (or more) in additional costing and compute savings yearly.

With a tiered service, you are always paying for that server, whether it’s doing any work or not.

Optimizing your traffic costs

Critics of the pay-as-you-go model note that Internet data transfer costs can explode when you have traffic spikes. You can, however, manage this in several ways.

We have standardized on Amazon CloudFront as our content delivery network (CDN). This means that 1TB of outbound transfer per month is free, in perpetuity. That’s a sizable chunk of data we don’t need to worry about when it comes to the monthly bill. Beyond 1TB, its bandwidth costs are cheaper than using EC2 on its own. Combine that with the CloudFront Security Savings Bundle for even more savings.

Increasingly, bot traffic can cause spikes in bandwidth usage, not to mention strains on your back-end infrastructure. Implementing the AWS WAF can protect your servers and meaningfully cut down on traffic.

Let Amazon worry about integration, upgrades and testing

I’ve already noted the data transfer advantages of using Amazon’s CloudFront as our CDN. We also don’t have to worry about a CDN upgrade creating a conflict with our hosting environment – Amazon tests and rolls out changes seamlessly. This is also true of the hundreds of cloud services AWS now offers. And you may find yourself the beneficiary of an unexpected performance boost as AWS services improve.

Fewer management tools are typically better

Logging into your AWS dashboard and being able to manage services alongside resources just makes more sense – there are fewer accounts to manage and fewer points of failure. We now use AWS for transactional email and SMS messages, as well as numerous other core functions for which we once used best-of-breed providers. The transition took a while, but centralized management is a meaningful benefit of standardizing on AWS.

AWS savings do come with overhead

Now that I have spelled out why our team here at Mugo Web decided to standardize on AWS, let me add this caveat:

I would not recommend AWS to a small design firm that is looking for a turnkey hosting solution for basic WordPress sites. If the combined hosting spend for all of your clients is $100 a month, the incremental cost benefits of AWS just don’t justify the transition.

Can you save money on your monthly bill? Absolutely. In fact, some of our WordPress customers are seeing savings of 75% or more after moving off commodity, WP-tuned hosting solutions.

But, these are customized WP sites, managed by our team of professional developers. And we have built a pretty extensive internal knowledge base on how to get the most from the system. We maintain a wiki of best practices to help us optimize AWS for both cost and performance. Without that level of expertise – which we’ve added to over a few years now – managing AWS can be a little clunky.

For example, you have to configure Simple Email Service (SES) to send some fairly standard data points to the central CloudWatch auditing tool, which lacks the robust built-in dashboard you find in SendGrid or other competitive services.

Now that we know what we are doing, it’s not a big deal. But the learning curve is an investment of time, and time is money.

AWS EC2 pricing and management flexibility creates cost-savings opportunities

In this post, I hope I’ve illustrated how AWS compute service can be an affordable solution for your predictable hosting needs. The AWS on-demand pricing model can be the cheaper solution for all of your hosting environments. The flexibility of AWS configuration options, as well as its plethora of offerings, create additional savings opportunities for professionally managed applications.