Quick Links

AWS is known to have very metered pricing, but some services like RDS only charge you for the EC2 instance the service uses for computing. However, these services do upcharge, and you're getting less performance per dollar compared to a DIY solution.

The Server Is The Service

This pricing model makes sense from AWS's end. Let's take RDS as an example---a great service that makes running and managing databases easy. If AWS wanted to sell this as a traditional PaaS application, they'd have a hard time pricing it as a single monthly payment.

Instead, AWS marks up the price of the servers that the service runs on top of, placing them in special class specific to the service. For example,

        m5.large
    

 becomes

        db.m5.large
    

. This markup can be a lot. For RDS, the price for an

        m5.large
    

 instance goes up from $0.096 per hour to $0.171 per hour---an 80% increase. For the memory optimized

        r5
    

 lineup, the markup is 90%.

When you're paying twice as much per month to use a managed service, it may make more sense to do it yourself on EC2. Databases aren't that hard to set up, and while the burden does fall on you to keep up with maintenance, the price cut means your dollar is going towards more performance if you do it yourself. You can run two

        r5.2xlarge
    

 instances for the price of one

        db.r5.2xlarge
    

.

With all this being said, reasons still exist to use AWS's managed services. If you're a large company, running databases is a huge task that involves a lot of staff to do the things that AWS RDS may do for you. You have to pay those staff, so when the labor costs outweigh the core-for-core price increase, RDS becomes cheaper at a certain breakpoint.

But if you're a small business owner, you should probably consider doing it yourself, and not springing for the expensive enterprise solution.

How Much Extra Will You Pay?

Here we examine just how much markup AWS is adding to each service. Prices are calculated based on current

        us-east-1
    

 (N. Virginia) pricing.

RDS---AWS's premium database service. General purpose instances are marked up 80%, and memory optimized instances are marked up 90%. If you spring for reserved instances, even on a three-year contract, RDS is still marked up 55%.

DocumentDB---AWS's clone of MongoDB, offered as a managed service. An

        r5.2xlarge
    

 instance costs 120% more than EC2. An EC2 

        r5.4xlarge
    

 instance costs less than DocumentDB's

        2xlarge
    

 variant.

Neptune---AWS's premium graph database. It's 176% more expensive than EC2. It's worth noting that Neptune is proprietary, so you can't run it on EC2. However, open source graph databases like Neo4j are available as an alternative.

Aurora---Already pricier than RDS, Aurora is especially bad and starts out 130% more expensive than on-demand EC2. A three-year term helps a bit, with the cheapest you can run Aurora coming in at 87%. There's "Aurora Serverless," but it's really just an autoscaling configuration for Aurora. AWS does offer a truly serverless database in the form of DynamoDB, but it's hard to tell how much more expensive Dynamo is compared to EC2, as it charges based on usage alone.

Fargate---AWS's service for running managed containerized applications without worrying about servers. You simply pay $0.04048 per vCPU and $0.004445 per GB, per hour. This makes direct comparisons a bit difficult, but adding up the specs of the general purpose 16 core 64 GB 

        m5.4xlarge
    

 instance totals to $0.93216 per hour. Compared to the

        m5.4xlarge
    

's market price of $0.768 per hour, that's a 20% increase. However, Fargate applications only use as much resources as they need, so you're likely to be cutting the margins down a bit. Overall, Fargate is priced fairly well for what it's worth, and you'll see even greater savings using Fargate Spot Instances.

Elasticsearch---A service for searching through log files. It runs on EC2 at a 47% markup. Despite the AWS-y sounding name, Elasticsearch is open source and developed by Elastic NV, so you can run it yourself on EC2 for much cheaper.

SageMaker---AWS's service for running machine learning in the cloud. You usually use GPU-accelerated instances like AWS's

        p3
    

 lineup. Pricing is broken down into a few sections---for building models, it's a 40% increase over EC2. Training models is the same 40% increase. But, in both of these scenarios, you're only charged while the instance is actually being used to build or train models, and not for all the setup time associated with running it yourself. With the high hourly costs of the

        p3
    

 lineup, this offsets the price enough to make SageMaker cheaper in practice. For training models at least, when running your model in production, you'll see the same 40% increase to do it all in SageMaker.

Elastic Inference---Running ML inference is often much cheaper than running training, so you may not need a full Tesla V100 GPU to deploy your ML models. AWS offers GPU accelerators that can be attached to running EC2 instances. The cheapest

        p3
    

 GPU, the

        p3.2xlarge
    

, costs $3.06 per hour to run, and comes with 8 cores, 61 GB of RAM, and 16 TFLOPS of GPU performance. For an accurate comparison to the GPU-only EI accelerators, subtract out the vCPU and RAM costs. The similarly spec'd

        m5.4xlarge
    

 costs $0.768, so the estimated cost of a single V100 GPU is about $2.292, give or take, which is about $0.143 per TFLOP. The cheapest EI accelerator, providing a single TFLOP of performance, costs $0.120---a 16% decrease over the EC2 price. The 4 TFLOP option is even better: a 40% decrease over EC2. If you're running machine learning, EI is the way to go.

Lightsail---AWS for beginners. Designed to have no-nonsense pricing, Lightsail offers simple monthly plans and a much easier way to manage servers for the less cloud-savvy people out there. The cheapest plan comes in at just $3.50 per month for 512 MB of RAM, 2 vCPUs, and 20 GB of SSD space. A

        t2.nano
    

 instance would cost $4 per month, with the 20 GB disk costing $2 per month, making Lightsail a 41% savings at this tier.

Going up to something more reasonable yields different results. The $80 tier includes 8 vCPU, 16 GB of RAM, and 320 GB of SSD space. The similarly spec'd

        a1.2xlarge
    

 instance costs $153 to run, and the EBS volume costs $32. Another win for Lightsail at 56% cost savings. Granted, you likely see this kind of savings using either reserved instances or spot instances with auto scaling, but Lightsail requires no commitment or technical setup.